使用Jmeter进行Dubbo协议的测试方法

发表于:2018-3-15 10:14

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:测试帮日记    来源:简书

  jmeter脚本是作为dubbo消费者
  以下为工程主要代码:
package com.one;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.unj.dubbotest.provider.DemoService;
public class TestConsumer  extends AbstractJavaSamplerClient {
private static String label = "consumer";
private   String ID;
//dubbo服务地址
private  String URL;
private  String VERSION ;
private  String SERVICE_NAME;
private Object object;
public void init() {
// 当前应用配置
ApplicationConfig application = new ApplicationConfig();
application.setName("hehe_consumer");
// 注意:ReferenceConfig为重对象,内部封装了与注册中心的连接,以及与服务提供方的连接
// 引用远程服务
ReferenceConfig  reference = new ReferenceConfig(); // 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏
reference.setApplication(application);
reference.setId(ID);
reference.setVersion(VERSION);
//dubbo服务名
reference.setInterface(SERVICE_NAME);
//dubboip地址
reference.setUrl(URL);
// 和本地bean一样使用xxxService
object = reference.get(); // 注意:此代理对象内部封装了所有通讯细节,对象较重,请缓存复用\
}
public void setupTest(){
//定义测试初始值,setupTest只在测试开始前使用
System.out.println("setupTest");
}
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
SampleResult sr = new SampleResult(); ;
try {
//获取参数
ID = arg0.getParameter("ID");
URL = arg0.getParameter("URL");
VERSION = arg0.getParameter("VERSION");
SERVICE_NAME = arg0.getParameter("SERVICE_NAME");
//dubbo初始化
init();
//jmeter结果对象
sr.setSampleLabel(label);
sr.sampleStart();
DemoService demoService = (DemoService)object;
String hello = demoService.sayHello("tom");
sr.setResponseCode("00000");
sr.setResponseMessage(hello);
sr.setSuccessful(true);
sr.sampleEnd(); // jmeter 结束统计响应时间标记
} catch (Exception e) {
e.printStackTrace();
sr.setResponseCode("999");
sr.setResponseMessage(e.getMessage());
sr.setSuccessful(false);
}
return sr;
}
public Arguments getDefaultParameters(){
//参数定义,显示在前台,也可以不定义
Arguments params = new Arguments();
params.addArgument("ID", "");
params.addArgument("URL", "");
params.addArgument("VERSION", "");
params.addArgument("SERVICE_NAME", "");
return params;
}
public void teardownTest(JavaSamplerContext arg0){
super.teardownTest(arg0);
}
}
  第一步:右击工程,点击Export标签,选择java文件夹,点击【JAR file】
  第二步:输入JAR file 文件路径,点击【Finish】按钮
  第三步:导致的jar放置../apache-jmeter-2.13libext目录下
  jmeter使用
  第一步:打开Jmeter软件
  新建线程组
  第二步:新建一个Java请求,选择自己编写的测试类,输入参数
  第一个参数:这个参数没有特定的规定,名字取得有意义一些,比如:ID
  第二个参数:输入dubbo的服务地址:dubbo://127.0.0.1:20880(是自己项目的具体情况)
  第三个参数:输入dubbo的版本号:1.0.0
  第四个参数:输入dubbo服务名称:com.unj.dubbotest.provider.DemoService
  第三步:新建一个监听器
  第四步:Jmeter导入依赖包,(包的目录是在工程(consumer)的lib下)
  点击测试计划,右下方点击【浏览】按钮,选择工程下的lib目录,重启Jmeter
  第五步:执行Jmeter,查看结果
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号