Vegeta で multipart/form-data のリクエストを送る
Vegeta は Go 製の HTTP load testing ツールです。
API サーバのベンチマークで multipart/form-data のリクエストを送信する場合、 wrk だと lua を書かなくては送れなかったのですが、 Vegeta はコードを書かなくても簡単にリクエストを送信できたので、その方法を紹介します。
vegeta
には attack
, report
, dump
というサブコマンドがあり、attack
で HTTP Request を送信します。vegeta attack
の -targets
オプションでリクエストヘッダとリクエストボディを書いたテキストを指定することで柔軟に HTTP リクエストの送信が可能になっています。
-targets
に指定するファイルの例は以下のとおりです。
POST http://localhost:8080/api/path
Content-Type: multipart/form-data; boundary=vegetaboundary
@body.txt
@body.txt
はリクエストボディを書いたファイルへのパスで、以下のように書きます。
--vegetaboundary
Content-Disposition: form-data; name="file"; filename="dummy"
Content-Type: application/octet-stream
12345
--vegetaboundary--
ファイルが用意できたら、vegeta attack
を実行します。
$ vegeta attack -rate 10 -duration 60s -targets targets.txt
このようにリクエストボディとリクエストヘッダをテキストで書けば multipart/form-data を送信できます。
上記の例では省略しましたが、Vegeta は attack
時の結果をファイルに書いておいて vegeta report
にデータを流すとレポートを出してくれるので、
$ vegeta attack ... > load_test.bin
$ cat load_test.bin | vegeta report
のようにすると良いと思います。
参考⌗
Read other posts