Jmeter JavaSamplerClient是测试此设置的正确方法吗?

Jmeter JavaSamplerClient是测试此设置的正确方法吗?,jmeter,Jmeter,我有一个java服务器,它通过网络与java客户机通信。我想做的是验证他们是否在维护状态,并收集服务器的性能统计数据。我过去曾使用JMeter测试web服务,并考虑使用它来测试此服务器 客户端非常简单,只发送和接收几种消息类型。他们登录到服务器并创建会话id。然后,他们可以使用该id执行大量事务,获取文本数据,发送文本数据,ping以验证连接是否处于活动状态,最后注销 起初,我认为应该将客户机代码包装在JavaSampler客户机中,但再次阅读javadocs后,我不确定这是一个好主意。Java

我有一个java服务器,它通过网络与java客户机通信。我想做的是验证他们是否在维护状态,并收集服务器的性能统计数据。我过去曾使用JMeter测试web服务,并考虑使用它来测试此服务器

客户端非常简单,只发送和接收几种消息类型。他们登录到服务器并创建会话id。然后,他们可以使用该id执行大量事务,获取文本数据,发送文本数据,ping以验证连接是否处于活动状态,最后注销

起初,我认为应该将客户机代码包装在JavaSampler客户机中,但再次阅读javadocs后,我不确定这是一个好主意。JavaSamplerClient看起来希望做一件事并返回相同类型的数据。但我不仅要返回性能数字,还要验证客户端的状态,并检查数据是否已损坏


在JMeter中使用JavaSamplerClient是正确的还是有更好的解决方案?

JavaSamplerClient可以完成您要实现的一切

例如,如果按如下方式创建类:

public class MySampler extends AbstractJavaSamplerClient {
@Override
public void setupTest(JavaSamplerContext context) {
    return;
}

@Override
public SampleResult runTest(JavaSamplerContext context) {
    return null;
}

@Override
public Arguments getDefaultParameters() {
    return null;
}
如果您不打算将GUI用于采样器,则可以省略
setupTest
getDefaultParameters
方法,只保留
runTest
方法

测试代码应该放在
runTest
方法中。它返回一个完全可控的实例

例如:

result.setResponseCode()
-根据任何条件设置响应代码
result.setResponseMessage()
-与响应消息相同

你要找的可能是

result.setResponseData()
-在这里,您可以使采样器返回您想要的任何内容


参考资料:

谢谢,德米特里。我想我的想法是创建,比如说,100个客户端,让它们都给服务器施加压力,然后在某个时候关闭它们并返回结果。但是看起来JavaSamplerClient要求每个模拟客户端都被一个对runTest方法的调用绑定,对吗?像一枪?有没有一种方法可以实例化JMeter中的模拟客户机,并让JavaSamplerClient告诉他们何时登录、压力N秒、然后注销,所有这些都是串联或顺序进行的?JavaSamplerClient可以用作任何其他采样器,以便他们遵守JMeter逻辑控制器,遵守爬升设置、循环,如果你需要让他们同时工作,你需要考虑使用同步计时器。如果您不希望在同一个采样器中的所有步骤(登录、重写、注销),您需要考虑通过JMIT变量进行交互,如登录取样器返回一些票据或cookie,而不是应力采样器使用此票据来验证自身。然后使用ticket进行注销。我编写了一个JavaSampler客户端,用time-to-live连接测试基本思想,这相对简单,所以这似乎是一个不错的方法。最棘手的部分是定制构建过程。我不确定将状态传递给不同的采样器是否有效,我需要在这方面做更多的实验。现在,我将重点关注beset方法,以便为SampleResult构建数据,以便在测试完成后创建一些详细的报告。您对流程的这一部分有什么见解吗?再次感谢!您应该能够从JavaSamplerClient代码访问JMeter变量和属性,所以传递状态根本不是问题。