背景

开源地址

https://gitee.com/fusu-qa/jmeter
https://github.com/fusu-qa/jmeter

新增功能

以下操作均在 Macos 操作系统

HTTP 代理服务器去重逻辑,代码改动

NewDriver.java

使这个条件不生效,OS_NAME_LC.startsWith("mac os x")

ProxyControl.java

存放一次录制中所有请求的基本信息

private List simpleHttpRequests = new ArrayList<>();

一次录制中,根据 method、url、parameter 去重

try {
SimpleHttpRequest simpleHttpRequest = new SimpleHttpRequest(sampler.getMethod(), sampler.getUrl().toString(), sampler.getArguments().toString());
if (!simpleHttpRequests.contains(simpleHttpRequest)) {
simpleHttpRequests.add(simpleHttpRequest);
sampleQueue.add(new SamplerInfo(sampler, testElements, myTarget, getPrefixHTTPSampleName(), groupingMode));
}
} catch (MalformedURLException e) {
e.printStackTrace();
}

清空集合

simpleHttpRequests.clear();

安装 chrome 浏览器插件:SwitchyOmega

指定录制域名使用代理:localhost:8888

IDEA 启动

双击 createDist

配置-Djmeter.home 为项目根目录

右键启动

NewDriver.main()

二进制启动

sh bin/jmeter.sh

打包

tar -czf jmeter-bin.tar.gz bin lib

开始录制

同一个接口请求多次

1、改造后的 jmeter 只录制一份

2、原生 jmeter 录制多份

http 录制样本

jmeter/blob/master/HTTP 代理服务器.jmx

HTTP 代理服务器调用栈:


↙↙↙阅读原文可查看相关链接,并与作者交流