Persistence

技術メモなど

HTTP負荷テストツール vegeta をサポートする nappa というツールを作りました

vegeta というGoで作られたHTTP負荷テストツールがあります。

github.com

初めて使ってみたのですが、シナリオや状態(Cookieなど)を伴わない単純な負荷テストにはこれで十分と感じました。

ですが、ターゲット(リクエスト)の指定について、単純なGETリクエストなら良いのですが、ヘッダーやボディを含めると指定がやや面倒と感じました。具体的には、RFC 2616形式のテキストファイルにターゲットの情報(URLやヘッダー、ボディなど)を書いて読み込ませるか、JSON Schema形式で標準入力として渡すかの、2通りの方法があります。いずれも普段扱うフォーマットではないため、これを手作りする必要がありました。

そこで、curlコマンドからJSON Schema形式を出力するツールを作りました。curlコマンドであれば、色々なツールから出力できるようになっていることが多いので、簡単に作ることができます。

github.com

このツールにcurlコマンドを食わせると、必要なパラメータだけがJSON Schema形式に変換されて標準出力に出力されます。それをパイプでつないで vegeta に渡してやればいいわけです。

$ nappa <paste a curl command> | vegeta attack -format=json -duration=1s -rate=1/s | vegeta encode