From b418181dfe80dd75169b6e8a619ac1932155dea2 Mon Sep 17 00:00:00 2001 From: Sven Nierlein Date: Mon, 20 Jan 2014 00:54:34 +0100 Subject: renamed module into Monitoring::Plugin since the complete monitoring team has been renamed, we also rename this module. Signed-off-by: Sven Nierlein --- t/Monitoring-Plugin-03.t | 262 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100644 t/Monitoring-Plugin-03.t (limited to 't/Monitoring-Plugin-03.t') diff --git a/t/Monitoring-Plugin-03.t b/t/Monitoring-Plugin-03.t new file mode 100644 index 0000000..d419342 --- /dev/null +++ b/t/Monitoring-Plugin-03.t @@ -0,0 +1,262 @@ +# $np->check_messages tests + +use strict; +use Test::More tests => 61; + +BEGIN { + use_ok("Monitoring::Plugin"); + use_ok("Monitoring::Plugin::Functions", ":all"); +} +Monitoring::Plugin::Functions::_fake_exit(1); + +my $plugin = 'MP_CHECK_MESSAGES_03'; +my $np = Monitoring::Plugin->new( shortname => $plugin, () ); +is($np->shortname, $plugin, "shortname() is $plugin"); + +my ($code, $message); + +# ------------------------------------------------------------------------- +# Check codes +my @codes = ( + [ [ qw(Critical) ], [ qw(Warning) ], CRITICAL ], + [ [], [ qw(Warning) ], WARNING ], + [ [], [], OK ], +); +my $i = 0; +for (@codes) { + $i++; + $code = $np->check_messages( critical => $_->[0], warning => $_->[1] ); + is($code, $_->[2], "Code test $i returned $STATUS_TEXT{$_->[2]}"); +} + +# ------------------------------------------------------------------------- +# Check messages +my %arrays = ( + critical => [ qw(A B C) ], + warning => [ qw(D E F) ], + ok => [ qw(G H I) ], +); +my %messages = map { $_ => join(' ', @{$arrays{$_}}) } keys %arrays; + +# critical, warning +($code, $message) = $np->check_messages( + critical => $arrays{critical}, warning => $arrays{warning}, +); +is($code, CRITICAL, "(critical, warning) code is $STATUS_TEXT{$code}"); +is($message, $messages{critical}, "(critical, warning) message is $message"); + +# critical, warning, ok +($code, $message) = $np->check_messages( + critical => $arrays{critical}, warning => $arrays{warning}, + ok => $arrays{ok}, +); +is($code, CRITICAL, "(critical, warning, ok) code is $STATUS_TEXT{$code}"); +is($message, $messages{critical}, "(critical, warning, ok) message is $message"); + +# critical, warning, $ok +($code, $message) = $np->check_messages( + critical => $arrays{critical}, warning => $arrays{warning}, + ok => 'G H I', +); +is($code, CRITICAL, "(critical, warning, \$ok) code is $STATUS_TEXT{$code}"); +is($message, $messages{critical}, "(critical, warning, \$ok) message is $message"); + +# warning +($code, $message) = $np->check_messages( + critical => [], warning => $arrays{warning}, +); +is($code, WARNING, "(warning) code is $STATUS_TEXT{$code}"); +is($message, $messages{warning}, "(warning) message is $message"); + +# warning, ok +($code, $message) = $np->check_messages( + critical => [], warning => $arrays{warning}, ok => $arrays{ok}, +); +is($code, WARNING, "(warning, ok) code is $STATUS_TEXT{$code}"); +is($message, $messages{warning}, "(warning, ok) message is $message"); + +# ok +($code, $message) = $np->check_messages( + critical => [], warning => [], ok => $arrays{ok}, +); +is($code, OK, "(ok) code is $STATUS_TEXT{$code}"); +is($message, $messages{ok}, "(ok) message is $message"); + +# $ok +($code, $message) = $np->check_messages( + critical => [], warning => [], ok => 'G H I', +); +is($code, OK, "(\$ok) code is $STATUS_TEXT{$code}"); +is($message, $messages{ok}, "(\$ok) message is $message"); + +# ------------------------------------------------------------------------- +# explicit join +my $join = '+'; +($code, $message) = $np->check_messages( + critical => $arrays{critical}, warning => $arrays{warning}, + join => $join, +); +is($message, join($join, @{$arrays{critical}}), "joined '$join' (critical, warning) message is $message"); +$join = ''; +($code, $message) = $np->check_messages( + critical => [], warning => $arrays{warning}, + join => $join, +); +is($message, join($join, @{$arrays{warning}}), "joined '$join' (warning) message is $message"); +$join = undef; +($code, $message) = $np->check_messages( + critical => [], warning => [], ok => $arrays{ok}, + join => $join, +); +is($message, join(' ', @{$arrays{ok}}), "joined undef (ok) message is $message"); + +# ------------------------------------------------------------------------- +# join_all messages +my $join_all = ' :: '; +my $msg_all_cwo = join($join_all, map { join(' ', @{$arrays{$_}}) } + qw(critical warning ok)); +my $msg_all_cw = join($join_all, map { join(' ', @{$arrays{$_}}) } + qw(critical warning)); +my $msg_all_wo = join($join_all, map { join(' ', @{$arrays{$_}}) } + qw(warning ok)); + +# critical, warning, ok +($code, $message) = $np->check_messages( + critical => $arrays{critical}, warning => $arrays{warning}, ok => $arrays{ok}, + join_all => $join_all, +); +is($code, CRITICAL, "(critical, warning, ok) code is $STATUS_TEXT{$code}"); +is($message, $msg_all_cwo, "join_all '$join_all' (critical, warning, ok) message is $message"); + +# critical, warning, $ok +($code, $message) = $np->check_messages( + critical => $arrays{critical}, warning => $arrays{warning}, ok => 'G H I', + join_all => $join_all, +); +is($code, CRITICAL, "(critical, warning, \$ok) code is $STATUS_TEXT{$code}"); +is($message, $msg_all_cwo, "join_all '$join_all' (critical, warning, \$ok) message is $message"); + +# critical, warning +($code, $message) = $np->check_messages( + critical => $arrays{critical}, warning => $arrays{warning}, + join_all => $join_all, +); +is($code, CRITICAL, "(critical, warning) code is $STATUS_TEXT{$code}"); +is($message, $msg_all_cw, "join_all '$join_all' (critical, warning) message is $message"); + +# warning, ok +($code, $message) = $np->check_messages( + critical => [], warning => $arrays{warning}, ok => $arrays{ok}, + join_all => $join_all, +); +is($code, WARNING, "(warning, ok) code is $STATUS_TEXT{$code}"); +is($message, $msg_all_wo, "join_all '$join_all' (critical, warning, ok) message is $message"); + +# warning, $ok +($code, $message) = $np->check_messages( + critical => [], warning => $arrays{warning}, ok => 'G H I', + join_all => $join_all, +); +is($code, WARNING, "(warning, \$ok) code is $STATUS_TEXT{$code}"); +is($message, $msg_all_wo, "join_all '$join_all' (critical, warning, \$ok) message is $message"); + +# warning +($code, $message) = $np->check_messages( + critical => [], warning => $arrays{warning}, + join_all => $join_all, +); +is($code, WARNING, "(warning) code is $STATUS_TEXT{$code}"); +is($message, 'D E F', "join_all '$join_all' (critical, warning) message is $message"); + +# ------------------------------------------------------------------------- +# add_messages + +# Constant codes +$np = Monitoring::Plugin->new(); +$np->add_message( CRITICAL, "A B C" ); +$np->add_message( WARNING, "D E F" ); +($code, $message) = $np->check_messages(); +is($code, CRITICAL, "(CRITICAL, WARNING) code is $STATUS_TEXT{$code}"); +is($message, $messages{critical}, "(CRITICAL, WARNING) message is $message"); + +$np = Monitoring::Plugin->new(); +$np->add_message( CRITICAL, "A B C" ); +($code, $message) = $np->check_messages(); +is($code, CRITICAL, "(CRITICAL) code is $STATUS_TEXT{$code}"); +is($message, $messages{critical}, "(CRITICAL) message is $message"); + +$np = Monitoring::Plugin->new(); +$np->add_message( WARNING, "D E F" ); +($code, $message) = $np->check_messages(); +is($code, WARNING, "(WARNING) code is $STATUS_TEXT{$code}"); +is($message, $messages{warning}, "(WARNING) message is $message"); + +$np = Monitoring::Plugin->new(); +$np->add_message( WARNING, "D E F" ); +$np->add_message( OK, "G H I" ); +($code, $message) = $np->check_messages(); +is($code, WARNING, "(WARNING, OK) code is $STATUS_TEXT{$code}"); +is($message, $messages{warning}, "(WARNING, OK) message is $message"); + +$np = Monitoring::Plugin->new(); +$np->add_message( OK, "G H I" ); +($code, $message) = $np->check_messages(); +is($code, OK, "(OK) code is $STATUS_TEXT{$code}"); +is($message, $messages{ok}, "(OK) message is $message"); + + +# String codes +$np = Monitoring::Plugin->new(); +$np->add_message( critical => "A B C" ); +$np->add_message( warning => "D E F" ); +($code, $message) = $np->check_messages(); +is($code, CRITICAL, "(critical, warning) code is $STATUS_TEXT{$code}"); +is($message, $messages{critical}, "(critical, warning) message is $message"); + +$np = Monitoring::Plugin->new(); +$np->add_message( critical => "A B C" ); +($code, $message) = $np->check_messages(); +is($code, CRITICAL, "(critical) code is $STATUS_TEXT{$code}"); +is($message, $messages{critical}, "(critical) message is $message"); + +$np = Monitoring::Plugin->new(); +$np->add_message( warning => "D E F" ); +($code, $message) = $np->check_messages(); +is($code, WARNING, "(warning) code is $STATUS_TEXT{$code}"); +is($message, $messages{warning}, "(warning) message is $message"); + +$np = Monitoring::Plugin->new(); +$np->add_message( warning => "D E F" ); +$np->add_message( ok => "G H I" ); +($code, $message) = $np->check_messages(); +is($code, WARNING, "(warning, ok) code is $STATUS_TEXT{$code}"); +is($message, $messages{warning}, "(warning, ok) message is $message"); + +$np = Monitoring::Plugin->new(); +$np->add_message( ok => "G H I" ); +($code, $message) = $np->check_messages(); +is($code, OK, "(ok) code is $STATUS_TEXT{$code}"); +is($message, $messages{ok}, "(ok) message is $message"); + + +# No add_message +$np = Monitoring::Plugin->new(); +($code, $message) = $np->check_messages(); +is($code, OK, "() code is $STATUS_TEXT{$code}"); +is($message, '', "() message is ''"); + + +# ------------------------------------------------------------------------- +# Error conditions + +# add_message errors +$np = Monitoring::Plugin->new(); +ok(! defined eval { $np->add_message( foobar => 'hi mum' ) }, + 'add_message dies on invalid code'); +ok(! defined eval { $np->add_message( OKAY => 'hi mum' ) }, + 'add_message dies on invalid code'); +# UNKNOWN and DEPENDENT error codes +ok(! defined eval { $np->add_message( unknown => 'hi mum' ) }, + 'add_message dies on UNKNOWN code'); +ok(! defined eval { $np->add_message( dependent => 'hi mum' ) }, + 'add_message dies on DEPENDENT code'); -- cgit v1.2.3-74-g34f1