2012年8月25日土曜日

JMeterでDWR通信

ところがどっこい、そういうわけにはいかない。

JMeterでDWR通信を行う際に気をつけなければいけないことがある。
1.httpSessionId
2.scriptSessionId
3.URLパラメータ区切り文字


1.httpSessionId
2.scriptSessionId

JMeter自身が積んでるエンジンでJavascriptが実行できるが、
独自関数は実行できないため、Javascriptを実行して各idを取得することは
出来ない。
なので、これらはレスポンスから正規表現を駆使し、取得する必要がある。

3.が結構なはまりどころ。
JMeterには自身をプロキシサーバーにしたて、http通信を傍受し、テストケースを
作成する機能がある。
いかんせん便利すぎるこの機能の落とし穴。JMeterが取得したhttpリクエストは
各パラメータが半角スペースで区切られており、このままだとサーバーサイドで
パラメータを認識できず、下記のようなエラーが帰ってくる。

********************************************************************

throw 'allowScriptTagRemoting is false.';
//#DWR-REPLY
if (window.dwr) dwr.engine.remote.handleBatchException({ name:'java.lang.IllegalArgumentException', message:'Failed to find parameter: scriptSessionId' });
else if (window.parent.dwr) window.parent.dwr.engine.remote.handleBatchException({ name:'java.lang.IllegalArgumentException', message:'Failed to find parameter: scriptSessionId' });
********************************************************************

これを解決するには半角スペースを全て改行コードに置換してやる必要がある。
お勧めとしてはユーザー定義変数を作成意思、名前に【RN】、
値に【${__javaScript("\r\n",)}】と設定する。

その後、パラメータの空白部分に${RN}と設定すれば、通信パラメータが改行で区切られることになり、無事通信が走るようになる。

0 件のコメント:

コメントを投稿