👊
openAPIのswaggerを解析して、vegetaで負荷試験するライブラリをGoで作った。
はじめに
openAPIを使用する機械って年々増えてると思うんですよね、スキーマファーストだとかコードファーストだとか思想の違うはあるにせよ、近年grpc、graphQL、openAPIなどAPIの仕様を自動生成できるライブラリも整ってきました。そこで、わざわざopenAPIでswaggerを作成するなら、それを使っていろんなことしたくないですか?
そこで今回作成したのは、swggerを解析してvegetaで負荷をかけるcliツールです。名前はbulma、もちろんベジータだからブルマです。
bulma
リポジトリはこれです。
使用方法はUsage,Installに乗っていますが、まずInstallはgo install github.com/seipan/bulma@latest
go install を使って行います。
使い方は、
bulma --path=testdata/health.yaml --base=http://localhost:8080
こんな感じで、pathに解析するswaggerファイルの置くところ、baseはそのswaggerのweb serviceのベースのURLです。-frequencyは何回負荷をかけるかで、durationはどれだけ負荷をかけるかです。
内部的にはvegetaを使って負荷をかけてます。
コマンドの仕様はこんなかんじです。
Usage:
bluma [flags]
Flags:
-b, --basepath string BaseURL for stress test
-d, --duration duration stress test duration (default 1ns)
-p, --filepath string FilePath for Parsing OpenAPI
-f, --frequency int stress test frequency (default 1)
-h, --help help for bluma
実際の出力例は
--------------------------bulma attack start-------------------------------
--------------------------vegeta attack to http://localhost:8080/health--------------------------
vegeta attack to method: GET
path StatusCode: map[200:1]
max percentile: 333.6204ms
mean percentile: 333.6204ms
total percentile: 333.6204ms
99th percentile: 333.6204ms
earliest: 2023-09-23 05:23:05.1839784 +0900 JST m=+1.029301501
latest: 2023-09-23 05:23:05.1839784 +0900 JST m=+1.029301501
-----------------------------------------------------------------------
--------------------------bulma attack finish-------------------------------
こんな感じです。health apiのみたたいてます。
最後に
まだまだ発展途上でバグも多いですが、
starください。
Discussion