JMeter 测试 Dubbo 接口
相信读者应该已经对 Dubbo 项目的背景有了深入的了解,那么我们想用 JMeter 去测试 Dubbo 项目,无非是做两件事。
- 开发 JMeterSampler 测试类;
- 将 JMeter 与 Dubbo 服务的项目进行整合。
下面我们一一进行介绍。
开发 JMeterSampler
- 将 apache-jmeter-3.1\lib\ext 目录下的 ApacheJMetercore.jar 和 ApacheJMeterjava.jar 放置到本地的 Maven 仓库中(放置方法参考上节中放置接口工程 jar 的方法);
- 在前面的消费者工程 dubbo-consumer 的 pom.xml 文件中引入 ApacheJMetercore.jar 和 ApacheJMeterjava.jar;即在 pom.xml 文件中添加以下依赖信息:
<dependency>
<groupId>com.jmeter.core</groupId>
<artifactId>jmeterCore</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>com.jmeter.java</groupId>
<artifactId>jmeterJava</artifactId>
<version>0.0.1</version>
</dependency>

- 在 src/main/java 的包 com.consumer.demo.dubbo_consumer 下新建 JmeterSampler.java,编写测试代码如下:
public class JmeterSampler implements JavaSamplerClient{
private String resultData;
public Arguments getDefaultParameters() {
Arguments parms = new Arguments();
//这行代码没有实际意义
parms.addArgument("dubbo", "dubboTest");
return parms;
}
public void setupTest(JavaSamplerContext context) {
System.out.println("dubbo消费者调用开始");
}
public SampleResult runTest(JavaSamplerContext contex) {
SampleResult sr = new SampleResult();
try{
sr.sampleStart();//事务开始
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationConsumer.xml");
context.start();
DubboService demoService = (DubboService)context.getBean("dubboservice");
demoService.print();
if (resultData != null && resultData.length() > 0) {
sr.setResponseData("结果是:"+resultData, null);
sr.setDataType(SampleResult.TEXT);
sr.setSuccessful(true);
}} catch(Throwable e) {
sr.setSuccessful(false);
e.printStackTrace();
} finally {
sr.sampleEnd();//事务结束
}
return sr;
}
public void teardownTest(JavaSamplerContext arg0) {
System.out.println("dubbo消费者调用结束");
}
}
将 JMeter 与 Dubbo 服务的项目进行整合
(1)cmd 到 dubbo-consumer 所在路径下执行 mvn dependency:copy-dependencies 命令获取此工程依赖的所有 jar 包:
、
执行成功在 dubbo-consumer 工程的 target 目录下新增一个 dependency 目录来存储此工程依赖的所有jar包:

最后将 dependency 目录下的所有 jar 包全部导入到 Jmeter/lib 目录下。
(2)选中 dubbo-consumer | 右键 | Run as | 再次执行 maven install 命令,重新生成 dubbo-provider-0.0.1-SNAPSHOT.jar:

将此 jar 包放置在 Jmeter/lib/ext 目录下即可。
(3)启动本地的 Zookpeer,启动本地的 Dubbo服务。
(4)打开 JMeter,测试计划 | 添加线程组 | 添加 Sampler、Java 请求,选择类名称:

(5)运行 JMeter 此时观察 Eclipse 的控制台,打印出“我是服务提供者”,说明调用成功:

剩下的测试思路就和前面一样了,建立测试场景,进行测试分析即可。
总结
天行健,男儿当自强不息

浙公网安备 33010602011771号