summaryrefslogtreecommitdiffstats
path: root/t/Nagios-Plugin-Range.t
diff options
context:
space:
mode:
Diffstat (limited to 't/Nagios-Plugin-Range.t')
-rw-r--r--t/Nagios-Plugin-Range.t153
1 files changed, 151 insertions, 2 deletions
diff --git a/t/Nagios-Plugin-Range.t b/t/Nagios-Plugin-Range.t
index 13667de..f01518d 100644
--- a/t/Nagios-Plugin-Range.t
+++ b/t/Nagios-Plugin-Range.t
@@ -1,10 +1,32 @@
1 1
2use strict; 2use strict;
3use Test::More tests => 60; 3use Test::More qw(no_plan); #tests => 123;
4
4BEGIN { use_ok('Nagios::Plugin::Range') }; 5BEGIN { use_ok('Nagios::Plugin::Range') };
5 6
7diag "\nusing Nagios::Plugin::Range revision ". $Nagios::Plugin::Range::VERSION . "\n";
8
9my $r;
10
11diag "'garbage in' checks -- you should see 7 invalid range definition warnings here:";
12
13foreach (qw(
14 :
15 1:~
16 foo
17 1-10
18 10:~
19 1-10:2.4
20
21), '1,10' # avoid warning about using , inside qw()
22) {
23 $r =Nagios::Plugin::Range->parse_range_string($_);
24 is $r, undef, "'$_' should not be a valid range" ;
25}
26
6 27
7my $r = Nagios::Plugin::Range->parse_range_string("6"); 28diag "range: 0..6 inclusive" if $ENV{TEST_VERBOSE};
29$r = Nagios::Plugin::Range->parse_range_string("6");
8isa_ok( $r, "Nagios::Plugin::Range"); 30isa_ok( $r, "Nagios::Plugin::Range");
9ok( defined $r, "'6' is valid range"); 31ok( defined $r, "'6' is valid range");
10cmp_ok( $r->start, '==', 0, "Start correct"); 32cmp_ok( $r->start, '==', 0, "Start correct");
@@ -13,6 +35,27 @@ cmp_ok( $r->end, '==', 6, "End correct");
13cmp_ok( $r->end_infinity, '==', 0, "Not using positive infinity"); 35cmp_ok( $r->end_infinity, '==', 0, "Not using positive infinity");
14cmp_ok( $r, 'eq', "6", "Stringification back to original"); 36cmp_ok( $r, 'eq', "6", "Stringification back to original");
15 37
38my $expected = {
39 -1 => 1, # 1 means it raises an alert because it's OUTSIDE the range
40 0 => 0, # 0 means it's inside the range (no alert)
41 4 => 0,
42 6 => 0,
43 6.1 => 1,
44 79.999999 => 1,
45};
46
47sub test_expected {
48 my $r = shift;
49 my $expected = shift;
50 foreach (sort {$a<=>$b} keys %$expected) {
51 is $r->check_range($_), $expected->{$_},
52 " $_ should " . ($expected->{$_} ? 'not ' : '') . "be in the range (line ".(caller)[2].")";
53 }
54}
55
56test_expected( $r, $expected );
57
58diag "range : -7..23, inclusive" if $ENV{TEST_VERBOSE};
16$r = Nagios::Plugin::Range->parse_range_string("-7:23"); 59$r = Nagios::Plugin::Range->parse_range_string("-7:23");
17ok( defined $r, "'-7:23' is valid range"); 60ok( defined $r, "'-7:23' is valid range");
18cmp_ok( $r->start, '==', -7, "Start correct"); 61cmp_ok( $r->start, '==', -7, "Start correct");
@@ -21,6 +64,20 @@ cmp_ok( $r->end, '==', 23, "End correct");
21cmp_ok( $r->end_infinity, '==', 0, "Not using positive infinity"); 64cmp_ok( $r->end_infinity, '==', 0, "Not using positive infinity");
22cmp_ok( $r, 'eq', "-7:23", "Stringification back to original"); 65cmp_ok( $r, 'eq', "-7:23", "Stringification back to original");
23 66
67$expected = {
68 -23 => 1,
69 -7 => 0,
70 -1 => 0,
71 0 => 0,
72 4 => 0,
73 23 => 0,
74 23.1 => 1,
75 79.999999 => 1,
76};
77test_expected( $r, $expected );
78
79
80diag "range : 0..5.75, inclusive" if $ENV{TEST_VERBOSE};
24$r = Nagios::Plugin::Range->parse_range_string(":5.75"); 81$r = Nagios::Plugin::Range->parse_range_string(":5.75");
25ok( defined $r, "':5.75' is valid range"); 82ok( defined $r, "':5.75' is valid range");
26cmp_ok( $r->start, '==', 0, "Start correct"); 83cmp_ok( $r->start, '==', 0, "Start correct");
@@ -28,21 +85,81 @@ cmp_ok( $r->start_infinity, '==', 0, "Not using negative infinity");
28cmp_ok( $r->end, '==', 5.75, "End correct"); 85cmp_ok( $r->end, '==', 5.75, "End correct");
29cmp_ok( $r->end_infinity, '==', 0, "Not using positive infinity"); 86cmp_ok( $r->end_infinity, '==', 0, "Not using positive infinity");
30cmp_ok( $r, 'eq', "5.75", "Stringification to simplification"); 87cmp_ok( $r, 'eq', "5.75", "Stringification to simplification");
88$expected = {
89 -1 => 1,
90 0 => 0,
91 4 => 0,
92 5.75 => 0,
93 5.7501 => 1,
94 6 => 1,
95 6.1 => 1,
96 79.999999 => 1,
97};
98test_expected( $r, $expected );
31 99
100
101
102diag "range : negative infinity .. -95.99, inclusive" if $ENV{TEST_VERBOSE};
32$r = Nagios::Plugin::Range->parse_range_string("~:-95.99"); 103$r = Nagios::Plugin::Range->parse_range_string("~:-95.99");
33ok( defined $r, "'~:-95.99' is valid range"); 104ok( defined $r, "'~:-95.99' is valid range");
34cmp_ok( $r->start_infinity, '==', 1, "Using negative infinity"); 105cmp_ok( $r->start_infinity, '==', 1, "Using negative infinity");
35cmp_ok( $r->end, '==', -95.99, "End correct"); 106cmp_ok( $r->end, '==', -95.99, "End correct");
36cmp_ok( $r->end_infinity, '==', 0, "Not using positive infinity"); 107cmp_ok( $r->end_infinity, '==', 0, "Not using positive infinity");
37cmp_ok( $r, 'eq', "~:-95.99", "Stringification back to original"); 108cmp_ok( $r, 'eq', "~:-95.99", "Stringification back to original");
109$expected = {
110 -1001341 => 0,
111 -96 => 0,
112 -95.999 => 0,
113 -95.99 => 0,
114 -95.989 => 1,
115 -95 => 1,
116 0 => 1,
117 5.7501 => 1,
118 79.999999 => 1,
119};
120test_expected( $r, $expected );
121
122diag "range 10..infinity , inclusive" if $ENV{TEST_VERBOSE};
123test_expected( $r, $expected );
124$r = Nagios::Plugin::Range->parse_range_string("10:");
125ok( defined $r, "'10:' is valid range");
126cmp_ok( $r->start, '==', 10, "Start correct");
127cmp_ok( $r->start_infinity, '==', 0, "Not using negative infinity");
128cmp_ok( $r->end_infinity, '==', 1, "Using positive infinity");
129cmp_ok( $r, 'eq', "10:", "Stringification back to original");
130$expected = {
131 -95.999 => 1,
132 -1 => 1,
133 0 => 1,
134 9.91 => 1,
135 10 => 0,
136 11.1 => 0,
137 123456789012346 => 0,
138};
139test_expected( $r, $expected );
140
38 141
142
143diag "range 123456789012345..infinity , inclusive" if $ENV{TEST_VERBOSE};
144test_expected( $r, $expected );
39$r = Nagios::Plugin::Range->parse_range_string("123456789012345:"); 145$r = Nagios::Plugin::Range->parse_range_string("123456789012345:");
40ok( defined $r, "'123456789012345:' is valid range"); 146ok( defined $r, "'123456789012345:' is valid range");
41cmp_ok( $r->start, '==', 123456789012345, "Start correct"); 147cmp_ok( $r->start, '==', 123456789012345, "Start correct");
42cmp_ok( $r->start_infinity, '==', 0, "Not using negative infinity"); 148cmp_ok( $r->start_infinity, '==', 0, "Not using negative infinity");
43cmp_ok( $r->end_infinity, '==', 1, "Using positive infinity"); 149cmp_ok( $r->end_infinity, '==', 1, "Using positive infinity");
44cmp_ok( $r, 'eq', "123456789012345:", "Stringification back to original"); 150cmp_ok( $r, 'eq', "123456789012345:", "Stringification back to original");
151$expected = {
152 -95.999 => 1,
153 -1 => 1,
154 0 => 1,
155 123456789012344.91 => 1,
156 123456789012345 => 0,
157 123456789012346 => 0,
158};
159test_expected( $r, $expected );
160
45 161
162diag "range: <= zero " if $ENV{TEST_VERBOSE};
46$r = Nagios::Plugin::Range->parse_range_string("~:0"); 163$r = Nagios::Plugin::Range->parse_range_string("~:0");
47ok( defined $r, "'~:0' is valid range"); 164ok( defined $r, "'~:0' is valid range");
48cmp_ok( $r->start_infinity, '==', 1, "Using negative infinity"); 165cmp_ok( $r->start_infinity, '==', 1, "Using negative infinity");
@@ -53,7 +170,17 @@ cmp_ok( $r, 'eq', "~:0", "Stringification back to original");
53ok( $r->check_range(0.5) == 1, "0.5 - alert"); 170ok( $r->check_range(0.5) == 1, "0.5 - alert");
54ok( $r->check_range(-10) == 0, "-10 - no alert"); 171ok( $r->check_range(-10) == 0, "-10 - no alert");
55ok( $r->check_range(0) == 0, "0 - no alert"); 172ok( $r->check_range(0) == 0, "0 - no alert");
173$expected = {
174 -123456789012344.91 => 0,
175 -1 => 0,
176 0 => 0,
177 .001 => 1,
178 123456789012345 => 1,
179};
180test_expected( $r, $expected );
181
56 182
183diag "range: OUTSIDE 0..657.8210567" if $ENV{TEST_VERBOSE};
57$r = Nagios::Plugin::Range->parse_range_string('@0:657.8210567'); 184$r = Nagios::Plugin::Range->parse_range_string('@0:657.8210567');
58ok( defined $r, '"@0:657.8210567" is a valid range'); 185ok( defined $r, '"@0:657.8210567" is a valid range');
59cmp_ok( $r->start, '==', 0, "Start correct"); 186cmp_ok( $r->start, '==', 0, "Start correct");
@@ -66,7 +193,19 @@ ok( $r->check_range(32.88) == 1, "32.88 - alert");
66ok( $r->check_range(-2) == 0, "-2 - no alert"); 193ok( $r->check_range(-2) == 0, "-2 - no alert");
67ok( $r->check_range(657.8210567) == 1, "657.8210567 - alert"); 194ok( $r->check_range(657.8210567) == 1, "657.8210567 - alert");
68ok( $r->check_range(0) == 1, "0 - alert"); 195ok( $r->check_range(0) == 1, "0 - alert");
196$expected = {
197 -134151 => 0,
198 -1 => 0,
199 0 => 1,
200 .001 => 1,
201 657.8210567 => 1,
202 657.9 => 0,
203 123456789012345 => 0,
204};
205test_expected( $r, $expected );
69 206
207
208diag "range: 1..1 inclusive (equals one)" if $ENV{TEST_VERBOSE};
70$r = Nagios::Plugin::Range->parse_range_string('1:1'); 209$r = Nagios::Plugin::Range->parse_range_string('1:1');
71ok( defined $r, '"1:1" is a valid range'); 210ok( defined $r, '"1:1" is a valid range');
72cmp_ok( $r->start, '==', 1, "Start correct"); 211cmp_ok( $r->start, '==', 1, "Start correct");
@@ -77,6 +216,16 @@ cmp_ok( $r, 'eq', "1:1", "Stringification to simplified version");
77ok( $r->check_range(0.5) == 1, "0.5 - alert"); 216ok( $r->check_range(0.5) == 1, "0.5 - alert");
78ok( $r->check_range(1) == 0, "1 - no alert"); 217ok( $r->check_range(1) == 0, "1 - no alert");
79ok( $r->check_range(5.2) == 1, "5.2 - alert"); 218ok( $r->check_range(5.2) == 1, "5.2 - alert");
219$expected = {
220 -1 => 1,
221 0 => 1,
222 .5 => 1,
223 1 => 0,
224 1.001 => 1,
225 5.2 => 1,
226};
227test_expected( $r, $expected );
228
80 229
81$r = Nagios::Plugin::Range->parse_range_string('2:1'); 230$r = Nagios::Plugin::Range->parse_range_string('2:1');
82ok( ! defined $r, '"2:1" is rejected'); 231ok( ! defined $r, '"2:1" is rejected');