summaryrefslogtreecommitdiffstats
path: root/plugins/t/check_disk.t
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/t/check_disk.t')
-rw-r--r--plugins/t/check_disk.t213
1 files changed, 114 insertions, 99 deletions
diff --git a/plugins/t/check_disk.t b/plugins/t/check_disk.t
index 72a83ea4..ba149842 100644
--- a/plugins/t/check_disk.t
+++ b/plugins/t/check_disk.t
@@ -7,6 +7,7 @@
7# TODO: Add in tests for perf data. Need to beef up Monitoring::Plugin::Performance to cater for max, min, etc 7# TODO: Add in tests for perf data. Need to beef up Monitoring::Plugin::Performance to cater for max, min, etc
8 8
9use strict; 9use strict;
10use warnings;
10use Test::More; 11use Test::More;
11use NPTest; 12use NPTest;
12use POSIX qw(ceil floor); 13use POSIX qw(ceil floor);
@@ -26,7 +27,7 @@ my $output_format = "--output-format mp-test-json";
26if ($mountpoint_valid eq "" or $mountpoint2_valid eq "") { 27if ($mountpoint_valid eq "" or $mountpoint2_valid eq "") {
27 plan skip_all => "Need 2 mountpoints to test"; 28 plan skip_all => "Need 2 mountpoints to test";
28} else { 29} else {
29 plan tests => 97; 30 plan tests => 96;
30} 31}
31 32
32$result = NPTest->testCmd( 33$result = NPTest->testCmd(
@@ -34,25 +35,30 @@ $result = NPTest->testCmd(
34 ); 35 );
35cmp_ok( $result->return_code, "==", 0, "Checking two mountpoints (must have at least 1% free in space and inodes)"); 36cmp_ok( $result->return_code, "==", 0, "Checking two mountpoints (must have at least 1% free in space and inodes)");
36 37
38my $result_mp2 = $result->{'mp_test_result'}->{'checks'}->[0];
39my $result_mp1 = $result->{'mp_test_result'}->{'checks'}->[1];
40
37like($result->{'mp_test_result'}->{'state'}, "/OK/", "Main result is OK"); 41like($result->{'mp_test_result'}->{'state'}, "/OK/", "Main result is OK");
38like($result->{'mp_test_result'}->{'checks'}->[0]->{'state'}, "/OK/", "First sub result is OK"); 42like($result_mp2->{'state'}, "/OK/", "First sub result is OK");
39like($result->{'mp_test_result'}->{'checks'}->[1]->{'state'}, "/OK/", "Second sub result is OK"); 43like($result_mp1->{'state'}, "/OK/", "Second sub result is OK");
44
45my @perfdata;
46@perfdata[0] = $result_mp2->{'checks'}->[0]->{'perfdata'}->[0];
47@perfdata[1] = $result_mp1->{'checks'}->[0]->{'perfdata'}->[0];
40 48
41my $absolut_space_mp1 = $result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}->[0]->{'perfdata'}->[0]->{'max'}->{'value'}; 49my $absolut_space_mp1 = $perfdata[1]->{'max'}->{'value'};
42# print("absolute space on mp1: ". $absolut_space_mp1 . "\n"); 50# print("absolute space on mp1: ". $absolut_space_mp1 . "\n");
51my $absolut_used_space_mp1 = $perfdata[1]->{'value'}->{'value'};
43 52
44my $free_percent_on_mp1 = ($result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}->[0]->{'perfdata'}->[0]->{'value'}->{'value'} / ($absolut_space_mp1/100)); 53my $free_percent_on_mp1 = ($absolut_space_mp1 - $absolut_used_space_mp1) / ($absolut_space_mp1/100);
45print("free percent on mp1: ". $free_percent_on_mp1 . "\n"); 54# print("free percent on mp1: ". $free_percent_on_mp1 . "\n");
46 55
47my $absolut_space_mp2 = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}->[0]->{'perfdata'}->[0]->{'max'}->{'value'}; 56my $absolut_space_mp2 = $perfdata[0]->{'max'}->{'value'};
48# print("absolute space on mp2: ". $absolut_space_mp2 . "\n"); 57# print("absolute space on mp2: ". $absolut_space_mp2 . "\n");
58my $absolut_used_space_mp2 = $perfdata[0]->{'value'}->{'value'};
49 59
50my $free_percent_on_mp2 = ($result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}->[0]->{'perfdata'}->[0]->{'value'}->{'value'}/ ($absolut_space_mp2/100)); 60my $free_percent_on_mp2 = (($absolut_space_mp2 - $absolut_used_space_mp2)/ ($absolut_space_mp2/100));
51print("free percent on mp2: ". $free_percent_on_mp2 . "\n"); 61# print("free percent on mp2: ". $free_percent_on_mp2 . "\n");
52
53my @perfdata;
54@perfdata[0] = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}->[0]->{'perfdata'}->[0];
55@perfdata[1] = $result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}->[0]->{'perfdata'}->[0];
56 62
57# Decrease precision of numbers since the the fs might be modified between the two runs 63# Decrease precision of numbers since the the fs might be modified between the two runs
58$perfdata[0]->{'value'}->{'value'} = int($perfdata[0]->{'value'}->{'value'} / 1000000); 64$perfdata[0]->{'value'}->{'value'} = int($perfdata[0]->{'value'}->{'value'} / 1000000);
@@ -73,46 +79,56 @@ if ($free_percent_on_mp1 > $free_percent_on_mp2) {
73 die "Two mountpoints are the same - cannot do rest of test"; 79 die "Two mountpoints are the same - cannot do rest of test";
74} 80}
75 81
76print("less free: " . $less_free . "\n"); 82# print("less free: " . $less_free . "\n");
77print("more free: " . $more_free . "\n"); 83# print("more free: " . $more_free . "\n");
78 84
79if($free_percent_on_mp1 == $avg_free_percent || $free_percent_on_mp2 == $avg_free_percent) { 85if($free_percent_on_mp1 == $avg_free_percent || $free_percent_on_mp2 == $avg_free_percent) {
80 die "One mountpoints has average space free - cannot do rest of test"; 86 die "One mountpoints has average space free - cannot do rest of test";
81} 87}
82 88
83my $used_inodes_on_mp1 = $result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}[2]->{'perfdata'}->[0]->{'value'}->{'value'}; 89# TODO enable inode checks later when there is enough nerves for Perl
84my $total_inodes_on_mp1 = $result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}[2]->{'perfdata'}->[0]->{'max'}->{'value'}; 90# my $have_inodes = 1;
85 91# my $more_inode_free;
86my $free_inodes_on_mp1 = $total_inodes_on_mp1 - $used_inodes_on_mp1; 92# my $less_inode_free;
87my $free_inode_percentage_on_mp1 = $free_inodes_on_mp1 / ($total_inodes_on_mp1 / 100); 93# my $avg_inode_free_percentage;
88 94
89# print("free inodes on mp1: " . $free_inodes_on_mp1 . "\n"); 95# # Do we have an inode reading? might not be if the filesystem does not have a fixed number of inodes
90# print("total inodes on mp1: " . $total_inodes_on_mp1 . "\n"); 96# if ($result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}[2] && $result->{'mp_test_result'}->{'checks'}->[0]) {
91# print("free inode percentage on mp1: " . $free_inode_percentage_on_mp1 . "\n"); 97# my $used_inodes_on_mp1 = $result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}[2]->{'perfdata'}->[0]->{'value'}->{'value'};
92 98# my $total_inodes_on_mp1 = $result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}[2]->{'perfdata'}->[0]->{'max'}->{'value'};
93my $used_inodes_on_mp2 = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}[2]->{'perfdata'}->[0]->{'value'}->{'value'}; 99
94my $total_inodes_on_mp2 = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}[2]->{'perfdata'}->[0]->{'max'}->{'value'}; 100# my $free_inodes_on_mp1 = $total_inodes_on_mp1 - $used_inodes_on_mp1;
95my $free_inodes_on_mp2 = $total_inodes_on_mp2 - $used_inodes_on_mp2; 101# my $free_inode_percentage_on_mp1 = $free_inodes_on_mp1 / ($total_inodes_on_mp1 / 100);
96my $free_inode_percentage_on_mp2 = $free_inodes_on_mp2 / ($total_inodes_on_mp2 / 100); 102
97 103# # print("free inodes on mp1: " . $free_inodes_on_mp1 . "\n");
98# print("free inodes on mp2: " . $free_inodes_on_mp2 . "\n"); 104# # print("total inodes on mp1: " . $total_inodes_on_mp1 . "\n");
99# print("total inodes on mp2: " . $total_inodes_on_mp2 . "\n"); 105# # print("free inode percentage on mp1: " . $free_inode_percentage_on_mp1 . "\n");
100# print("free inode percentage on mp2: " . $free_inode_percentage_on_mp2 . "\n"); 106
101 107# my $used_inodes_on_mp2 = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}[2]->{'perfdata'}->[0]->{'value'}->{'value'};
102my $avg_inode_free_percentage = ceil(($free_inode_percentage_on_mp1 + $free_inode_percentage_on_mp2)/2); 108# my $total_inodes_on_mp2 = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}[2]->{'perfdata'}->[0]->{'max'}->{'value'};
103my ($more_inode_free, $less_inode_free); 109# my $free_inodes_on_mp2 = $total_inodes_on_mp2 - $used_inodes_on_mp2;
104if ($free_inode_percentage_on_mp1 > $free_inode_percentage_on_mp2) { 110# my $free_inode_percentage_on_mp2 = $free_inodes_on_mp2 / ($total_inodes_on_mp2 / 100);
105 $more_inode_free = $mountpoint_valid; 111
106 $less_inode_free = $mountpoint2_valid; 112# # print("free inodes on mp2: " . $free_inodes_on_mp2 . "\n");
107} elsif ($free_inode_percentage_on_mp1 < $free_inode_percentage_on_mp2) { 113# # print("total inodes on mp2: " . $total_inodes_on_mp2 . "\n");
108 $more_inode_free = $mountpoint2_valid; 114# # print("free inode percentage on mp2: " . $free_inode_percentage_on_mp2 . "\n");
109 $less_inode_free = $mountpoint_valid; 115
110} else { 116# my $avg_inode_free_percentage = ceil(($free_inode_percentage_on_mp1 + $free_inode_percentage_on_mp2)/2);
111 die "Two mountpoints with same inodes free - cannot do rest of test"; 117# if ($free_inode_percentage_on_mp1 > $free_inode_percentage_on_mp2) {
112} 118# $more_inode_free = $mountpoint_valid;
113if($free_inode_percentage_on_mp1 == $avg_inode_free_percentage || $free_inode_percentage_on_mp2 == $avg_inode_free_percentage) { 119# $less_inode_free = $mountpoint2_valid;
114 die "One mountpoints has average inodes free - cannot do rest of test"; 120# } elsif ($free_inode_percentage_on_mp1 < $free_inode_percentage_on_mp2) {
115} 121# $more_inode_free = $mountpoint2_valid;
122# $less_inode_free = $mountpoint_valid;
123# } else {
124# die "Two mountpoints with same inodes free - cannot do rest of test";
125# }
126# if($free_inode_percentage_on_mp1 == $avg_inode_free_percentage || $free_inode_percentage_on_mp2 == $avg_inode_free_percentage) {
127# die "One mountpoints has average inodes free - cannot do rest of test";
128# }
129# } else {
130# $have_inodes = 0;
131# }
116 132
117# Verify performance data 133# Verify performance data
118# First check absolute thresholds... 134# First check absolute thresholds...
@@ -144,8 +160,8 @@ my $warn_percth_data = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}[
144my $crit_percth_data = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}[0]->{'perfdata'}->[0]->{'crit'}->{'end'}->{'value'}; 160my $crit_percth_data = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}[0]->{'perfdata'}->[0]->{'crit'}->{'end'}->{'value'};
145my $total_percth_data = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}[0]->{'perfdata'}->[0]->{'max'}->{'value'}; 161my $total_percth_data = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}[0]->{'perfdata'}->[0]->{'max'}->{'value'};
146 162
147print("warn_percth_data: " . $warn_percth_data . "\n"); 163# print("warn_percth_data: " . $warn_percth_data . "\n");
148print("crit_percth_data: " . $crit_percth_data . "\n"); 164# print("crit_percth_data: " . $crit_percth_data . "\n");
149 165
150is (int($warn_percth_data), int((20/100)*$total_percth_data), "Wrong warning in perf data using percent thresholds. Got " . $warn_percth_data . " with total " . $total_percth_data); 166is (int($warn_percth_data), int((20/100)*$total_percth_data), "Wrong warning in perf data using percent thresholds. Got " . $warn_percth_data . " with total " . $total_percth_data);
151is (int($crit_percth_data), int((10/100)*$total_percth_data), "Wrong critical in perf data using percent thresholds. Got " . $crit_percth_data . " with total " . $total_percth_data); 167is (int($crit_percth_data), int((10/100)*$total_percth_data), "Wrong critical in perf data using percent thresholds. Got " . $crit_percth_data . " with total " . $total_percth_data);
@@ -161,6 +177,18 @@ cmp_ok( $result->return_code, "==", 0, "with JSON test format result should alwa
161my @perfdata2; 177my @perfdata2;
162@perfdata2[0] = $result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}->[0]->{'perfdata'}->[0]; 178@perfdata2[0] = $result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}->[0]->{'perfdata'}->[0];
163@perfdata2[1] = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}->[0]->{'perfdata'}->[0]; 179@perfdata2[1] = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}->[0]->{'perfdata'}->[0];
180
181my $free_on_mp1 = ($perfdata2[1]->{'max'}->{'value'} - $perfdata2[1]->{'value'}->{'value'});
182my $free_on_mp2 = ($perfdata2[0]->{'max'}->{'value'} - $perfdata2[0]->{'value'}->{'value'});
183# print "free on mp1: " . $free_on_mp1 . "\n";
184# print "free on mp2: " . $free_on_mp2 . "\n";
185# Either one of those should not be zero
186die "Cannot parse output: $_" unless (defined($free_on_mp1) && defined($free_on_mp2));
187
188my $free_on_all = $free_on_mp1 + $free_on_mp2;
189
190# print "free on all: " . $free_on_all . "\n";
191
164# Decrease precision of numbers since the the fs might be modified between the two runs 192# Decrease precision of numbers since the the fs might be modified between the two runs
165$perfdata2[0]->{'value'}->{'value'} = int($perfdata2[0]->{'value'}->{'value'} / 1000000); 193$perfdata2[0]->{'value'}->{'value'} = int($perfdata2[0]->{'value'}->{'value'} / 1000000);
166$perfdata2[1]->{'value'}->{'value'} = int($perfdata2[1]->{'value'}->{'value'} / 1000000); 194$perfdata2[1]->{'value'}->{'value'} = int($perfdata2[1]->{'value'}->{'value'} / 1000000);
@@ -175,12 +203,6 @@ $result = NPTest->testCmd( "./check_disk -w 1 -c 1 -p $more_free -p $less_free $
175cmp_ok( $result->return_code, "==", 0, "with JSON test format result should always be OK"); 203cmp_ok( $result->return_code, "==", 0, "with JSON test format result should always be OK");
176like($result->{'mp_test_result'}->{'state'}, "/OK/", "At least 1 MB available on $more_free and $less_free"); 204like($result->{'mp_test_result'}->{'state'}, "/OK/", "At least 1 MB available on $more_free and $less_free");
177 205
178my $free_mb_on_mp1 =$result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}->[0]->{'perfdata'}->[0]->{'value'}->{'value'} / (1024 * 1024);
179my $free_mb_on_mp2 = $result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}->[0]->{'perfdata'}->[0]->{'value'}->{'value'}/ (1024 * 1024);
180die "Cannot parse output: $_" unless ($free_mb_on_mp1 && $free_mb_on_mp2);
181
182my $free_mb_on_all = $free_mb_on_mp1 + $free_mb_on_mp2;
183
184 206
185$result = NPTest->testCmd( "./check_disk -e -w 1 -c 1 -p $more_free $output_format" ); 207$result = NPTest->testCmd( "./check_disk -e -w 1 -c 1 -p $more_free $output_format" );
186cmp_ok( $result->return_code, "==", 0, "with JSON test format result should always be OK"); 208cmp_ok( $result->return_code, "==", 0, "with JSON test format result should always be OK");
@@ -248,55 +270,45 @@ cmp_ok( $result->return_code, '==', 2, "And reversing arguments should not make
248 270
249 271
250# Basic inode checks for sizes 272# Basic inode checks for sizes
273SKIP: {
274 skip "No inode data", 14 if 1 eq 1;
251 275
252$result = NPTest->testCmd( "./check_disk --icritical 1% --iwarning 1% -p $more_inode_free" ); 276 # $result = NPTest->testCmd( "./check_disk --icritical 1% --iwarning 1% -p $more_inode_free" );
253is( $result->return_code, 0, "At least 1% free on inodes for both mountpoints"); 277 # is( $result->return_code, 0, "At least 1% free on inodes for both mountpoints");
254
255$result = NPTest->testCmd( "./check_disk -K 100% -W 100% -p $less_inode_free" );
256is( $result->return_code, 2, "Critical requesting 100% free inodes for both mountpoints");
257
258$result = NPTest->testCmd( "./check_disk --iwarning 1% --icritical 1% -p $more_inode_free -K 100% -W 100% -p $less_inode_free" );
259is( $result->return_code, 2, "Get critical on less_inode_free mountpoint $less_inode_free");
260
261$result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K 0% -p $less_inode_free" );
262is( $result->return_code, 1, "Get warning on less_inode_free, when checking average");
263
264$result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K $avg_inode_free_percentage% -p $more_inode_free ");
265is( $result->return_code, 0, "Get ok on more_inode_free when checking average");
266 278
267$result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K 0% -p $less_inode_free -W $avg_inode_free_percentage% -K $avg_inode_free_percentage% -p $more_inode_free" ); 279 # $result = NPTest->testCmd( "./check_disk -K 100% -W 100% -p $less_inode_free" );
268is ($result->return_code, 1, "Combine above two tests, get warning"); 280 # is( $result->return_code, 2, "Critical requesting 100% free inodes for both mountpoints");
269$all_disks = $result->output;
270 281
271$result = NPTest->testCmd( "./check_disk -e -W $avg_inode_free_percentage% -K 0% -p $less_inode_free -W $avg_inode_free_percentage% -K $avg_inode_free_percentage% -p $more_inode_free" ); 282 # $result = NPTest->testCmd( "./check_disk --iwarning 1% --icritical 1% -p $more_inode_free -K 100% -W 100% -p $less_inode_free" );
272isnt( $result->output, $all_disks, "-e gives different output"); 283 # is( $result->return_code, 2, "Get critical on less_inode_free mountpoint $less_inode_free");
273like( $result->output, qr/$less_inode_free/, "Found problem $less_inode_free");
274unlike( $result->only_output, qr/$more_inode_free\s/, "Has ignored $more_inode_free as not a problem");
275like( $result->perf_output, qr/$more_inode_free/, "But $more_inode_free is still in perf data");
276
277$result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K 0% -p $more_inode_free" );
278is( $result->return_code, 0, "Get ok on more_inode_free mountpoint, checking average");
279
280$result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K $avg_inode_free_percentage% -p $less_inode_free" );
281is( $result->return_code, 2, "Get critical on less_inode_free, checking average");
282 284
283$result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K 0% -p $more_inode_free -W $avg_inode_free_percentage% -K $avg_inode_free_percentage% -p $less_inode_free" ); 285 # $result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K 0% -p $less_inode_free" );
284is( $result->return_code, 2, "Combining above two tests, get critical"); 286 # is( $result->return_code, 1, "Get warning on less_inode_free, when checking average");
285 287
286$result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K $avg_inode_free_percentage% -p $less_inode_free -W $avg_inode_free_percentage% -K 0% -p $more_inode_free" ); 288 # $result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K $avg_inode_free_percentage% -p $more_inode_free ");
287cmp_ok( $result->return_code, '==', 2, "And reversing arguments should not make a difference"); 289 # is( $result->return_code, 0, "Get ok on more_inode_free when checking average");
288 290
291 # $result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K 0% -p $less_inode_free -W $avg_inode_free_percentage% -K $avg_inode_free_percentage% -p $more_inode_free" );
292 # is ($result->return_code, 1, "Combine above two tests, get warning");
293 # $all_disks = $result->output;
289 294
295 # $result = NPTest->testCmd( "./check_disk -e -W $avg_inode_free_percentage% -K 0% -p $less_inode_free -W $avg_inode_free_percentage% -K $avg_inode_free_percentage% -p $more_inode_free" );
296 # isnt( $result->output, $all_disks, "-e gives different output");
297 # like( $result->output, qr/$less_inode_free/, "Found problem $less_inode_free");
298 # unlike( $result->only_output, qr/$more_inode_free\s/, "Has ignored $more_inode_free as not a problem");
299 # like( $result->perf_output, qr/$more_inode_free/, "But $more_inode_free is still in perf data");
290 300
301 # $result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K 0% -p $more_inode_free" );
302 # is( $result->return_code, 0, "Get ok on more_inode_free mountpoint, checking average");
291 303
304 # $result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K $avg_inode_free_percentage% -p $less_inode_free" );
305 # is( $result->return_code, 2, "Get critical on less_inode_free, checking average");
292 306
307 # $result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K 0% -p $more_inode_free -W $avg_inode_free_percentage% -K $avg_inode_free_percentage% -p $less_inode_free" );
308 # is( $result->return_code, 2, "Combining above two tests, get critical");
293 309
294TODO: { 310 # $result = NPTest->testCmd( "./check_disk -W $avg_inode_free_percentage% -K $avg_inode_free_percentage% -p $less_inode_free -W $avg_inode_free_percentage% -K 0% -p $more_inode_free" );
295 local $TODO = "Invalid percent figures"; 311 # cmp_ok( $result->return_code, '==', 2, "And reversing arguments should not make a difference");
296 $result = NPTest->testCmd(
297 "./check_disk -w 10% -c 15% -p $mountpoint_valid"
298 );
299 cmp_ok( $result->return_code, '==', 3, "Invalid command line options" );
300} 312}
301 313
302$result = NPTest->testCmd( 314$result = NPTest->testCmd(
@@ -371,20 +383,23 @@ $result = NPTest->testCmd( "./check_disk -w 0% -c 0% -C -w 0% -c 0% -p $mountpoi
371cmp_ok( $result->return_code, "==", 0, "with JSON test format result should always be OK"); 383cmp_ok( $result->return_code, "==", 0, "with JSON test format result should always be OK");
372cmp_ok(scalar $result->{'mp_test_result'}->{'checks'}, '>', 1, "-C invokes matchall logic again"); 384cmp_ok(scalar $result->{'mp_test_result'}->{'checks'}, '>', 1, "-C invokes matchall logic again");
373 385
386my $value_below = ($free_on_all - (10**6)) % (10**5) * (10**5);
387my $value_above = $free_on_all + (10**6) % (10**5) * (10**5);
388
374# grouping: exit crit if the sum of free megs on mp1+mp2 is less than warn/crit 389# grouping: exit crit if the sum of free megs on mp1+mp2 is less than warn/crit
375$result = NPTest->testCmd( "./check_disk -w ". ($free_mb_on_all + 1) ." -c ". ($free_mb_on_all + 1) ." -g group -p $mountpoint_valid -p $mountpoint2_valid" ); 390$result = NPTest->testCmd( "./check_disk -u Bytes -w ". $value_above ." -c ". $value_above ." -g group -p $mountpoint_valid -p $mountpoint2_valid" );
376cmp_ok( $result->return_code, '==', 2, "grouping: exit crit if the sum of free megs on mp1+mp2 is less than warn/crit\nInstead received: " . $result->output); 391cmp_ok( $result->return_code, '==', 2, "grouping: exit crit if the sum of free megs on mp1+mp2 is less than warn/crit");
377 392
378# grouping: exit warning if the sum of free megs on mp1+mp2 is between -w and -c 393# grouping: exit warning if the sum of free megs on mp1+mp2 is between -w and -c
379$result = NPTest->testCmd( "./check_disk -w ". ($free_mb_on_all + 1) ." -c ". ($free_mb_on_all - 1) ." -g group -p $mountpoint_valid -p $mountpoint2_valid" ); 394$result = NPTest->testCmd( "./check_disk -u Bytes -w ". $value_above ." -c ". $value_below ." -g group -p $mountpoint_valid -p $mountpoint2_valid" );
380cmp_ok( $result->return_code, '==', 1, "grouping: exit warning if the sum of free megs on mp1+mp2 is between -w and -c "); 395cmp_ok( $result->return_code, '==', 1, "grouping: exit warning if the sum of free megs on mp1+mp2 is between -w and -c ");
381 396
382# grouping: exit ok if the sum of free megs on mp1+mp2 is more than warn/crit 397# grouping: exit ok if the sum of free megs on mp1+mp2 is more than warn/crit
383$result = NPTest->testCmd( "./check_disk -w ". ($free_mb_on_all - 1) ." -c ". ($free_mb_on_all - 1) ." -g group -p $mountpoint_valid -p $mountpoint2_valid" ); 398$result = NPTest->testCmd( "./check_disk -u Bytes -w ". $value_below ." -c ". $value_below ." -g group -p $mountpoint_valid -p $mountpoint2_valid" );
384cmp_ok( $result->return_code, '==', 0, "grouping: exit ok if the sum of free megs on mp1+mp2 is more than warn/crit"); 399cmp_ok( $result->return_code, '==', 0, "grouping: exit ok if the sum of free megs on mp1+mp2 is more than warn/crit");
385 400
386# grouping: exit unknown if group name is given after -p 401# grouping: exit unknown if group name is given after -p
387$result = NPTest->testCmd( "./check_disk -w ". ($free_mb_on_all - 1) ." -c ". ($free_mb_on_all - 1) ." -p $mountpoint_valid -g group -p $mountpoint2_valid" ); 402$result = NPTest->testCmd( "./check_disk -u Bytes -w ". $value_below ." -c ". $value_below ." -p $mountpoint_valid -g group -p $mountpoint2_valid" );
388cmp_ok( $result->return_code, '==', 3, "Invalid options: -p must come after groupname"); 403cmp_ok( $result->return_code, '==', 3, "Invalid options: -p must come after groupname");
389 404
390# regex: exit unknown if given regex is not compilable 405# regex: exit unknown if given regex is not compilable