Assurer の最近の状況など。
Plagger コミッタでもある franck がジョインしてくれ、プラグインやパッチなどを送ってくれたり、新しいアイデアを提案/実装してくれたりしてます。この週末も素敵な機能を実装してくれるみたいです。
Notify フェーズを追加して、Notify::IRC を実装してみました。ほとんど Plagger からのパクリです。
Assurer::ConfigLoader に、Kwalify によるコンフィグバリデーション処理が追加されました。実行時に設定ファイルのミスをお知らせしてくれます。
プラグインの場合は、当然プラグイン毎に設定内容が異なるわけですが、この辺りもちゃんと対応しています。
$ assurer.pl -c config.yaml --role=web
といった形で、シェルモード起動時に、ターゲットとなるロールを指定できるのですが、機能追加により、
assurer> !on app1.foo.com app2.foo.com do uptime assurer> !on /.*.foo.com/ do uptime assurer> !with web db do uptime assurer> !with /web|mail/ do uptime
といった形で、シェルモード中にもターゲットホストやロールが指定できるようになっています。正規表現も使えます。
また、シェルモードからもテストが実行できるようになっています。こんな感じで。
assurer> !test SSH on app1.foo.com assurer> !test SSH on /.*.foo.com/ assurer> !test SSH with web assurer> !test SSH with /web|mail/
テストの実行は assurer_test.pl を POE::Wheel::Run で起動することにより、並列実行させていたのですが、POE::Component::JobQueue を併用することにより、並列度をコントロールできるようにしました。
また、
exec_on: - host: localhost priority: 3 - host: host0.example.com priority: 2 - host: host1.example.cm priority: 1
といった設定を行うことにより、複数のマシンで分散してテストを行う、ということができるようになってます。priority は今のところ設定しても意味はなく、ラウンドロビンでテストジョブを割り当ててるのですが、今後は priority に応じて割りてるジョブの数を調整したり、各マシンの負荷状況を見て調整したり、といったことができるようにしたいと考えています。
Test::WWW::Mechanize をつかったテストも組み込めるようにしました。
まあ、こんな感じです。あまり詳しく書くと YAPC で話すネタがなくなるので、この辺で。