たんたんめん日記

ソシャゲ関連のなんでもやさん備忘録

【jmeter】javascriptを使用する

jmeterを色々使っていると、もっと細かい制御を行いたい場合があります。

そんな時にBSF関連のモジュールから、Javascriptを使ってゴニョゴニョ出来たりします。

Javascriptの使用

  • BSF PreProcessor、BSF PostProcessor、BSF Sampler、BSF Assertion等のモジュールで使用出来る。
  • 「Script language」を「javascript」にして使用する。
  • 他の言語も使える、らしい。

f:id:dnond:20130310153708p:plain


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 );