非常规协议服务的性能测试

发表于:2016-7-22 10:58

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

 作者:丁丁de技术站    来源:51Testing软件测试网采编

分享:
  三、运行用例
  1、主界面左侧“测试计划”,右键菜单->添加->Threads(Users)->线程组;
  2、再选中刚才新增的"线程组",右键菜单->添加->Sampler->Java请求;
  3、再选中刚才新增的"Java请求",右键菜单->添加->监视器->聚合报告;
  4、选择想测试的类名,并在"线程组"选项中输入循环次数及并发线程数;
  5、点击菜单栏上"运行"->启动后便开始运行,在"聚合报告"查看结果数据。
  Tips:
  1.若在"Java请求"选项中未找到测试用例类名: 则请先确认用例是否继承了JMeter框架的基类; 其次保证用例Jar文件在 $安装目录/lib/ext/ 下; 尝试重启JMeter。
  2.如果对于java请求的读取仍然存在各种各样的问题,很大可能是java版本不一致造成的,jmeter编译时java版本大多为1.6,所以可以尝试将编译java类java版本保持和jmeter编译java版本的一致,或者拿到jmeter源码,在本地再次编译jmeter。
  在这里贴上jmeter调用dubbo协议的代码:
package com.pingan;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import org.apache.jmeter.config.Arguments;
importorg.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
importorg.apache.jmeter.samplers.SampleResult;
importcom.alibaba.dubbo.config.ApplicationConfig;
importcom.alibaba.dubbo.config.ReferenceConfig;
import com.alibaba.dubbo.config.RegistryConfig;
importcom.alibaba.dubbo.rpc.service.GenericService;
import com.paic.pafa.ac.dubbo.GenericParam;
importcom.paic.pafa.ac.dubbo.GenericResult;
public class DubboClient implementsJavaSamplerClient {
publicstatic int j = 0;
publicstatic int j1 = 0;
publicstatic int p= 0;
GenericServicegenericService = null;
//publicDubboClient() {
//System.out.println("gouzao");
//run();
//System.out.println("finish");
//
//}
publicSampleResult runTest(JavaSamplerContext jsc) {
SampleResultsampleResult = new SampleResult();
GenericParamparam = new GenericParam();
param.setParams(getParams());
try{
sampleResult.sampleStart();
GenericResultresult = (GenericResult) genericService.$invoke("anymethod",
newString[] { "com.paic.pafa.ac.dubbo.GenericParam" }, new Object[] {param });
System.out.println(result.getResult());
sampleResult.setResponseCodeOK();
sampleResult.setResponseMessageOK();
sampleResult.setSuccessful(true);
sampleResult.setResponseData(result.getResult().toString(),"UTF-8");}
catch(Exceptione){
sampleResult.setResponseCode("error");
sampleResult.setResponseMessage("error");
sampleResult.setSuccessful(false);
sampleResult.setResponseData("帅哥,貌似是你的网不通,或者服务挂了", "UTF-8");
j1++;
}
finally{
sampleResult.sampleEnd();
}
returnsampleResult;
}
publicstatic void main(String[] args) {
DubboClientclient = new DubboClient();
client.setupTest(null);
client.runTest(null);
}
publicString run() {
//DubboClientclient = new DubboClient();
setupTest(null);
returnrunTest(null).toString();
}
publicstatic void main1(String[] args) {
intcount=90;
inti=0;
for(;i
newThread(new Runnable() {
publicvoid run() { //新启动一个线程,避免时间的浪费
for(;;){
DubboClientclient = new DubboClient();
client.setupTest(null);
client.runTest(null);
client.j++;
System.out.println(j+"error"+j1);
}
}
}).start();}
}
publicArguments getDefaultParameters() {
//TODO Auto-generated method stub
returnnull;
}
publicvoid setupTest(JavaSamplerContext arg0) {
try{
ReferenceConfigreference = new ReferenceConfig();
reference.setUrl("dubbo://10.21.99.79:20882/esb-proxy.service.B10013_000000");
reference.setInterface("esb-proxy.service.B10013_000000");
reference.setGeneric(true);
reference.setApplication(newApplicationConfig("ff-test"));
reference.setTimeout(10000);
reference.setRegistry(newRegistryConfig("zookeeper://10.21.66.48:2181"));
genericService = reference.get();}
catch(Exceptione){
System.out.print("error\n\n\n");
}
}
publicvoid teardownTest(JavaSamplerContext arg0) {
//TODO Auto-generated method stub
}
publicMap getParams() {
Map params = new HashMap();
Map esbRequest = new HashMap();
Map header = new HashMap();
Map content = new HashMap();
esbRequest.put("content",content);
esbRequest.put("header",header);
StringsendSerialNo = this.getSeqNo();
esbRequest.put("sendSerialNo",sendSerialNo);
esbRequest.put("idType","1");
esbRequest.put("idNo","1");
params.put("esbRequest",esbRequest);
params.put("timeOutMs","30000");
params.put("systemId","958537");
params.put("requestNo",sendSerialNo);
returnparams;
}
publicString getSeqNo() {
returnString.valueOf(System.currentTimeMillis() + System.nanoTime() + newRandom().nextInt(2));
}
22/2<12
2023测试行业从业人员调查问卷已开启,千元大奖正在等你~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号