JMeter 擴充套件開發:自定義 JMeter 外掛的除錯

EMQX發表於2022-12-15

前言

在本系列專題之前的文章中,我們已經介紹了 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

相關文章