jmeter发送java请求

一、创建一个java工程

  • 1、新建一个java Project

 File->new->Java Project

 jmeter发送java请求

 

 

 

  •  2、在Eclipse下导入$\jmeter\lib\ext\下的所有jar包;

导入额外的5个jar包,在 $\jmeter\lib\ 下

还有被测的接口的jar包也要导入

jmeter发送java请求

 

 

 jmeter发送java请求

jmeter发送java请求

 

 

 

  • 创建class,将新建的类extends AbstractJavaSamplerClient 类

   继承"getDefaultParameters","setupTest","runTest"和"teardownTest"四个方法:

public Arguments getDefaultParameters();设置可用参数及的默认值;

public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;

public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;

public void teardownTest(JavaSamplerContext arg0):测试结束时调用;

private String getResponseData(ApplyResult rs):将返回进行json格式化

 

二、继承类AbstractJavaSamplerClient(代码示例为接口getApplyProcess

  • 1、getDefaultParameters: 获取默认参数以及参数值

(这里只有一个参数 certi_code,接口getApplyProcess 只有一个入参,如果多个入参,应全部都添加上)

      jmeter发送java请求

 

 

  • 2、setupTest: 测试方法运行之前的工作(初始化记录结果;从参数列表中获取对应变)

    (如果是有多个入参,也应都添加)

   jmeter发送java请求

  • 3、runTest:运行测试方法(初始化记录结果,设定开始/结束记录时间,测试调用Service的主方法,测试成功与否的判断方法)

(1)配置获取:(setUrl提供的url,所在的系统地址而定;setInterface是接口的 实现类名)

 jmeter发送java请求

 

 

(2)请求、返回记录:(setSamplerData为请求数据,getResponseData为返回数据)

 jmeter发送java请求

 

  • 4、teardownTest 固定写法

 jmeter发送java请求

 

  • 5、返回进行json的格式化

   jmeter发送java请求

 

 

 

导出jar

  • 右键点击项目:Export… 直接导出为 jar包就可以

 jmeter发送java请求

  • export后的jar包放在$/jmeter/lib/ext/下($/jmeter为jmeter的安装路径)

 

四、运行java请求

1、在$\jmeter\bin\下执行jmeter.bat

2、右键点击“测试计划”添加一个Thread Group(线程组)

3、右键点击线程组,添加一个Java Request费用状态查询

jmeter发送java请求

 

 

 jmeter发送java请求

 

 

五、接口getApplyProcess示例java文件

 java文件放在了“文件”页签

 

备注:JsonFormatTool.java为json格式转换代码

 

 

package salesLoad;

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.alibaba.dubbo.config.utils.ReferenceConfigCache;
import com.google.gson.Gson;
import com.ulic.agent.ws.enter.FreshManEnterInterface;
import com.ulic.agent.ws.enter.model.ApplyResult;
import com.ulic.im.client.vo.AppInfo;


public class GetApplyProcess extends AbstractJavaSamplerClient{

    
    private FreshManEnterInterface enterService;
    private ReferenceConfig<FreshManEnterInterface> reference;
    private ReferenceConfigCache cache;
    
    private String certiCode;
    
    // 这个方法是用来自定义java方法入参的。  
    // params.addArgument("num1","");表示入参名字叫num1,默认值为空。  
    public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument("certi_code", "");
        return params;
    }
    
    //每个线程测试前执行一次,做一些初始化工作;  
    public void setupTest(JavaSamplerContext arg0) {
        certiCode = arg0.getParameter("certi_code");
    }

    @Override
    public SampleResult runTest(JavaSamplerContext arg0) {
        setupTest(arg0);
        reference = new ReferenceConfig<FreshManEnterInterface>();
        reference.setApplication(new ApplicationConfig("letmetest"));
        reference.setTimeout(300000);
        reference.setUrl("dubbo://10.10.1.11:20881");
        reference.setInterface("com.mims.agent.ws.enter.FreshManEnterInterface");
        cache = ReferenceConfigCache.getCache();
        enterService = cache.get(reference);
        
        AppInfo app = new AppInfo();
        app.setAppCode("MAP");
        app.setAppIP("10.51.4.9");
        ApplyResult rs = null;
        
        SampleResult sr = new SampleResult(); 
        try {  
            sr.sampleStart();
            sr.setSamplerData("请求参数certi_code:"+certiCode);
            rs = enterService.getApplyProcess(app, certiCode);
            
            sr.setResponseData(getResponseData(rs), null);
            sr.setDataType(SampleResult.TEXT);
            sr.setResponseCode("0000");
            
            Thread.sleep(10);
            sr.setSuccessful(true);
        }catch(Exception e){
            e.printStackTrace();
            sr.setResponseCode("0001");
            sr.setSuccessful(false);
        }finally{
            sr.sampleEnd();
        }
        return sr;
    }
    
    private String getResponseData(ApplyResult rs) {
        Gson gson = new Gson();
        String s = gson.toJson(rs, ApplyResult.class);
        JsonFormatTool jft = new JsonFormatTool();        
        return jft.formatJson(s);
    }
    
    public void teardownTest(JavaSamplerContext arg0){  
        super.teardownTest(arg0);  
    }
}

 

  1 package com.ulic.loadtest.esales;
  2 
  3 import java.math.BigDecimal;
  4 
  5 import org.apache.jmeter.config.Arguments;
  6 import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
  7 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
  8 import org.apache.jmeter.samplers.SampleResult;
  9 
 10 import com.alibaba.dubbo.config.ApplicationConfig;
 11 import com.alibaba.dubbo.config.ReferenceConfig;
 12 import com.alibaba.dubbo.config.utils.ReferenceConfigCache;
 13 import com.ulic.esales.ws.EsalesServiceInterface;
 14 import com.ulic.esales.ws.vo.AoPolicyProductVO;
 15 import com.ulic.im.client.vo.AppInfo;
 16 import com.ulic.loadtest.util.JsonFormatTool;
 17 
 18 public class CheckAoProductRule extends AbstractJavaSamplerClient {
 19     
 20     private EsalesServiceInterface esalesService;
 21     private ReferenceConfig<EsalesServiceInterface> reference;
 22     private ReferenceConfigCache cache;
 23     
 24     private AoPolicyProductVO vo;
 25     
 26     // 这个方法是用来自定义java方法入参的。  
 27     // params.addArgument("num1","");表示入参名字叫num1,默认值为空。  
 28     public Arguments getDefaultParameters() {
 29         Arguments params = new Arguments();
 30         params.addArgument("item_id", "0");
 31         params.addArgument("policy_id", "0");
 32         params.addArgument("product_id", "0");
 33         params.addArgument("product_num", "");
 34         params.addArgument("master_id", "0");
 35         params.addArgument("main_rider", "");
 36         params.addArgument("amount", "0");
 37         params.addArgument("period_prem", "0");
 38         params.addArgument("unit", "0");
 39         params.addArgument("relation_1", "0");
 40         params.addArgument("insurant_1", "0");
 41         params.addArgument("age_1", "0");
 42         params.addArgument("bonus_choice", "0");
 43         params.addArgument("charge_period", "");
 44         params.addArgument("charge_year", "0");
 45         params.addArgument("coverage_period", "");
 46         params.addArgument("coverage_year", "0");
 47         params.addArgument("pay_year", "0");
 48         params.addArgument("insert_id", "0");
 49         return params;
 50     }
 51 
 52     @Override
 53     public SampleResult runTest(JavaSamplerContext arg0) {
 54         vo = new AoPolicyProductVO();
 55         vo.setItemId(Long.parseLong(arg0.getParameter("item_id")));
 56         vo.setPolicyId(Long.parseLong(arg0.getParameter("policy_id")));
 57         vo.setProductId(Long.parseLong(arg0.getParameter("product_id")));
 58         vo.setProductNum(arg0.getParameter("product_num"));
 59         vo.setMasterId(Long.parseLong(arg0.getParameter("master_id")));
 60         vo.setMainRider(arg0.getParameter("main_rider"));
 61         vo.setAmount(new BigDecimal(Float.parseFloat(arg0.getParameter("amount"))));
 62         vo.setPeriodPrem(new BigDecimal(Float.parseFloat(arg0.getParameter("period_prem"))));
 63         vo.setUnit(new BigDecimal(arg0.getParameter("unit")));
 64         vo.setRelation1(Long.parseLong(arg0.getParameter("relation_1")));
 65         vo.setInsurant1(Long.parseLong(arg0.getParameter("insurant_1")));
 66         vo.setAge1(Long.parseLong(arg0.getParameter("age_1")));
 67         vo.setBonusChoice(Long.parseLong(arg0.getParameter("bonus_choice")));
 68         vo.setChargePeriod(arg0.getParameter("charge_period"));
 69         vo.setChargeYear(Long.parseLong(arg0.getParameter("charge_year")));
 70         vo.setCoveragePeriod(arg0.getParameter("coverage_period"));
 71         vo.setCoverageYear(Long.parseLong(arg0.getParameter("coverage_year")));
 72         vo.setPayYear(Long.parseLong(arg0.getParameter("pay_year")));
 73         vo.setInsertId(Long.parseLong(arg0.getParameter("insert_id")));
 74         
 75         reference = new ReferenceConfig<EsalesServiceInterface>();
 76         reference.setApplication(new ApplicationConfig("letmetest"));
 77         reference.setTimeout(300000);
 78         reference.setUrl("dubbo://10.181.3.16:21889");
 79         //reference.setRegistry(registry);
 80         reference.setInterface("com.ulic.esales.ws.EsalesServiceInterface");
 81         cache = ReferenceConfigCache.getCache();
 82         esalesService = cache.get(reference);
 83         //moaQueryService = reference.get();
 84         
 85         AppInfo app = new AppInfo();
 86         app.setAppCode("ESALES");
 87         app.setAppIP("10.51.40.4");
 88         String rs = null;
 89         
 90         SampleResult sr = new SampleResult(); 
 91         try {  
 92             sr.sampleStart();
 93             
 94             rs = esalesService.checkAoProductRule(app, vo);
 95             
 96             sr.setResponseData(getResponseData(rs), null);
 97             sr.setDataType(SampleResult.TEXT);
 98             sr.setResponseCode("0000");
 99             
100             Thread.sleep(10);
101             sr.setSuccessful(true);
102         }catch(Exception e){
103             e.printStackTrace();
104             sr.setResponseCode("0001");
105             sr.setSuccessful(false);
106         }finally{
107             sr.sampleEnd();
108         }
109         return sr;
110     }
111     
112     private String getResponseData(String rs) {
113         JsonFormatTool jft = new JsonFormatTool();
114         
115         return jft.formatJson(rs);
116     }
117     
118     //每个线程测试前执行一次,做一些初始化工作;  
119     public void setupTest(JavaSamplerContext arg0) {
120         super.setupTest(arg0);
121     }
122     
123     //每个线程测试结束后执行一次
124     public void teardownTest(JavaSamplerContext arg0){  
125         super.teardownTest(arg0);  
126     }
127 
128 }

 

上一篇:Jmeter 连接Mysql 数据库


下一篇:jmeter经验总结