我有一个我需要使用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();
如果没有进行压缩的采样器,有没有办法避免将数据写入文件系统?我应该制作一个后处理器来删除临时文件吗?谢谢你的帮助!
答案 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}