Merge pull request #3 from Madlohe/master
[Nagios-Plugin.git] / t / Nagios-Monitoring-Plugin-03.t
blob7ca2aa93242be02698b819c9e24d230ea1741a45
1 # $np->check_messages tests
3 use strict;
4 use Test::More tests => 61;
6 BEGIN { 
7     use_ok("Nagios::Monitoring::Plugin");
8     use_ok("Nagios::Monitoring::Plugin::Functions", ":all");
10 Nagios::Monitoring::Plugin::Functions::_fake_exit(1);
12 my $plugin = 'NP_CHECK_MESSAGES_03';
13 my $np = Nagios::Monitoring::Plugin->new( shortname => $plugin, () );
14 is($np->shortname, $plugin, "shortname() is $plugin"); 
16 my ($code, $message);
18 # -------------------------------------------------------------------------
19 # Check codes
20 my @codes = (
21     [ [ qw(Critical) ],   [ qw(Warning) ],        CRITICAL ],
22     [ [],                 [ qw(Warning) ],        WARNING  ],
23     [ [],                 [],                     OK       ],
25 my $i = 0;
26 for (@codes) {
27     $i++;
28     $code = $np->check_messages( critical => $_->[0], warning  => $_->[1] );
29     is($code, $_->[2], "Code test $i returned $STATUS_TEXT{$_->[2]}");
32 # -------------------------------------------------------------------------
33 # Check messages
34 my %arrays = (
35     critical    => [ qw(A B C) ],
36     warning     => [ qw(D E F) ],
37     ok          => [ qw(G H I) ],
39 my %messages = map { $_ => join(' ', @{$arrays{$_}}) } keys %arrays;
41 # critical, warning
42 ($code, $message) = $np->check_messages(
43     critical => $arrays{critical}, warning => $arrays{warning},
45 is($code, CRITICAL, "(critical, warning) code is $STATUS_TEXT{$code}");
46 is($message, $messages{critical}, "(critical, warning) message is $message");
48 # critical, warning, ok
49 ($code, $message) = $np->check_messages(
50     critical => $arrays{critical}, warning => $arrays{warning},
51     ok => $arrays{ok},
53 is($code, CRITICAL, "(critical, warning, ok) code is $STATUS_TEXT{$code}");
54 is($message, $messages{critical}, "(critical, warning, ok) message is $message");
56 # critical, warning, $ok
57 ($code, $message) = $np->check_messages(
58     critical => $arrays{critical}, warning => $arrays{warning},
59     ok => 'G H I',
61 is($code, CRITICAL, "(critical, warning, \$ok) code is $STATUS_TEXT{$code}");
62 is($message, $messages{critical}, "(critical, warning, \$ok) message is $message");
64 # warning
65 ($code, $message) = $np->check_messages(
66     critical => [],     warning => $arrays{warning},
68 is($code, WARNING, "(warning) code is $STATUS_TEXT{$code}");
69 is($message, $messages{warning}, "(warning) message is $message");
71 # warning, ok
72 ($code, $message) = $np->check_messages(
73     critical => [],     warning => $arrays{warning}, ok => $arrays{ok},
75 is($code, WARNING, "(warning, ok) code is $STATUS_TEXT{$code}");
76 is($message, $messages{warning}, "(warning, ok) message is $message");
78 # ok
79 ($code, $message) = $np->check_messages(
80     critical => [],     warning => [],  ok => $arrays{ok},
82 is($code, OK, "(ok) code is $STATUS_TEXT{$code}");
83 is($message, $messages{ok}, "(ok) message is $message");
85 # $ok
86 ($code, $message) = $np->check_messages(
87     critical => [],     warning => [],  ok => 'G H I',
89 is($code, OK, "(\$ok) code is $STATUS_TEXT{$code}");
90 is($message, $messages{ok}, "(\$ok) message is $message");
92 # -------------------------------------------------------------------------
93 # explicit join
94 my $join = '+';
95 ($code, $message) = $np->check_messages(
96     critical => $arrays{critical}, warning => $arrays{warning},
97     join => $join,
99 is($message, join($join, @{$arrays{critical}}), "joined '$join' (critical, warning) message is $message");
100 $join = '';
101 ($code, $message) = $np->check_messages(
102     critical => [],     warning => $arrays{warning},
103     join => $join,
105 is($message, join($join, @{$arrays{warning}}), "joined '$join' (warning) message is $message");
106 $join = undef;
107 ($code, $message) = $np->check_messages(
108     critical => [],     warning => [],          ok => $arrays{ok},
109     join => $join,
111 is($message, join(' ', @{$arrays{ok}}), "joined undef (ok) message is $message");
113 # -------------------------------------------------------------------------
114 # join_all messages
115 my $join_all = ' :: ';
116 my $msg_all_cwo = join($join_all, map { join(' ', @{$arrays{$_}}) } 
117     qw(critical warning ok));
118 my $msg_all_cw = join($join_all, map { join(' ', @{$arrays{$_}}) } 
119     qw(critical warning));
120 my $msg_all_wo = join($join_all, map { join(' ', @{$arrays{$_}}) } 
121     qw(warning ok));
123 # critical, warning, ok
124 ($code, $message) = $np->check_messages(
125     critical => $arrays{critical}, warning => $arrays{warning}, ok => $arrays{ok},
126     join_all => $join_all,
128 is($code, CRITICAL, "(critical, warning, ok) code is $STATUS_TEXT{$code}");
129 is($message, $msg_all_cwo, "join_all '$join_all' (critical, warning, ok) message is $message");
131 # critical, warning, $ok
132 ($code, $message) = $np->check_messages(
133     critical => $arrays{critical}, warning => $arrays{warning}, ok => 'G H I',
134     join_all => $join_all,
136 is($code, CRITICAL, "(critical, warning, \$ok) code is $STATUS_TEXT{$code}");
137 is($message, $msg_all_cwo, "join_all '$join_all' (critical, warning, \$ok) message is $message");
139 # critical, warning
140 ($code, $message) = $np->check_messages(
141     critical => $arrays{critical}, warning => $arrays{warning},
142     join_all => $join_all,
144 is($code, CRITICAL, "(critical, warning) code is $STATUS_TEXT{$code}");
145 is($message, $msg_all_cw, "join_all '$join_all' (critical, warning) message is $message");
147 # warning, ok
148 ($code, $message) = $np->check_messages(
149     critical => [],     warning => $arrays{warning}, ok => $arrays{ok},
150     join_all => $join_all,
152 is($code, WARNING, "(warning, ok) code is $STATUS_TEXT{$code}");
153 is($message, $msg_all_wo, "join_all '$join_all' (critical, warning, ok) message is $message");
155 # warning, $ok
156 ($code, $message) = $np->check_messages(
157     critical => [],     warning => $arrays{warning}, ok => 'G H I',
158     join_all => $join_all,
160 is($code, WARNING, "(warning, \$ok) code is $STATUS_TEXT{$code}");
161 is($message, $msg_all_wo, "join_all '$join_all' (critical, warning, \$ok) message is $message");
163 # warning
164 ($code, $message) = $np->check_messages(
165     critical => [],     warning => $arrays{warning},
166     join_all => $join_all,
168 is($code, WARNING, "(warning) code is $STATUS_TEXT{$code}");
169 is($message, 'D E F', "join_all '$join_all' (critical, warning) message is $message");
171 # -------------------------------------------------------------------------
172 # add_messages
174 # Constant codes
175 $np = Nagios::Monitoring::Plugin->new();
176 $np->add_message( CRITICAL, "A B C" );
177 $np->add_message( WARNING, "D E F" );
178 ($code, $message) = $np->check_messages();
179 is($code, CRITICAL, "(CRITICAL, WARNING) code is $STATUS_TEXT{$code}");
180 is($message, $messages{critical}, "(CRITICAL, WARNING) message is $message");
182 $np = Nagios::Monitoring::Plugin->new();
183 $np->add_message( CRITICAL, "A B C" );
184 ($code, $message) = $np->check_messages();
185 is($code, CRITICAL, "(CRITICAL) code is $STATUS_TEXT{$code}");
186 is($message, $messages{critical}, "(CRITICAL) message is $message");
188 $np = Nagios::Monitoring::Plugin->new();
189 $np->add_message( WARNING, "D E F" );
190 ($code, $message) = $np->check_messages();
191 is($code, WARNING, "(WARNING) code is $STATUS_TEXT{$code}");
192 is($message, $messages{warning}, "(WARNING) message is $message");
194 $np = Nagios::Monitoring::Plugin->new();
195 $np->add_message( WARNING, "D E F" );
196 $np->add_message( OK, "G H I" );
197 ($code, $message) = $np->check_messages();
198 is($code, WARNING, "(WARNING, OK) code is $STATUS_TEXT{$code}");
199 is($message, $messages{warning}, "(WARNING, OK) message is $message");
201 $np = Nagios::Monitoring::Plugin->new();
202 $np->add_message( OK, "G H I" );
203 ($code, $message) = $np->check_messages();
204 is($code, OK, "(OK) code is $STATUS_TEXT{$code}");
205 is($message, $messages{ok}, "(OK) message is $message");
208 # String codes
209 $np = Nagios::Monitoring::Plugin->new();
210 $np->add_message( critical => "A B C" );
211 $np->add_message( warning => "D E F" );
212 ($code, $message) = $np->check_messages();
213 is($code, CRITICAL, "(critical, warning) code is $STATUS_TEXT{$code}");
214 is($message, $messages{critical}, "(critical, warning) message is $message");
216 $np = Nagios::Monitoring::Plugin->new();
217 $np->add_message( critical => "A B C" );
218 ($code, $message) = $np->check_messages();
219 is($code, CRITICAL, "(critical) code is $STATUS_TEXT{$code}");
220 is($message, $messages{critical}, "(critical) message is $message");
222 $np = Nagios::Monitoring::Plugin->new();
223 $np->add_message( warning => "D E F" );
224 ($code, $message) = $np->check_messages();
225 is($code, WARNING, "(warning) code is $STATUS_TEXT{$code}");
226 is($message, $messages{warning}, "(warning) message is $message");
228 $np = Nagios::Monitoring::Plugin->new();
229 $np->add_message( warning => "D E F" );
230 $np->add_message( ok => "G H I" );
231 ($code, $message) = $np->check_messages();
232 is($code, WARNING, "(warning, ok) code is $STATUS_TEXT{$code}");
233 is($message, $messages{warning}, "(warning, ok) message is $message");
235 $np = Nagios::Monitoring::Plugin->new();
236 $np->add_message( ok => "G H I" );
237 ($code, $message) = $np->check_messages();
238 is($code, OK, "(ok) code is $STATUS_TEXT{$code}");
239 is($message, $messages{ok}, "(ok) message is $message");
242 # No add_message
243 $np = Nagios::Monitoring::Plugin->new();
244 ($code, $message) = $np->check_messages();
245 is($code, OK, "() code is $STATUS_TEXT{$code}");
246 is($message, '', "() message is ''");
249 # -------------------------------------------------------------------------
250 # Error conditions
252 # add_message errors
253 $np = Nagios::Monitoring::Plugin->new();
254 ok(! defined eval { $np->add_message( foobar => 'hi mum' ) }, 
255     'add_message dies on invalid code');
256 ok(! defined eval { $np->add_message( OKAY => 'hi mum' ) }, 
257     'add_message dies on invalid code');
258 # UNKNOWN and DEPENDENT error codes
259 ok(! defined eval { $np->add_message( unknown => 'hi mum' ) }, 
260     'add_message dies on UNKNOWN code');
261 ok(! defined eval { $np->add_message( dependent => 'hi mum' ) }, 
262     'add_message dies on DEPENDENT code');