编写首个自己的插件
JMeter 编写首个自己的插件
简介
编写Apache JMeter的首个插件是一个涉及Java编程和JMeter框架理解的过程。JMeter插件通常包括两部分:逻辑控制部分(后端处理)和GUI部分(用户界面)。逻辑控制部分负责执行实际的测试逻辑,而GUI部分则用于在JMeter界面中配置和显示插件的参数。
JMeter 组件的 GUI 约定
- Jmeter 组件 GUI 约定:Jmeter中的GUI代码严格地与测试元件代码(这⾥指逻辑控制代码)分离。
- 测试元件类:包含执行测试所需的所有逻辑,这些类定义了测试元件的行为。
- GUI类:负责在JMeter的GUI界面中表示和配置测试元件。这些类通常继承自特定的GUI基类,提供了用于在GUI中显示和编辑测试元件属性的通用机制,通过JMeter的GUI框架与用户交互,允许用户配置测试元件的各种参数。
- GUI元素继承抽象类:GUI元素通常继承自一个或多个抽象类,这些抽象类为GUI组件提供了基本的结构和行为
对应关系表
抽象类 | 继承的类 | 对应组件备注 |
---|---|---|
AbstractAssertionGui | AbstractJMeterGuiComponent | 断言 |
AbstractConfigGui | AbstractJMeterGuiComponent | 配置 |
AbstractControllerGui | AbstractJMeterGuiComponent | 控制 |
AbstractPostProcessorGui | AbstractScopedJMeterGuiComponent | 后置处理器 |
AbstractPreProcessorGui | AbstractJMeterGuiComponent | 前置处理器 |
AbstractSamplerGui | AbstractJMeterGuiComponent | 取样器 |
AbstractThreadGroupGui | AbstractJMeterGuiComponent | 线程组 |
AbstractTimerGui | AbstractJMeterGuiComponent | 定时器 |
AbstractListrnerGui | AbstractJMeterGuiComponent | 监听器 |
AbstractVisualizer | AbstractListrnerGui | 组件依赖 |
AbstractScopedJMeterGuiComponent | AbstractJMeterGuiComponent | 组件依赖 |
AbstractJMeterGuiComponent | JPanel | 组件依赖 |
AbstractFunction | Function | 组件依赖 |
JMeter Redis Data Set 解析
- 最常见的
Redis Data Element
代码结构: - 示例项目地址:https://github.com/hgwz/jmeter-plugins.git
- 简要解析:
- examples:包含Plugin的jmx教程。
- graphs-basic:包含图像相关的基础元素。
- redis:Redis连接、数据检索、数据处理、JMeter集成、配置界面(可选)、错误处理与日志等。
- Response Time 类图
- 继承自
AbstaractOverTimeVisualizen
图像抽象类,将数据加载过来并通过图形化的方式展示。
- 继承自
- AutoStop类图
- JautoStopPanel:包含初始化元素、校验、配置原件、Panel、lable等。
- AutoStopGui:定义主要事件。
- Autostop:逻辑核心类。
JMeter BackEnd Listener Client
- BackendListenerClient的主要功能是在多线程执行压测过程中,接收和处理JMeter发送的SampleResult对象(包含了测试的元数据和结果)。这些结果可以通过BackendListenerClient的实现类被发送到不同的后端系统。
方法总结
修饰符和类型 | 方法和说明 |
---|---|
SampleResult | createSampleResult(BackendListenerContext context, SampleResult result) 创建SampleResult的副本,此方法可用于自定义副本中保留的内容。 |
Arguments | getDefaultParameters() 提供此测试支持的参数列表。 |
void | handleSampleResults(List |
void | setupTest(BackendListenerContext context)执行此客户端所需的任何初始化。 |
void | teardownTest(BackendListenerContext context)在测试运行结束时进行所需的任何清理。 |
- setupTest:
void setupTest(BackendListenercontext上下文)
抛出异常
执行此客户端所需的任何初始化。通常建议进行任何初始化,例如在seupTest方法面不是runTest方法中获取参数值,以尽可能减少测试的开销。
参数:
context-要运行的上下文。这提供对初始化参数的访问。上下文是只读的
抛出:
Exception-安装失败时
- handleSampleResults
处理sampleResults,这可以通过多种方式完成:
void handleSampleResults(列表<SampleResult> sampleResults Backendristenercontext 上下文)
- 写入文件
- 写入远程服务器 参数:
- sampleResults列表SampleResult
- context-要运行的上下文。这提供对初始化参数的访问。
完成第⼀个自己的 ES BackEndListener Plugin
- 项目地址: https://github.com/hgwz/perf-es.git
项目简介
- pom.xml文件:核心依赖
ApacheJMeter_config
、es官方依赖elasticsearch-rest-client
- ElasticSearchRequestst:定义了当前版本发送数据的方式
- ElasticSearchMetric:定义了
Metric
,定义向es发送的信息 - ElasticSearchMetricSender:初始化Esclient
- ElasticSearchBackendClient:参数化,
setupTest
创建个人es的链接、handleSampResults
发送请求
总结
- 简介
- JMeter 组件的 GUI 约定
- JMeter Redis Data Set 解析
- JMeter BackEnd Listener Client
- 完成第⼀个⾃⼰的 ES BackEndListener Plugin