Locustでアクションごとに統計を出す

負荷テストツール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](https://docs.locust.io/en/latest/api.html#locust.clients.HttpSession)

こちらに載ってました
(自分はソースコードを読みましたが、ちゃんとドキュメント読めという類ですね...)

**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
--------------------------------------------------------------------------------------------------------------------------------------------

```

と要約した情報が出てくれます。