負荷テストツールlocustの統計情報は、
デフォルトで与えたURLのパスごとに統計を取るので、
パスが一文字でも変わったら別ものとして統計が出力されます
これを要約して、MVCのアクション単位でスループット出せないのか気になって調べてみました。
やりたいこと
例えば
example.py
samazamana_words = [
'word1',
'word2',
...
'word99999'
]
...
@task
def samazamana_task(self):
self.client.get(
"/search/keyword?word=" + samazamana_words[ random_value ] )
このようなコードを実行すると
---中略---
Name # reqs # fails Avg Min Max | Median req/s
--------------------------------------------------------------------------------------------------------------------------------------------
GET /search/keyword?keyword=word2827 1 0(0.00%) 1532 1532 1532 | 1500 0.14
GET /search/keyword?keyword=word4593 1 0(0.00%) 397 397 397 | 400 0.00
GET /search/keyword?keyword=word4855 1 0(0.00%) 837 837 837 | 840 0.14
GET /search/keyword?keyword=word5200 1 0(0.00%) 1669 1669 1669 | 1700 0.00
GET /search/keyword?keyword=word5490 1 0(0.00%) 480 480 480 | 480 0.14
GET /search/keyword?keyword=word6364 1 0(0.00%) 464 464 464 | 460 0.14
GET /search/keyword?keyword=word6557 1 0(0.00%) 1680 1680 1680 | 1700 0.14
GET /search/keyword?keyword=word7042 1 0(0.00%) 1219 1219 1219 | 1200 0.14
GET /search/keyword?keyword=word7579 1 0(0.00%) 787 787 787 | 790 0.00
GET /search/keyword?keyword=word9205 1 0(0.00%) 975 975 975 | 980 0.14
--------------------------------------------------------------------------------------------------------------------------------------------
Total 10 0(0.00%) 1.00
Percentage of the requests completed within given times
Name # reqs 50% 66% 75% 80% 90% 95% 98% 99% 100%
--------------------------------------------------------------------------------------------------------------------------------------------
GET /search/keyword?keyword=word2827 1 1500 1500 1500 1500 1500 1500 1500 1500 1532
GET /search/keyword?keyword=word4593 1 400 400 400 400 400 400 400 400 397
GET /search/keyword?keyword=word4855 1 840 840 840 840 840 840 840 840 837
GET /search/keyword?keyword=word5200 1 1700 1700 1700 1700 1700 1700 1700 1700 1669
GET /search/keyword?keyword=word5490 1 480 480 480 480 480 480 480 480 480
GET /search/keyword?keyword=word6364 1 460 460 460 460 460 460 460 460 464
GET /search/keyword?keyword=word6557 1 1700 1700 1700 1700 1700 1700 1700 1700 1680
GET /search/keyword?keyword=word7042 1 1200 1200 1200 1200 1200 1200 1200 1200 1219
GET /search/keyword?keyword=word7579 1 790 790 790 790 790 790 790 790 787
GET /search/keyword?keyword=word9205 1 980 980 980 980 980 980 980 980 975
--------------------------------------------------------------------------------------------------------------------------------------------
となり、パラメータごとに異なる集計が出てきます。
これらをすべて /search/keyword としてまとめた統計情報を出してほしくなりました。
まとめる
API - Locust 0.8.1 documentation
こちらに載ってました
(自分はソースコードを読みましたが、ちゃんとドキュメント読めという類ですね...)
getの引数にnameを追加するだけです。
もちろんpostでも大丈夫です
例えば
locustfile.py
samazamana_words = [
'word1',
'word2',
...
'word99999'
]
...
@task
def samazamana_task(self):
self.client.get(
"/search/keyword?word=" + samazamana_words[ random_value ], name = "/search/keyword" )
このように書くと
result.txt
-----中略-----
Name # reqs # fails Avg Min Max | Median req/s
--------------------------------------------------------------------------------------------------------------------------------------------
GET /search/keyword 10 0(0.00%) 1060 227 1834 | 1100 0.88
--------------------------------------------------------------------------------------------------------------------------------------------
Total 10 0(0.00%) 0.88
Percentage of the requests completed within given times
Name # reqs 50% 66% 75% 80% 90% 95% 98% 99% 100%
--------------------------------------------------------------------------------------------------------------------------------------------
GET /search/keyword 10 1100 1200 1300 1800 1800 1800 1800 1800 1834
--------------------------------------------------------------------------------------------------------------------------------------------
と要約した情報が出てくれます。