三、运行用例
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)); } |