小白之jemter入门(三):自定义Java任务压测

针对某些特殊场景,jemter提供的功能不能满足于需求,这个时候就需要自己编写自定义的java任务进行压测

一. 自定义java任务

1.1 重apache-jmeter\lib\ext   目下copy   ApacheJMeter_core.jar和ApacheJMeter_java.jar到工程目录下

1.2 继承 AbstractJavaSamplerClient类并重写runTest,getDefaultParameters,setupTest方法

package test;

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 java.util.HashMap;
import java.util.Map;

/**
 * @Date 2019/3/19 10:48
 * @Created by LeeJunMing
 */
public class TestSocket extends AbstractJavaSamplerClient {
    private static final String HOST_NAME = "HOST";//设置GUI页面显示的变量名称
    private static final String PORT_NAME = "PORT";//设置GUI页面显示的变量名称
    private static final String FILEPATH_NAME = "FILEPATH";//设置GUI页面显示的变量名称
    String host;
    int port;
    String filePath;

    @Override
    public SampleResult runTest(JavaSamplerContext sc) {

        SampleResult sr = new SampleResult();
        sr.setSampleLabel("Socket Test");
        try {
            //压测业务逻辑代码
            System.out.println("test")
            //模拟异常
            //System.out.println(1/0);
            sr.setSuccessful(true);
            sr.setResponseData("上传成功!", null);//将数据打印到查看结果树当中
        } catch (Exception e) {
            e.printStackTrace();
            sr.setSuccessful(false);
            sr.setResponseData("上传失败!" + e.getMessage(), null);//将数据打印到查看结果树当中
        } finally {
            sr.sampleEnd();
        }
        sr.setDataType(SampleResult.TEXT);
        return sr;
    }


    @Override
    public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument(HOST_NAME, "127.0.0.1");
        params.addArgument(PORT_NAME, "15997");
        params.addArgument(FILEPATH_NAME, "D:\\test.mp4");
        return params;
    }

    @Override
    public void setupTest(JavaSamplerContext context) {
        host = context.getParameter(HOST_NAME);
        port = Integer.parseInt(context.getParameter(PORT_NAME));
        filePath = context.getParameter(FILEPATH_NAME);
        super.setupTest(context);
    }

}

1.3 把应用打包成jar包,并放到apache-jmeter\lib\ext下面

二 使用工具执行自定义任务测试

2.1 添加一个java任务

三 查看请求结果

socket上传都成功了

猜你喜欢

转载自blog.csdn.net/ming19951224/article/details/88932851