概要
Gatlingで負荷試験をする際、URLに複数のクエリパラメータをつけ、値をランダムで回したかった。
feederを複数作ればいいだけだったのでメモ。
(2時間くらいググったけどなかなかなかった)
やりたいこと
https://example.com/?key_A=value_A&key_B=value_B
のような複数のクエリストリングの値(value_A
やvalue_B
)を指定されたものからランダムの組み合わせでリクエストしたかった。中にはnullもあり。
要するに
https://example.com/?key_A=value_A001&key_B=value_B001
https://example.com/?key_A=value_A001&key_B=value_B002
https://example.com/?key_A=value_A111&key_B=value_B999
https://example.com/?key_A=&key_B=value_B150
https://example.com/?key_A=value_A999&key_B=
みたいな感じ。
どうやったか
- feederを複数個置いた
- Arrayで定義した
- CSVだとnullが表現できない
例
- まずArrayでfeederを定義する
val feeder_key_A = Array(
Map("key_A" -> "value_A001"),
Map("key_A" -> "value_A002"),
Map("key_A" -> "value_A003"),
Map("key_A" -> ""),
:
:
)
val feeder_key_B = Array(
Map("key_B" -> "value_B001"),
Map("key_B" -> "value_B002"),
Map("key_B" -> "value_B003"),
Map("key_B" -> ""),
:
:
)
- feederを使う
val scn = scenario("シナリオ")
.feed(feeder_key_A.random)
.feed(feeder_key_B.random)
.exec(
http("アクセス")
.get("/")
.queryParam("key_A","${key_A}")
.queryParam("key_B","${key_B}")
.check(status.in(200 ))
)