Jmeter中HashTree转jmx及jmx转HashTree实现示例

32 篇文章 0 订阅

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;
    }
    
}

如觉得对你有帮助,请记得点个赞,感谢支持....

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JMeter 是一个功能强大的开源性能测试工具,用于模拟多个用户同时访问 Web 应用程序或 API 来评估其性能、稳定性和可靠性。要使用 JMeter 进行负载压力测试并生成 JMX(Apache JMeter 运行时配置文件)文件,你可以按照以下步骤操作: 1. **安装和启动 JMeter**: 首先,你需要从 Apache JMeter 的官方网站下载并安装 JMeter。安装完成后,打开 JMeter。 2. **创建测试计划(Test Plan)**: 在 JMeter 工作界面,从“文件”菜单选择“新建”创建一个新的测试计划(Test Plan)。这是测试的基础结构,包含了线程组、采样器、断言、监听器等元素。 3. **添加采样器**: 在测试计划添加 HTTP Request 或其他类型的采样器,例如 FTP、数据库等,用于模拟实际的请求。配置相应的 URL、参数、认证信息等。 4. **配置负载参数**: 使用线程组(Thread Group)定义并发用户数、循环次数等压力测试参数。这决定了模拟多少个用户同时执行请求。 5. **设置定时器**: 可能需要添加定时器(如恒定定时器)来控制请求之间的延迟,模仿用户真实行为。 6. **添加监听器**: 监听器(如查看结果树、聚合报告、响应时间显示器等)帮助你监控测试过程的数据和性能指标。 7. **保存为 JMX 文件**: 在测试计划上右键,选择“Save As…” -> “Config File”(或者“Run Time Config File”),然后指定一个文件名和路径,保存为 JMX 格式,以便后续重复运行或分享。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值