繁体   English   中英

如何从JMeter JMS用户响应主体中提取和比较字节

[英]How to extract and compare bytes from JMeter JMS Subscriber Response Body

我通过JMS Publisher发送请求(文件中的字节数) (JMS Publisher屏幕快照) ,通过JMS订阅服务器读取响应(JMS Subscriber屏幕快照),并尝试通过BeanShell声明以这种方式比较请求和响应数据(BeanShell声明屏幕截图)

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;

Path path = Paths.get("${pathToTesting}/queries/randomBytes/randomBytes.dat", new String[0]);
byte[] originalArray = Files.readAllBytes(path);
byte[] changedArray = ctx.getPreviousResult().getResponseData();
System.out.println(changedArray.length);
if (Arrays.equals(originalArray, changedArray))
{
    System.out.println("same!");

} else {
    System.out.println("diff!");
     SampleResult.setSuccessful(false);
    SampleResult.setResponseMessage("Comparison failed");
     SampleResult.setResponseData("Byte arrays has changed after sending through connectors","UTF-8");
    IsSuccess=false;
}

在“查看结果树”(在JMS订阅服务器中)中,我看到了

BytesMessage中收到5000个字节

问题是如何获得实际的5000个字节(不是消息“在BytesMessage中接收到5000个字节”)并将其与我通过JMS Publisher发送的原始字节进行比较?

我需要重新配置采样器\\断言还是仅重构代码?

感谢您的帮助和相关链接

在研究JMSSampler类源代码时,我看不到如何在不修改上述类的情况下获得实际的响应内容而无需修改上述类,因此您将无法断言它。

} else if (msg instanceof BytesMessage) {
    BytesMessage bytesMessage = (BytesMessage) msg;
    buffer.append(bytesMessage.getBodyLength() + " bytes received in BytesMessage");
}

您创建了一个增强请求 ,有机会将其包含在下一个版本中,或者至少修改您的断言逻辑,以比较已发送消息的大小与已接收消息的大小。

还应注意, 从JMeter 3.1开始,建议以任何形式的脚本切换到JSR223测试元素和Groovy语言 ,因此请考虑在下一个可用机会时迁移到JSR223断言

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM