jmeter mina2总结
- public class TestYuan extends AbstractJavaSamplerClient {
- private static String label = "CBCTest";
- private String ip;
- private String port;
- private String INSTYPE;
- private SampleResult sr;
- public void setupTest(JavaSamplerContext arg0) {
- System.out.println("setupTest");
- }
- public SampleResult runTest(JavaSamplerContext arg0) {
- ip = arg0.getParameter("ip");
- port = arg0.getParameter("port");
- INSTYPE = arg0.getParameter("INSTYPE");
- sr = new SampleResult();
- sr.setSampleLabel(label);
- try{
- sr.sampleStart(); //记录程序执行时间,以及执行结果
- //发送数据
- String s=getInsData(INSTYPE);
- System.out.println("send begin!");
- sendMsg(ip,Integer.parseInt(port),s);
- sr.setSuccessful(true);
- System.out.println("send over!");
- }catch(Throwable e){
- sr.setSuccessful(false);
- }finally{
- sr.sampleEnd();
- }
- return sr;
- }
- private String getInsData(String instype2) throws Exception {
- String retstr;
- try {
- retstr = redInput(instype2);
- } catch (Exception e) {
- System.out.println("instype:"+instype2+" file not exist!");
- throw e;
- }
- return retstr;
- }
- public void teardownTest(JavaSamplerContext arg0) {
- }
- public Arguments getDefaultParameters() {
- Arguments params = new Arguments();
- params.addArgument("ip", "99.6.150.31");
- params.addArgument("port", "8016");
- params.addArgument("INSTYPE", "1");
- return params;
- }
- private void sendMsg(String ip,int port,String data) throws Exception{
- ClientSocket clientSocket = new ClientSocket(null, ip, port);
- XmlIniPlus ini = null;
- try {
- ini = clientSocket.clientConnect("DCINSFRM","10041004",data/*, tmsListener*/);
- } catch (Exception e) {
- //支付设置为可疑 电子指令设置为失败 查支付设置为可疑
- System.out.println("Exception:"+e.getMessage());
- throw e;
- }
- System.out.println("success return!");
- }
- public static String redInput(String insType) throws Exception {
- char data[] = new char[1024]; // 建立可容纳1024个字符的数组
- FileReader fr = null;
- try {
- //fr = new FileReader("c:\\DCQRYBKP.xml");
- fr = new FileReader("c:\\DCINSFRM_"+insType+".xml");
- } catch (Exception e) {
- e.printStackTrace();
- throw e;
- } // 建立对象fr
- int num = 0;
- String str = null;
- try {
- num = fr.read(data);
- str = new String(data, 0, num); // 将字符列表转换成字符串
- fr.close();
- } catch (Exception e) {
- e.printStackTrace();
- throw e;
- }
- return str;
- }
- }
项目用mina做socket底层通信,需要做性能测试,loadrunner太难,还是jemeter小,功能全。自己实现了jemete的TCPsampler。
大致总结如下:
1.线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。可以在“测试计划->添加->线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。线程组是为模拟并发负载而设计。
2、sampler
java请求:是自己写的一个sampler
3、聚合报告
Label:取样器名称
Samples:运行过程中一共发出了多少个请求,一般来说是其值=线程数*循环次数(前提:测试按计划跑完,其中没有异常结束的线程),如5个线程,每个线程循环10次,那么对应行的Samples数是:5*10=50,总体Samples是各请求Samples之和。
Average:平均响应时间
Median:响应时间中间值
90%Line:响应时间90%线
Min:最小响应时间
Max:最大响应时间
Error%:出错率(出错的Request数/所有的request数)
Throughput:吞吐量,每秒/每分钟(具体看“/”后面的单位)处理的Request数
KB/sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
【注意】关于总体值并不是各列的累加。是以所有Samples为样本的统计值,如:总体Min=min{各个Samples的Min},总体Max=max{各个Samples的Max}