From e8a3864bca84196a20c6d5566671852b6e80370e Mon Sep 17 00:00:00 2001 From: Thomas Guyot-Sionnest Date: Tue, 30 Jan 2007 05:01:00 +0000 Subject: Fix reporting bug using expect, affecting (not fixing) Debian bug #392610: check_jabber always return warning git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1596 f882894a-f735-0410-b71e-b25c423dba1c --- plugins/check_tcp.c | 26 ++++++++++++++++++-------- plugins/t/check_tcp.t | 5 ++++- 2 files changed, 22 insertions(+), 9 deletions(-) (limited to 'plugins') diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c index 7e1bd38b..8187bcde 100644 --- a/plugins/check_tcp.c +++ b/plugins/check_tcp.c @@ -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; diff --git a/plugins/t/check_tcp.t b/plugins/t/check_tcp.t index ffe559df..67e527a0 100644 --- a/plugins/t/check_tcp.t +++ b/plugins/t/check_tcp.t @@ -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); -- cgit v1.2.3-74-g34f1