こんにちは、鈴木です。
cucumber-nagios というライブラリが気になっていたので、試してみました。
cucumber-nagios を使用すると、Cucumber でのテスト結果を Nagios のフォーマットで出力することができます。
単なる疎通確認ではなく、「ユーザ操作を想定したシナリオが実行できること(Cucumber のテストが通ること)」を Nagios で監視することができます。
インストール時に発生した問題
インストール時にいくつか問題が発生し、試行錯誤を行いましたので、先にまとめておきます。
- Ruby1.9 では bundler のバージョンが合わずに動作しなかった
cucumber-nagios が依存する bundler のバージョンが古かったため、Ruby1.9 にインストールされていた bundler とバージョンが合わず、「bundle install」するときにエラーとなってしまいました。bundler を古いバージョンに差し替えれば動かすことはできるかもしれませんが、同じマシンの他のプロジェクトに影響があるかもしれないため、今回は Ruby1.8 の環境で試しました。 - cucumber-nagios-0.9.2 は cucumber-1.2.1 では動作しない
cucumber-1.1.9 を明示的にインストールしなおしました。
cucumber-nagios のインストール
上記のインストール時に発生した問題を踏まえて、インストールを行います。
まず、Ruby1.8 に切り替えます。
rvm を使用している場合は、以下のように変更します(こういう場合に rvm などのツールを利用していると便利ですね)。
1 2 |
# バージョンはお手元の環境に合わせて変更してください. rvm use ruby-1.8.7-p371 |
cucumber と cucumber-nagios をインストールします。
1 2 3 4 5 |
# cucumber-1.2.x では動作しないため、先に cucumber-1.1.9 をインストールします. gem install cucumber -v=1.1.9 # 現時点の cucumber-nagios の最新バージョンをインストールします. gem install cucumber-nagios -v=0.9.2 |
「インストール時に発生した問題」で述べましたが、バージョンの組みわせによっては動作しないので、上記のように明示的にバージョンを指定してインストールします。
※cucumber-nagios のバージョンが上がった場合は、改めて cucumber と cucumber-nagios の最新バージョン同士の組み合わせで動作するか確認したほうが良いです。
ここまででインストールは完了です。
プロジェクトの作成
cucumber-nagios をインストールすると、cucumber-nagios-gen というコマンドが使用できるようになります。
cucumber-nagios-gen の使い方は、大きく分けて 2 通りあります。
一つは独立したプロジェクトを作成する機能で、既存のプロジェクトとは切り離したい場合に使用します。
もうひとつはテストケース (feature) を作成する機能で、既存のプロジェクトにテストコードだけ追加したい場合に使用します。
それぞれ、以下のようにコマンドの 1 つ目の引数で指定します。
1 2 3 4 5 |
# スタンドアロンのプロジェクトを作成する場合. cucumber-nagios-gen project ... # 既存プロジェクトにテストケース (feature) を作成する場合. cucumber-nagios-gen feature ... |
今回は独立したプロジェクトとして作成します(監視用サーバにアプリケーションのプロジェクトをデプロイしない場合が多いはずなので)。
監視対象は何でも良いのですが、Techscore を監視するためのプロジェクトを作成します。
1 |
cucumber-nagios-gen project www.techscore.com |
www.techscore.com というディレクトリが作成されるので、その中に移動します。
1 |
cd www.techscore.com |
ディレクトリ内は以下のようになっています。
1 2 |
> ls Gemfile README features |
本来はここで「bundle install」したいところですが、バージョンの組み合わせの問題があるので、Gemfile を以下の内容に変更します。
1 2 3 4 |
source :rubygems gem 'cucumber', '~> 1.1.9' gem 'cucumber-nagios', '~> 0.9.2' |
それでは「bundle install」します。
1 |
bundle install |
次に、テストケース(feature)を作成します。
前述した「cucumber-nagios-gen feature ...」で生成します。
1 2 3 4 |
> cucumber-nagios-gen feature www.techscore.com techscore Generating with feature generator: [ADDED] features/www.techscore.com/techscore.feature [ADDED] features/www.techscore.com/steps/techscore_steps.rb |
features/techscore.com/techscore.feature を開くと、以下のように書かれています。
1 2 3 4 5 6 |
Feature: www.techscore.com It should be up Scenario: Visiting home page When I go to "http://www.techscore.com" Then the request should succeed |
自動生成されたものですが、「http://www.techscore.com へのリクエストが成功すること」のテストです。
テストを実行してみましょう。
1 2 |
> cucumber-nagios features/www.techscore.com/techscore.feature CUCUMBER OK - Critical: 0, Warning: 0, 2 okay | passed=2; failed=0; nosteps=0; total=2; time=0 |
Techscore がダウンしていなければ、上記のように「CUCUMBER OK ...」という出力が得られるはずです。
これで Cucumber でのテスト結果を Nagios で監視できますね。