Gatling のシナリオをデバッグする
備忘録。
Scala DSL でシナリオを書けるパフォーマンステストツール Gatling を使い始めたが、シナリオをデバッグしたいことがままあるので、そのメモ。
バージョンは3.2。
例えば GET /foo
にリクエスト後、そのレスポンスボディを表示するコードは以下のようになる
scenario("Some scenario") .exec(http("GET /foo") .get("/foo") .check(bodyString.saveAs("fooRes"))) .exec((session: Session) => { println(session("fooRes")) session })
セッション
セッションはあるシナリオの1実行につき1つ付いてくる Key-Value データストア。シナリオ実行において、特定リクエストの結果を元に以降のリクエストを行うなどが主な目的だが、デバッグにも使える。
セッションオブジェクトは Map[String, Any]
のような感覚で扱える。セッションオブジェクトは immutable なので set
などで値を書き換えた場合、書き換え後のセッションが返ってくることに注意。
check
/saveAs
HTTP リクエストに対する check
は、ステータスやボディのバリデーションの他に、それらの値を後続のステップで参照するためにセッションに保存する役割がある。bodyString
や status
は saveAs
によってセッションの指定したキーに保存できる。
exec
exec
は http
などのリクエスト定義だけでなく Session => Validation[T]
な関数を渡すことができる。これによって必要に応じたデバッグコードが仕込める。
上述のサンプルの2つ目の exec
では Session
を返す無名関数を渡しているが、これは implicit conversion によって Validation[Session]
に変換される。