Assurer 近況

Assurer の最近の状況など。

franck が開発に参加

Plagger コミッタでもある franck がジョインしてくれ、プラグインやパッチなどを送ってくれたり、新しいアイデアを提案/実装してくれたりしてます。この週末も素敵な機能を実装してくれるみたいです。

Notify フェーズの追加

Notify フェーズを追加して、Notify::IRC を実装してみました。ほとんど Plagger からのパクリです。

Kwalify によるコンフィグバリデーション

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 プラグイン

Test::WWW::Mechanize をつかったテストも組み込めるようにしました。

まあ、こんな感じです。あまり詳しく書くと YAPC で話すネタがなくなるので、この辺で。