1.创建一个Java工程: idea操作步骤:file——new——project——java——next——create project from templete[java hello word]——next
2.引入依赖jar包,idea操作步骤: file——project struct——libiraries—— + —— java——选择对应的jar包,其中ApacheJMeter_core.jar(必须)、ApacheJMeter_java.jar(必须)其他的根据实际情况添加
3.打可执行jar包,idea操作步骤:file——project struct——artifacts—— + —— jar——from modules with dependences——copy to the output directory and link via manifest —— ok
build——buildAtifacts
此步骤注意:类里面不能有main方法
4、将打出来的jar包与依赖jar包放到jmeter的lib/ext下面,重新启动jmeter,新建java请求,选择刚刚你写的类如下图:
源码如下
package com.ghw.jmeter;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.*;
import java.security.MessageDigest;
import java.sql.DriverManager;
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 redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
/**
*
* @author Alex
*/
public class GetRedisValues extends AbstractJavaSamplerClient {
/* 声明全局变量 取样器结果集 和默认参数 */
private SampleResult results;
private String defautargs;
private String ipANdPort;
private String orderNo;
private String merchantId;
/* Implements JavaSamplerClient.setupTest(JavaSamplerContext) */
public void setupTest(JavaSamplerContext arg0) {
results = new SampleResult();
results.setSamplerData(toString());
results.setDataType("text");
results.setContentType("text/plain");
results.setDataEncoding("UTF-8");
results.setSuccessful(true);
results.setResponseMessageOK();
results.setResponseCodeOK();
defautargs = arg0.getParameter("defautargs", "");
if (defautargs != null && defautargs.length() > 0) {
results.setSamplerData(defautargs);
}
}
/* Implements JavaSamplerClient.teardownTest(JavaSamplerContext) */
public void teardownTest(JavaSamplerContext arg0) {
System.out.println("treaddown");
}
/* Implements JavaSamplerClient.getDefaultParameters() */
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("ipANdPort", "10.1.10.185:16379,10.1.10.185:16380,10.1.10.185:16381,10.1.10.185:16382,10.1.10.185:16383,10.1.10.185:16384"); // 定义一个参数,显示到Jmeter的参数列表中,第一个参数为参数默认的显示名称,第二个参数为默认值
params.addArgument("orderNo", "16");
params.addArgument("merchantId", "11");
return params;
}
@Override
public SampleResult runTest(JavaSamplerContext context) {
int len = 0;
results.sampleStart(); // 定义一个事务,表示这是事务的起始点,类似于LoadRunner的
// lr.start_transaction
//arg1 = context.getParameter("arg1");
ipANdPort = context.getParameter("ipANdPort");
orderNo = context.getParameter("orderNo");
merchantId = context.getParameter("merchantId");
doSign();
results.sampleEnd(); // 定义一个事务,表示这是事务的结束点,类似于LoadRunner的
// lr.end_transaction
return results;
}
public void doSign(){
//此处实现你想要实现的功能
String result = "myresult";
try {
results.setResponseCode("testStr:" + defautargs);
results.setResponseMessage("Do Sign");
results.setResponseCode("UTF-8");
results.setResponseCodeOK();
results.setResponseData(result);
} catch (Exception e) {
results.setSamplerData(e.getMessage());
results.setSuccessful(false); // 用于设置运行结果的成功或失败,如果是"false"则表示结果失败,否则则表示成功
}
}
}