TL;DR
Gatling の HTML レポートに出力されるデータは、実は JSON でも出力されています。
この JSON ファイルをパースすることで、結果を加工したり、他のプログラムやスクリプトに渡すことができます。
ファイルの場所
$GATLING_HOME/reports/(scenario name)/js/stats.json
にあります。
js/stats.json
{
"type": "GROUP",
"name": "Global Information",
"path": "",
"pathFormatted": "group_missing-name-b06d1",
"stats": {
"name": "Global Information",
"numberOfRequests": {
"total": 13,
"ok": 13,
"ko": 0
},
"minResponseTime": {
"total": 238,
"ok": 238,
"ko": 0
},
...
}
}
なお、これらはHTMLレポートの "STATISTICS" の表に対応しています。
JSONデータの加工
jq を使ってデータを加工してみます。
例) 各リクエストの 50pct,75pct,95pct,99pct をそれぞれCSVとして出力する。
cat js/stats.json |\
jq '.contents[].stats | [.name, .percentiles1.ok, .percentiles2.ok, .percentiles3.ok, .percentiles4.ok] | @csv' -r
結果
"Home",413,456,490,496
"Home Redirect 1",322,329,335,336
"Search",238,238,238,238
"Select",339,339,339,339
"Page 1",327,327,327,327
"Page 2",338,338,338,338
"Page 3",286,286,286,286
"Page 4",297,297,297,297
"Form",892,892,892,892
"Post",359,359,359,359
"Post Redirect 1",672,672,672,672
これで Spread Sheet などにコピペしたり、複数のシナリオの実行結果を集計したりするのが楽できるかも。
参考: そもそもの経緯
結果を Excel でグラフ化するときに、HTML レポートの表をコピペするのがだるくて自動化したかったのですが、ググってもなかなか情報にたどり着けませんでした。
この Issue の最後に「JSONがあるよ」と一言コメントがありました。
https://github.com/gatling/gatling/issues/593#issuecomment-83375529