JMeter 扩展开发:自定义 JMeter 插件的调试

前言

在本系列专题之前的文章中,我们已经介绍了 JMeter 扩展开发的一些方法。但是在开发过程中还有一个需要处理的环节,是对编写的代码进行调试。一种方式是将开发的扩展与 JMeter 源码放在一起进行调试。但是这种方法的缺点是需要将整个 JMeter 的源码都放在工作空间,如果新开发的扩展只是一个小插件的话,这样做就会有点过于重量级。

本文将介绍另一种比较轻量级的方式:利用 Java 远程调试(Remote Java Application)来完成对自己开发的 JMeter 扩展的调试。

过程

我们首先回忆一下开发好的 JMeter 扩展是如何部署到 JMeter 中的:首先将扩展代码编译生成 jar 包,拷贝到 JMeter 扩展目录 $JMETER_HOME/lib/ext 下面,然后重新启动 JMeter,就会发现新加入的扩展插件。

为了支持 JMeter 的 Java 远程调试,先要修改下 JMeter 启动时的 JVM 参数。

  • 用文本编辑器打开 $JMETER_HOME/bin/jmeter.sh(如果是 Windows 操作系统的话,打开jmeter.bat);
  • 在 jmeter.sh 中定位到 JMeter 启动的位置(该位置通常在最后),并在该位置之前加入一行,在指定的端口上开启远程调试功能。下面的参考配置就是在端口 12345 上开启:
JVM_ARGS="$JVM_ARGS -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=12345"

重启 JMeter,如果配置正确的话,在 JMeter 启动的控制台上会打印出类似于下面的语句:

Listening for transport dt_socket at address: 12345

切换到开发 JMeter 扩展的 IDE 工作空间,以 Eclipse 为例,选中该扩展的项目,然后右键打开“调试配置(Debug Configurations)”,选中“Remote Java Application”,新建一个远程调试配置,并配置好 JMeter 运行所在的机器的 Host 和端口号,如下图所示,配置的是本地运行的 12345 端口

1

创建好配置后,点击上图对话框中的 Debug 按钮,然后在 Debug 透视图中能看到类似于如下截图的内容,表示已经成功通过端口连接到本地 JMeter 的 JVM 上。

2

在代码中需要调试的位置打好断点,在 JMeter 上进行相应操作后,即可在 Eclipse 中看到相关的调试内容,如下所示:

3

总结

利用 Java 提供的远程调试的功能对 JMeter 扩展插件进行调试,可以比较方便地掌控 JMeter 插件在实际运行过程中的状况,更好地协助开发人员完成扩展的开发。不过也需要注意的是,这种方式有个缺点:每次开发中改了代码后再次调试,需要将更新后的 JMeter 扩展重新编译、打包、部署,并重启 JMeter。如果调试过程中频繁改动代码的话,这种调试方式稍显麻烦。读者可根据自己的实际情况选择更合适的调试方式。

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/custom-jmeter-plug-in

EMQ(杭州映云科技有限公司)是一家开源物联网数据基础设施软件供应商,交付全球领先的开源 MQTT 消息服...

308 声望
429 粉丝
0 条评论
推荐阅读
MQTT 客户端自动重连最佳实践|构建可靠 IoT 设备连接
MQTT 是一个基于 TCP 协议的发布/订阅模型协议,它被广泛应用于物联网、传感器网络和其他低带宽、不稳定网络环境中。在这些网络环境中,网络连接往往不稳定,可能会出现网络故障、信号弱化、丢包等问题,这可能会...

EMQX

Java12的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft63阅读 11.9k

Java8的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft32阅读 24.7k评论 1

一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
前言秒杀和高并发是面试的高频考点,也是我们做电商项目必知必会的场景。欢迎大家参与我们的开源项目,提交PR,提高竞争力。早日上岸,升职加薪。知识点详解秒杀系统架构图秒杀流程图秒杀系统设计这篇文章一万多...

王中阳Go35阅读 2.6k评论 1

封面图
Java11的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft28阅读 15.5k评论 3

Java5的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft13阅读 20.5k

Java9的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft20阅读 14.6k

EMQ(杭州映云科技有限公司)是一家开源物联网数据基础设施软件供应商,交付全球领先的开源 MQTT 消息服...

308 声望
429 粉丝
宣传栏