【jmeter】javascriptを使用する
jmeterを色々使っていると、もっと細かい制御を行いたい場合があります。
そんな時にBSF関連のモジュールから、Javascriptを使ってゴニョゴニョ出来たりします。
Javascriptの使用
- BSF PreProcessor、BSF PostProcessor、BSF Sampler、BSF Assertion等のモジュールで使用出来る。
- 「Script language」を「javascript」にして使用する。
- 他の言語も使える、らしい。
HTTPリクエスト等のサンプル結果の取得
sampleResult.getResponseDataAsString();
jmeter変数からの取得
vars.get('hoge');
jmeter変数への代入
vars.put('hoge', fuga );
参考: http://jmeter.apache.org//api/org/apache/jmeter/threads/JMeterVariables.html
デバッグ
log.info('hugahuga');
jmeterの上部メニュー「オプション」>「Log Viewer」を選択するとログを表示できる。
この中にデバッグログを表示出来る。
サンプル・コード
- BSF PostProcessorでHTTPリクエストの結果処理を行う。
- リクエストの結果はjsonを期待している。
- ${person_id}変数から、target_person_idに代入する
- log.infoで値を確認
- json内のデータを検索し、target_member_id変数に代入している
//HTTPリクエストの結果を受け取る var body = sampleResult.getResponseDataAsString(); //JSONのパース var json; json = eval("("+body+")"); //${pid}変数の受け取り var target_pid = vars.get('pid'); //target_pidをデバッグログで表示してみる log.info(target_pid ); //JSONデータの中から配列を抜き出す var target_mid ; var member_data = json.member_list_array.member_data; for( var i = 0; i < member_data.length; i++ ){ if ( member_data[i].pid == target_pid ){ target_mid = member_data[i].mid; break; } } //target_midをjmeter変数として登録 vars.put('target_mid', target_mid );