【问题标题】:How to extract and compare bytes from JMeter JMS Subscriber Response Body如何从 JMeter JMS 订阅者响应正文中提取和比较字节
【发布时间】:2018-11-02 13:54:55
【问题描述】:

我通过 JMS Publisher (JMS Publisher screenshot) 发送请求(来自文件的字节),通过 JMS Subscriber 读取响应 (JMS Subscriber screenshot) 并尝试以这种方式通过 BeanShell Assertion 比较请求和响应数据(BeanShell Assertion screenshot)

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 个字节

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

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

我会感谢任何帮助和相关链接

【问题讨论】:

    标签: java arrays jmeter jms publish-subscribe


    【解决方案1】:

    查看JMSSampler class source code 我看不到如何在不修改上述类的情况下获得实际的响应内容,因为它似乎已被丢弃,因此您将无法断言它。

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

    您创建了一个enhancement request,它有可能会包含在下一个版本中,或者至少修改您的断言逻辑以比较发送消息的大小和接收消息的大小。

    另外请注意,starting from JMeter 3.1 it is recommended to switch to JSR223 Test Elements and Groovy language 可用于任何形式的脚本,因此请考虑在下次有机会时迁移到 JSR223 Assertion

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-29
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 2013-08-04
      • 2012-05-30
      相关资源
      最近更新 更多