如何在JMeter中获取Java Request Sampler的响应以反映所有可用的侦听器

时间:2017-09-01 10:23:30

标签: performance jmeter

我正在使用Java Request将一个字节的流数组发送到我的Web服务端点。

我发现采样器没有响应,因为它是自定义的。

我无法使用任何侦听器,因为没有响应。

有人能告诉我如何让我的java请求采样器响应反映在监听器中。

这是因为听众是我实际观察网络服务性能的地方

2 个答案:

答案 0 :(得分:2)

假设您在String var响应中存储来自Web服务的响应,您可以这样做:

SampleResult result = new SampleResult();
result.setResponseData(response.getBytes());

/* You may also set other result properties: */
result.setResponseOK();
result.setSuccessful(true);
result.setResponseCodeOK();
result.setDataEncoding(UTF);

/* After you have set all you want, just set result to your sampler */
JMeterContextService.getContext().setPreviousResult(result);

我认为它应该可以根据需要运作。

答案 1 :(得分:1)

最小必需JavaRequest类假定从How to Use Grafana to Monitor JMeter Non-GUI Results延伸,因此它应该AbstractJavaSamplerClient返回runTest() method implementation

因此,您可以使用此SampleResult类来控制采样器的输出,最小化采样器的工作代码,该代码返回" Hello"字符串将是这样的:

package test;

import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;


public class SimpleJavaRequest extends AbstractJavaSamplerClient {
    @Override
    public SampleResult runTest(JavaSamplerContext context) {
        SampleResult result = new SampleResult();
        result.setResponseData("Hello", "UTF-8");
        return result;
    }
}

如果您编译上面的类,请将其放入SampleResult并重新启动JMeter,您将在" Classname"中看到test.SimpleJavaRequest类。下拉

JMeter Classpath

执行后,您将获得" Hello"作为回复数据:

JMeter Java Request

更多信息: