Quellcode durchsuchen

Fixed output from -e in check_disk (Andreas Behal)

git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1490 f882894a-f735-0410-b71e-b25c423dba1c
Ton Voon vor 19 Jahren
Ursprung
Commit
bd9a612f6c
4 geänderte Dateien mit 30 neuen und 7 gelöschten Zeilen
  1. 7 0
      NPTest.pm
  2. 1 0
      THANKS.in
  3. 11 5
      plugins/check_disk.c
  4. 11 2
      plugins/t/check_disk.t

+ 7 - 0
NPTest.pm

@@ -603,6 +603,13 @@ sub perf_output {
 	return $1 || "";
 }
 
+sub only_output {
+	my $self = shift;
+	$_ = $self->{output};
+	/(.*?)\|/;
+	return $1 || "";
+}
+
 sub testCmd {
 	my $class = shift;
 	my $command = shift or die "No command passed to testCmd";

+ 1 - 0
THANKS.in

@@ -191,3 +191,4 @@ Lance Albertson
 Nathan Vonnahme
 Mike Emigh
 Christian Mies
+Andreas Behal

+ 11 - 5
plugins/check_disk.c

@@ -206,6 +206,10 @@ main (int argc, char **argv)
 
   /* Process for every path in list */
   for (path = path_select_list; path; path=path->name_next) {
+
+    /* reset disk result */
+    disk_result = STATE_UNKNOWN;
+
     me = path->best_match;
 
     /* Filters */
@@ -258,23 +262,25 @@ main (int argc, char **argv)
 
       temp_result = get_status(dfree_units, path->freespace_units);
       if (verbose >=3) printf("Freespace_units result=%d\n", temp_result);
-      result = max_state( result, temp_result );
+      disk_result = max_state( disk_result, temp_result );
 
       temp_result = get_status(dfree_pct, path->freespace_percent);
       if (verbose >=3) printf("Freespace%% result=%d\n", temp_result);
-      result = max_state( result, temp_result );
+      disk_result = max_state( disk_result, temp_result );
 
       temp_result = get_status(dused_units, path->usedspace_units);
       if (verbose >=3) printf("Usedspace_units result=%d\n", temp_result);
-      result = max_state( result, temp_result );
+      disk_result = max_state( disk_result, temp_result );
 
       temp_result = get_status(dused_pct, path->usedspace_percent);
       if (verbose >=3) printf("Usedspace_percent result=%d\n", temp_result);
-      result = max_state( result, temp_result );
+      disk_result = max_state( disk_result, temp_result );
 
       temp_result = get_status(dused_inodes_percent, path->usedinodes_percent);
       if (verbose >=3) printf("Usedinodes_percent result=%d\n", temp_result);
-      result = max_state( result, temp_result );
+      disk_result = max_state( disk_result, temp_result );
+
+      result = max_state(result, disk_result);
 
       asprintf (&perf, "%s %s", perf,
                 perfdata ((!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir,

+ 11 - 2
plugins/t/check_disk.t

@@ -22,7 +22,7 @@ my $mountpoint2_valid = getTestParameter( "NP_MOUNTPOINT2_VALID", "Path to anoth
 if ($mountpoint_valid eq "" or $mountpoint2_valid eq "") {
 	plan skip_all => "Need 2 mountpoints to test";
 } else {
-	plan tests => 35;
+	plan tests => 39;
 }
 
 $result = NPTest->testCmd( 
@@ -85,6 +85,16 @@ $result = NPTest->testCmd(
 	"./check_disk -w $avg_free% -c 0% -p $less_free -w $avg_free% -c $avg_free% -p $more_free" 
 	);
 cmp_ok( $result->return_code, "==", 1, "Combining above two tests, get warning");
+my $all_disks = $result->output;
+
+$result = NPTest->testCmd(
+	"./check_disk -e -w $avg_free% -c 0% -p $less_free -w $avg_free% -c $avg_free% -p $more_free" 
+	);
+isnt( $result->output, $all_disks, "-e gives different output");
+like( $result->output, qr/$less_free/, "Found problem $less_free");
+unlike( $result->only_output, qr/$more_free/, "Has ignored $more_free as not a problem");
+like( $result->perf_output, qr/$more_free/, "But $more_free is still in perf data");
+
 
 
 
@@ -97,7 +107,6 @@ $result = NPTest->testCmd(
 	"./check_disk -w $avg_free% -c $avg_free% -p $less_free"
 	);
 cmp_ok( $result->return_code, '==', 2, "Get critical on less_free, checking avg_free");
-
 $result = NPTest->testCmd(
 	"./check_disk -w $avg_free% -c 0% -p $more_free -w $avg_free% -c $avg_free% -p $less_free"
 	);