JMeter实战系列-Java Request


引言

使用JMeter做性能测试时,经常用的采样器是HttpRequest,但是对于类似SDK的api测试并不适用,我们可以用Java Request。

Maven依赖

新建一个Maven项目,必须增加以下两个依赖:

<dependency>      <groupId>org.apache.jmeter</groupId>      <artifactId>ApacheJMeter_core</artifactId>      <version>5.1</version>    </dependency>    <dependency>      <groupId>org.apache.jmeter</groupId>      <artifactId>ApacheJMeter_java</artifactId>      <version>5.1</version>    </dependency>

Maven Plugins

<build>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-compiler-plugin</artifactId>        <version>3.5.1</version>        <configuration>          <source>1.7</source>          <target>1.7</target>          <encoding>utf-8</encoding>        </configuration>      </plugin>      <plugin>        <artifactId>maven-assembly-plugin</artifactId>        <version>2.5.3</version>        <configuration>          <descriptorRefs>            <descriptorRef>jar-with-dependencies</descriptorRef>          </descriptorRefs>        </configuration>        <executions>          <execution>            <id>make-assembly</id>            <phase>package</phase>            <goals>              <goal>single</goal>            </goals>          </execution>        </executions>      </plugin>    </plugins>  </build>

采样类

//必须继承AbstractJavaSamplerClientpublic class PutObjectRequestSample extends AbstractJavaSamplerClient {    private static final Logger logger = LoggerFactory.getLogger(PutObjectRequestSample.class);    // 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中    @Override    public Arguments getDefaultParameters() {        Arguments params = new Arguments();        params.addArgument("filename", "");        return params;    }    @Override    public SampleResult runTest(JavaSamplerContext javaSamplerContext) {        SampleResult sr = new SampleResult();        sr.sampleStart();        boolean success = false;        try {            String filename = javaSamplerContext.getParameter("filename");                 String resultUUID ="";            SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMddSSSSSS" );            Date d= new Date();            String time = sdf.format(d);            String uuid = UUID.randomUUID().toString().replace("-","").substring(0,17);            resultUUID = fossService.putObject(PDF_BUCKET,time +"_"+ uuid,new FileInputStream(new File(filename)),"application/pdf");            if(StringUtils.isBlank(resultUUID)) {//设置端口为其他端口设置                sr.setSuccessful(false);                logger.error("upload srtp fail!");            } else {                sr.setSuccessful(true);                logger.info("upload success:" + resultUUID);            }        } catch (Exception e) {            sr.setSuccessful(false);            logger.error("上传出错,异常:",e);        }        finally {            sr.sampleEnd();        }        return sr;    }    /**     * main方法测试程序是否可用,打包时 注释掉     * @param args     *///    public static void main(String[] args) {//        Arguments params = new Arguments();//        params.addArgument("filename", "C:\2个已签.pdf");//        JavaSamplerContext ctx = new JavaSamplerContext(params);//        PutObjectRequestSample test = new PutObjectRequestSample();//        test.runTest(ctx);//    }}

打包

mvn clean package

生成两个jar包

*
-1.0-SNAPSHOT-jar-with-dependencies.jar放到apache-jmeter-5.1.1lib下

*-1.0-SNAPSHOT.jar 放到 apache-jmeter-5.1.1libext下

新建Java Request

JMeter实战系列-Java Request

JMeter实战系列-Java Request

来源:良测软件测试

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年8月20日
下一篇 2020年8月20日

相关推荐