我們在分布式執行參數化腳本時,為盡可能多的利用Slave資源,盡可能將參數文件配置為相對路徑,以更好的去適配Slave環境。與此同時,每台Slave的服務jmeter -s 啟動的路徑可能不盡相同,同一台也可能因不同的操作人員啟動時導致其 user.dir 進行了變化,從而參數文件不易管理分發。通常,我們大多采用shell腳本的形式,在固定的路徑啟動JMeter服務,並在執行測試前將相應的參數文件的分發至Slave對應的路徑。
那么,有什么方法可以更好地解決這個問題呢?
我們可通過對JMeter進行定制來解決。
通過查看 JMeter 源碼可知,設置路徑的方法在 FileServer.java 中,其對應的構件名為:ApacheJMeter_core.jar,對應的源碼路徑是 apache-jmeter-3.0\src\core\org\apache\jmeter\services\FileServer.java。
對應的兩個主要設置 base(路徑)方法如下所示:
public synchronized void setBase(File jmxBase)
public synchronized void setBasedir(String basedir) |
通過修改如上兩個方法,將 base 重新修改為自己定制的路徑(例如獲取系統 JMETER_HOME 的路徑,或者讀取配置文件配置的路徑)即可。
具體操作步驟如下所示:
1、解壓 ApacheJMeter_core.jar 至 ApacheJMeter_core 目錄 2、修改 FileServer.java,定制所需路徑 3、編譯 FileServer.java,生成字節碼文件(各構件與 FileServer.java 放在同一目錄) javac -classpath ApacheJMeter_core.jar;commons-collections-3.2.2.jar;jorphan.jar;logkit-2.0.jar FileServer.java 4、將生成的字節碼文件拷貝至目錄 ApacheJMeter_core\org\apache\jmeter\services\ 下覆蓋源文件 5、重新打包 ApacheJMeter_core.jar ApacheJMeter_core>jar -cvf ApacheJMeter_core.jar * 6、將新打包的 core 構件放到 JMETER_HOME\lib\ext\ 目錄下,覆蓋原文件即可 7、重新執行命令 jmeter -s 啟動 JMeter 服務
|
若是對重新打包依然有疑問,請參閱之前的文章 Java學習-039-源碼 jar 包的二次開發擴展實例(源碼修改),謝謝!
至此,此文順利完結,希望此文能夠給初學 JMeter 的您一份參考。
最后,非常感謝親的駐足,希望此文能對親有所幫助。熱烈歡迎親一起探討,共同進步。非常感謝! ^_^