Code

Fix reporting bug using expect, affecting (not fixing) Debian bug #392610: check_jabb...
authorThomas Guyot-Sionnest <dermoth@users.sourceforge.net>
Tue, 30 Jan 2007 05:01:00 +0000 (05:01 +0000)
committerThomas Guyot-Sionnest <dermoth@users.sourceforge.net>
Tue, 30 Jan 2007 05:01:00 +0000 (05:01 +0000)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1596 f882894a-f735-0410-b71e-b25c423dba1c

plugins/check_tcp.c
plugins/t/check_tcp.t

index 7e1bd38b043be9059075803aa1fd33ec1c192dd9..8187bcde11f654bed30842ef6ab09d90cbf9b206 100644 (file)
@@ -347,7 +347,10 @@ main (int argc, char **argv)
        if(match == -2 && len && !(flags & FLAG_HIDE_OUTPUT))
                printf("Unexpected response from host/socket: %s", status);
        else {
-               printf("%.3f second response time on ", elapsed_time);
+               if(match == -2)
+                       printf("Unexpected response from host/socket on ");
+               else
+                       printf("%.3f second response time on ", elapsed_time);
                if(server_address[0] != '/')
                        printf("port %d", server_port);
                else
@@ -358,17 +361,24 @@ main (int argc, char **argv)
                printf (" [%s]", status);
 
        /* perf-data doesn't apply when server doesn't talk properly,
-        * so print all zeroes on warn and crit */
+        * so print all zeroes on warn and criti. Use fperfdata since
+        * localisation settings can make different outputs */
        if(match == -2)
-               printf ("|time=%fs;0.0;0.0;0.0;0.0", elapsed_time);
+               printf ("|%s",
+                               fperfdata ("time", elapsed_time, "s",
+                               TRUE, 0,
+                               TRUE, 0,
+                               TRUE, 0,
+                               TRUE, socket_timeout)
+                       );
        else
                printf("|%s",
                                fperfdata ("time", elapsed_time, "s",
-                                  TRUE, warning_time,
-                                  TRUE, critical_time,
-                                  TRUE, 0,
-                                  TRUE, socket_timeout)
-                     );
+                               TRUE, warning_time,
+                               TRUE, critical_time,
+                               TRUE, 0,
+                               TRUE, socket_timeout)
+                       );
 
        putchar('\n');
        return result;
index ffe559dfcd729c3cec6274fd640b687394adc37f..67e527a0f78a6c7f1440d9f46df862020fac5f9c 100644 (file)
@@ -10,7 +10,7 @@ use Test;
 use NPTest;
 
 use vars qw($tests);
-BEGIN {$tests = 5; plan tests => $tests}
+BEGIN {$tests = 7; plan tests => $tests}
 
 my $host_tcp_http      = getTestParameter( "host_tcp_http",      "NP_HOST_TCP_HTTP",      "localhost",
                                           "A host providing the HTTP Service (a web server)" );
@@ -23,12 +23,15 @@ my $hostname_invalid   = getTestParameter( "hostname_invalid",   "NP_HOSTNAME_IN
 
 my $successOutput = '/^TCP OK\s-\s+[0-9]?\.?[0-9]+ second response time on port [0-9]+/';
 
+my $failedExpect = '/^TCP WARNING\s-\sUnexpected response from host/socket on port [0-9]+/';
+
 my $t;
 
 $t += checkCmd( "./check_tcp $host_tcp_http      -p 80 -wt 300 -ct 600",       0, $successOutput );
 $t += checkCmd( "./check_tcp $host_tcp_http      -p 81 -wt   0 -ct   0 -to 1", 2 ); # use invalid port for this test
 $t += checkCmd( "./check_tcp $host_nonresponsive -p 80 -wt   0 -ct   0 -to 1", 2 );
 $t += checkCmd( "./check_tcp $hostname_invalid   -p 80 -wt   0 -ct   0 -to 1", 2 );
+$t += checkCmd( "./check_tcp $host_tcp_http      -p 80 -s 'GET /\n' -e 'ThisShouldntMatch' -j", 1, $failedExpect );
 
 exit(0) if defined($Test::Harness::VERSION);
 exit($tests - $t);