zoukankan      html  css  js  c++  java
  • jmeter发送java请求

    一、创建一个java工程

    • 1、新建一个java Project

     File->new->Java Project

     

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

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

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

     

    • 创建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 只有一个入参,如果多个入参,应全部都添加上)

          

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

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

       

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

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

     

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

     

     

    • 4、teardownTest 固定写法

     

     

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

       

    导出jar

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

     

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

    四、运行java请求

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

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

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

     

    五、接口getApplyProcess示例java文件

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

     

    备注:JsonFormatTool.javajson格式转换代码

     

     

    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 }
  • 相关阅读:
    79.Word Search
    78.Subsets
    77.Combinations
    75.Sort Colors
    74.Search a 2D Matrix
    73.Set Matrix Zeroes
    71.Simplify Path
    64.Minimum Path Sum
    63.Unique Paths II
    Docker 拉取 oracle 11g镜像配置
  • 原文地址:https://www.cnblogs.com/xiaofeng91/p/15714497.html
Copyright © 2011-2022 走看看