1、创建jmeter工具类 StressTestUtils
/**
* 压力测试工具类
* @author by xxxx
* @date 2020/6/30.
*/
@Component
public class StressTestUtils {
//获取操作系统信息
public final static String OS_NAME_LC = System.getProperty("os.name").
toLowerCase(java.util.Locale.ENGLISH);
Logger logger= LoggerFactory.getLogger(getClass());
/**
* 设置jmeter运行环境相关配置(配置文件加载/当地语言等)
*/
public void setJmeterProperties() throws FileNotFoundException {
String jmeterHomeBin=getJmeterHomeBin();
//加载本地jmeter.properties文件
JMeterUtils.loadJMeterProperties(jmeterHomeBin+File.separator+"jmeter.properties");
JMeterUtils.setJMeterHome(getJmeterHome());
JMeterUtils.initLocale();
Properties jmeterProp=JMeterUtils.getJMeterProperties();
//如果配置文件信息存在,则加载本地配置信息
String userProp=JMeterUtils.getPropDefault("user.properties","");
if(userProp.length()>0){
File userFile=JMeterUtils.findFile(userProp);
if(userFile.canRead()){
try {
FileInputStream fileInputStream=new FileInputStream(userFile);
Properties userPro=new Properties();
userPro.load(fileInputStream);
jmeterProp.putAll(userPro);
} catch (IOException e) {
e.printStackTrace();
}
}
}
//如果配置文件信息存在,则加载本地配置信息,新增
String saveserviceProp=JMeterUtils.getPropDefault("saveservice.properties","");
if(saveserviceProp.length()>0){
File saveserviceFile=JMeterUtils.findFile(saveserviceProp);
if(saveserviceFile.canRead()){
try {
FileInputStream fileInputStream=new FileInputStream(saveserviceFile);
Properties saveservicePro=new Properties();
saveservicePro.load(fileInputStream);
jmeterProp.putAll(saveservicePro);
} catch (IOException e) {
e.printStackTrace();
}
}
}
//如果配置信息存在,则加载本地system.properties
String sysProp=JMeterUtils.getPropDefault("system.properties","");
if(sysProp.length()>0){
File sysFile=JMeterUtils.findFile(sysProp);
if(sysFile.canRead()){
try {
FileInputStream fis=new FileInputStream(sysFile);
System.getProperties().load(fis);
} catch (IOException e) {
e.printStackTrace();
}
}
}
jmeterProp.put("jmeter.version",JMeterUtils.getJMeterVersion());
Properties ps = JMeterUtils.getJMeterProperties();
System.out.println(ps);
}
}
2、HashTree转jmx及jmx转HashTree实现类
import org.apache.jmeter.JMeter;
import org.apache.jmeter.assertions.ResponseAssertion;
import org.apache.jmeter.config.Argument;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.config.CSVDataSet;
import org.apache.jmeter.config.RandomVariableConfig;
import org.apache.jmeter.control.LoopController;
import org.apache.jmeter.engine.JMeterEngineException;
import org.apache.jmeter.protocol.http.control.Header;
import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy;
import org.apache.jmeter.protocol.http.util.HTTPArgument;
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.reporters.Summariser;
import org.apache.jmeter.samplers.SampleSaveConfiguration;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.TestPlan;
import org.apache.jmeter.testelement.property.*;
import org.apache.jmeter.threads.ThreadGroup;
import org.apache.jmeter.timers.ConstantTimer;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;
import org.apache.jorphan.collections.ListedHashTree;
import org.jooq.DSLContext;
import org.jooq.Record;
import org.jooq.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* HashTree与jmx互转示例
* @author by xxx
* @date 2020/7/21.
*/
public class HashTreeToJmxTest{
private final Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* 把HashTree转换为jmx文件,测试用
* @param h
* @throws IOException
*/
public void hashTree2Jmx(HashTree h) throws IOException {
StressTestUtils stressTestUtils=new StressTestUtils();
//初始化jmeter属性
stressTestUtils.setJmeterProperties();
SaveService.loadProperties();
//HashTree转换为jmx
SaveService.saveTree(h,new FileOutputStream("D:\\tools\\apache-jmeter-5.1.1\\bin\\test.jmx"));
}
/**
* 把jmx文件转换为HashTree,测试用
* @param filePath
* @return
* @throws IOException
*/
public HashTree jmx2HashTree(String filePath) throws IOException {
StressTestUtils stressTestUtils=new StressTestUtils();
//初始化jmeter属性
stressTestUtils.setJmeterProperties();
SaveService.loadProperties();
//jmx文件转换为HashTree
HashTree h=SaveService.loadTree(new File(filePath));
return h;
}
}
如觉得对你有帮助,请记得点个赞,感谢支持....