Locust と Boomer で負荷試験を行う際、LocustのGUIでターゲットのURLを変更しても、通常はBoomer側には反映されません。
そこでGUIでユーザー数やURLを変更したタイミングで、イベントを受け取れるようにできないかを調べました。
イベントをSubscribeする
こちらの例のように書くことで、各イベント発火時に実行されるcallbackを定義することができます。
https://github.com/myzhan/boomer/blob/master/_examples/events/subscriber.go
あらかじめ定義されているイベントは以下のとおりです。
https://github.com/myzhan/boomer/blob/07b7994517513a29ab740e0029b21d0b198fcdff/events.go
EVENT_SPAWN
であれば、Locustからspawnのメッセージを受け取ったあとの処理のなかで発火されています。
引数に2個指定されているので、callbackも2個の引数を受け取るfuncとなります。
https://github.com/myzhan/boomer/blob/07b7994517513a29ab740e0029b21d0b198fcdff/runner.go#L250
カスタムイベント
自分で定義したイベントを送受信することもできます。
https://github.com/myzhan/boomer/tree/master/_examples/custom_message
locustfile.py
で send_message
にシリアライズしたメッセージを送信することで、Boomer側で受け取ることができます。