JMeter:发送gzipped json?

时间:2014-11-07 16:03:48

标签: jmeter beanshell

我有一个我需要使用JMeter测试的Web服务,但规范需要压缩的json。我需要从CSV文件中的数据创建json。我已经能够使用beanshell预处理器和CSV数据集配置来解决这个问题。但现在我需要一种方法来gzip数据并将其发送到服务器。是否有一些采样器可以做到这一点?

Hackish Solution

我找到的唯一可行解决方案是从beanshell脚本压缩数据然后让JMeter发送文件,但这对我来说似乎有点讨厌。

import com.eclipsesource.json.*;
import java.io.FileOutputStream;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.zip.GZIPOutputStream;

jsonObject = new JsonObject();
// populate json data here

GZIPOutputStream zip = new GZIPOutputStream(new FileOutputStream("c:\\json.gz"));
writer = new BufferedWriter(new OutputStreamWriter(zip, "UTF-8"));
jsonObject.writeTo(writer);
writer.close();

如果没有进行压缩的采样器,有没有办法避免将数据写入文件系统?我应该制作一个后处理器来删除临时文件吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

我认识的采样器都不会自动拉链。

您可以使用ByteArrayOutputStream代替FileOutputStream,然后将toString用于jmeter变量或属性,这样您就可以使用变量名称在采样器中使用它。

import com.eclipsesource.json.*;
import java.io.ByteArrayOutputStream;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.zip.GZIPOutputStream;

jsonObject = new JsonObject();
// populate json data here

GZIPOutputStream zip = new GZIPOutputStream(new ByteArrayOutputStream());
writer = new BufferedWriter(new OutputStreamWriter(zip, "UTF-8"));
jsonObject.writeTo(writer);
writer.close();

vars.put("ZIPFILE", zip.toString());

然后在您的http请求的Body Data部分中,引用变量${ZIPFILE}