JMeterからHTTP RequestやJDBCを実行するのではなく、ファイルを実行させる方法です。
これにより間接的にJMeterからターミナルのコマンドを実行することができます。
shellの実行
実行対象のshell
execShell.sh
echo 'Hello world shell!!';
echo $JMETER_VALUE;
echo $GLOBAL_VALUE;
文字列と環境変数の出力をします。
環境変数はJmeterから埋め込んでみます。
Jmeter設定
OS Process Samplerを使用します。
上から設定を説明していきます。
Command to Execute
Command
shellの実行に必要なbashを指定します。絶対パス。
working directory
shellの存在するディレクトリを指定します。絶対パス。
今回はJmeter上でROOT_PATHというパラメータを用意して設定しています。
後述します。
Command Parameters
bashで実行する時のオプションや実行ファイルを設定します。
Environment Variables
Jmeter上でshellに与えたいパラメータを、環境変数という形で渡すことができます。
- Name
環境変数名。 - Value
環境変数に設定される値。
Standerd streams
Standerd input/output/error
いわゆる標準出力です。shellの実行結果はここに出力されます。
絶対パスでファイルを指定します。
予め出力先のファイルが作成されていないとJmeterで実行した時にエラーが発生します。
Return Code Configration
Check Return Code Expected Return Code
shell実行後のexitコードを検証します。
Timeout Configration
Timeout
タイムアウト時間を設定します。
実行結果
設定したログに出力されます。
resultShell.log
Hello world shell!!
jmeterからshellを起動した
Hello Grobal!!
Jmeterで設定したパラメータも出力することができました。
Pythonの実行
実行対象のPython
execPython.py
import os
if __name__ == '__main__':
print("Hello world python!!")
print(os.environ['JMETER_VALUE'])
print(os.environ['GLOBAL_VALUE'])
shellの時と同じように文字列と環境変数の出力をします。
環境変数はJmeterから埋め込みます。
Jmeter設定
基本的にはshellの時と変わりません。
commandに実行するpythonのbinを指定します。
実行結果
resultPython.log
Hello world python!!
jmeterからpythonを起動した
Hello Grobal!!
Jmeterで設定したパラメータを出力することができました。
環境変数で埋め込んだJMeter設定
JMeter上でのパラメータはUserDefinedVariablesで設定し、
ThreadGroup間で共通して使えるようにしました。
参考
How to execute Linux command or shell script from APACHE JMETER
コメントを書く