カテゴリー「jmeter」

負荷試験をやっていると、

他人の状態を保持して、

その状態に応じて処理を行うということがある。

 

たとえば、

  • AさんがBさんに友達の申請をする
  • BさんがAさんの友達申請を許可する

という場合など。

 

これをjmeterで試験する場合、

「BさんがAさんの友達申請を許可する」という処理は、

「AさんがBさんに友達の申請をする」が完了していないと成功しない。

そのためには、BさんはAさんの状態を取得する必要がある。

 

ここで、

AさんのIDを1

BさんのIDを2

とし、

jmeterのBSF(javascript)を使うと、

 

<(PostProcesser)AさんがBさん友達申請をする>

// 自分のID
var my_id = 1;

// 他人のID
var other_id = 2;

// レスポンスを取得 して申請が成功しているなら
// Bさんの情報にAさんが申請したことを記録
var key = "appley-to-" + other_id;
var value = my_id;
props.put(key, value);

 

<(PreProcesser)BさんがAさんの友達申請を許可する>


// 自分のID
var my_id = 2;

// 他人のID
var other_id = 1;

// BさんがAさんからの申請状態を取得
var key = "appley-to-" + my_id;
while (true) {
    var value = props.get(key);
    if (value != void(0)) {
        // 申請状態がとれたら、ループを抜ける
        break;
    }
}

// 許可処理を実行

 

という具合になる。

 

注意点としては、

jmeterが起動中は、

propsの値は常に保持されるので、

不要になったら、removeしておく必要がある。

もしくは、初期化処理でremoveしてから利用するなど。

 

もう1つ注意点としては、

永久ループで待機する場合は、

スレッドを停止しても処理が停止しないので、

何回かループしたら止めるとかを入れておいた方がよい。

 

あとは、カウンタとか、forEachループなどを組み合わせることで、

もっと複雑な処理が可能になる。

 

以上です。

まあ、小ネタだね。

投稿日時:2015年05月27日 10:38   カテゴリー:jmeter   [コメントがあればどうぞ]

まだwebsocketのネタが完成しないので、

小ネタを。

 

windowsでjmeterをGUIで起動するとき、

jmeter.bat

なるものをたたく。

 

ただ、こいつをたたくと、

一緒にcommandプロンプトのコンソールがあがるので、

若干わずらわしい。

 

そのため、

jmeter.batをちょっと修正。

 

%JM_START% %JM_LAUNCH% %ARGS% %JVM_ARGS% -jar “%JMETER_BIN%ApacheJMeter.jar” %JMETER_CMD_LINE_ARGS%

start javaw %ARGS% %JVM_ARGS% -jar “%JMETER_BIN%ApacheJMeter.jar” %JMETER_CMD_LINE_ARGS%

 

これで、batを起動してもコンソールがでなくなる。

 

さらに、

Bat To Exe Converter

というソフトを使えば、batをexeファイルに変換してくれるから、

スタートにピン止めできる。

 

以上

投稿日時:2015年02月25日 16:41   カテゴリー:java, jmeter, windows   [コメントがあればどうぞ]