• jmeter之 java请求


    在我所接触的jmeter脚本编写中,接触到的的最多的取样器就是http取样器,但是如果用来测试rpc等就不合适了,看网上的资料发现了java请求的魅力,就总结下java请求的编写吧

    1.导入包到工程,将jmeterlib下的所有jar包,尤其是ext中的ApacheJMeter_core.jar,ApacheJMeter_java.jar都是必须的,这是保险起见

     2.编写class文件

    package wuchun;


    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;

     //这四个包就在我们刚才导入的jmeter jar包中

    public class Test extends AbstractJavaSamplerClient {

    private static long start = 0;

    private static long end = 0;

    private String id = "0";

    @Override

    public Arguments getDefaultParameters() {

    //可选,定义可用参数及默认值

    Arguments args = new Arguments();

    args.addArgument("id", "123456789"); // 添加默认参数及对应值 //参数名称:id 参数值:123456789

    return args;

    }


    @Override

    public SampleResult runTest(JavaSamplerContext context) {
    // 必选,定义线程运行的请求
    String id = context.getParameter("id");

    SampleResult sr = new SampleResult(); // 为避免多线程问题,设置sr为局部变量

    sr.setSampleLabel("request1"); // 设置采样标签,对应GUI 聚合报告里的Label值

    try {

    //Start

    sr.sampleStart(); // 开始统计响应时间,取样器开始运行

    // TODO

    System.out.println(id);


    sr.setSamplerData("id="+id);//设置请求的数据,在查看结果树中可以看到

    sr.setResponseData("id="+id, "utf-8"); //设置响应的数据第一个参数 设置JMeter GUI "查看结果树" 请求对应的"响应数据" // 执行压测前 建议注释掉,第二个参数 为编码, 设置JMeter GUI "取样器结果" DataEncoding: utf-8 // 第二个参数为 "", 则表示默认为 GBK编码

    sr.setDataType(SampleResult.TEXT); // 设置JMeter GUI "取样器结果" Data type ("text"|"bin"|""):text

    sr.setResponseMessageOK(); // 设置JMeter GUI "取样器结果" Response message: OK

    sr.setResponseCodeOK(); // 设置JMeter GUI "取样器结果" Response code: 200

    } catch (Exception e) {

    sr.setSuccessful(false);//设置请求失败

    sr.setResponseMessage("server error"); // 设置JMeter GUI "取样器结果" Response message: server error

    sr.setResponseCode("500"); // 设置JMeter GUI "取样器结果" Response code: 500

    e.printStackTrace();

    } finally {

    // End

    sr.sampleEnd();//设置取样器结束运行

    }

    return sr;

    }


    @Override

    public void setupTest(JavaSamplerContext context) {

    // 开始时间
    System.out.println("setup....");
    start = System.currentTimeMillis();

    }

    @Override

    public void teardownTest( JavaSamplerContext context){

    // 结束时间
    System.out.println("teardown....");
    end = System.currentTimeMillis();

    // 总体耗时

    System.err.println("cost time:" + (end - start) / 1000);

    }

    }其中重要的就是这几个方法

    public Arguments getDefaultParameters();可选,定义可用参数及默认值;  
              public void setupTest(JavaSamplerContext arg0):可选,测试前执行,做一些初始化工作;  
              public SampleResult runTest(JavaSamplerContext arg0);必选,实现自定义请求;  
              public void teardownTest(JavaSamplerContext arg0):可选,测试结束时调用;

     3.将上述打jar包,并放入libext中

    4.重启jmeter,添加java请求,设置如下

     

    5.运行,结果如下

     

     

     

    总结:java请求更为灵活,可以自定义请求的内容,其中重要的就是四个方法,请求和返回可以自定义,参数也可以结合jmeter进行参数化

  • 相关阅读:
    Oracle 11g 在本机上安装PLSQL DEveloper
    Oracle 11g 启动与关闭服务的脚本
    Oracle 11g 安装过程图解
    linux下vi命令大全
    accuracy、precision、recall、true positives, true negatives, false positives 和 false negatives
    // 40、用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列, // 如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连.
    阿里巴巴第二道(研发类) 笔试题1,原题大致描述有一大批数据,百万级别的。数据项内容是:用户ID、科
    621. Task Scheduler
    625. Minimum Factorization
    623. Add One Row to Tree
  • 原文地址:https://www.cnblogs.com/diwangguilai/p/12050787.html
Copyright © 2020-2023  润新知