【JMeter】JMeterからshellやPythonを実行する方法

【JMeter】JMeterからshellやPythonを実行する方法

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

Pythonカテゴリの最新記事