以下程序读取XML文件并压缩为gzip。
我在这里有几个问题。
我可以直接在JMeter BeanShell预处理器中使用以下程序吗?
我想使用输出变量作为JSON请求的输入。在Jmeter中有可能吗?
屏幕截图和细节将不胜感激。
public static void main(String [] args)抛出异常{
String line = null;
String sb = "";
File f=new File("D:\\RetailTransactionLog_9419_001_590.xml");
FileReader fr=new FileReader(f);
BufferedReader br=new BufferedReader(fr);
while((line=br.readLine())!=null)
{
sb= sb + line;
}
br.close();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzos = new GZIPOutputStream(baos);
gzos.write(sb.getBytes("UTF-8"));
gzos.close();
String base64CompressedString = Base64.getEncoder().encodeToString(baos.toByteArray());
System.out.println(base64CompressedString);
答案 0 :(得分:1)
当然,您可以将您的Java代码直接放在JMeter BeanShell预处理器中等等!
将预处理器组件作为JSON请求的子代插入(如附件中的脚本示例所示)。
您不需要导入java.io包,如BufferedReader,ByteArrayOutputStream,File,FileReader,IOException,Base64 ......
还删除主要签名public static void main(String [] args)...
您只需导入“java.util.zip.GZIPOutputStream”(A)
我还用log.info(base64CompressedString)替换你的System.out.println(base64CompressedString),只是为了在jmeter控制台中可视化你的输出(B)......
最后添加代码(C)以在您选择的变量中引用您的结果(在我的示例中为“a”)。
您必须在json请求中使用$ {a}调用变量,就像在我的JMX脚本中一样:
解压缩附件http://uplea.com/dl/9F734367B43FB93:
/ bin下的“ReadAndCompressMyFile.jmx”并在C:下放置“test.xml”或更改代码中的路径。我使用了虚拟采样器而不是你的json请求。
运行我的脚本后,您可以在查看结果树(请求选项卡)和控制台中看到“a”的值(对应于base64CompressedString)。
PS:要使用“虚拟采样器”运行我的脚本,需要在jmeter目录的/ lib / ext下添加jmeter-plugins-dummy-0.1.jar。
希望能帮到你......
答案 1 :(得分:0)
GZIP压缩是相当重的"操作,如果您将拥有大量虚拟用户 - 它可能会成为瓶颈,因此请考虑使用其他方法:
main
方法)