summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/check_tcp.c26
-rw-r--r--plugins/t/check_tcp.t5
2 files changed, 22 insertions, 9 deletions
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)
347 if(match == -2 && len && !(flags & FLAG_HIDE_OUTPUT)) 347 if(match == -2 && len && !(flags & FLAG_HIDE_OUTPUT))
348 printf("Unexpected response from host/socket: %s", status); 348 printf("Unexpected response from host/socket: %s", status);
349 else { 349 else {
350 printf("%.3f second response time on ", elapsed_time); 350 if(match == -2)
351 printf("Unexpected response from host/socket on ");
352 else
353 printf("%.3f second response time on ", elapsed_time);
351 if(server_address[0] != '/') 354 if(server_address[0] != '/')
352 printf("port %d", server_port); 355 printf("port %d", server_port);
353 else 356 else
@@ -358,17 +361,24 @@ main (int argc, char **argv)
358 printf (" [%s]", status); 361 printf (" [%s]", status);
359 362
360 /* perf-data doesn't apply when server doesn't talk properly, 363 /* perf-data doesn't apply when server doesn't talk properly,
361 * so print all zeroes on warn and crit */ 364 * so print all zeroes on warn and criti. Use fperfdata since
365 * localisation settings can make different outputs */
362 if(match == -2) 366 if(match == -2)
363 printf ("|time=%fs;0.0;0.0;0.0;0.0", elapsed_time); 367 printf ("|%s",
368 fperfdata ("time", elapsed_time, "s",
369 TRUE, 0,
370 TRUE, 0,
371 TRUE, 0,
372 TRUE, socket_timeout)
373 );
364 else 374 else
365 printf("|%s", 375 printf("|%s",
366 fperfdata ("time", elapsed_time, "s", 376 fperfdata ("time", elapsed_time, "s",
367 TRUE, warning_time, 377 TRUE, warning_time,
368 TRUE, critical_time, 378 TRUE, critical_time,
369 TRUE, 0, 379 TRUE, 0,
370 TRUE, socket_timeout) 380 TRUE, socket_timeout)
371 ); 381 );
372 382
373 putchar('\n'); 383 putchar('\n');
374 return result; 384 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;
10use NPTest; 10use NPTest;
11 11
12use vars qw($tests); 12use vars qw($tests);
13BEGIN {$tests = 5; plan tests => $tests} 13BEGIN {$tests = 7; plan tests => $tests}
14 14
15my $host_tcp_http = getTestParameter( "host_tcp_http", "NP_HOST_TCP_HTTP", "localhost", 15my $host_tcp_http = getTestParameter( "host_tcp_http", "NP_HOST_TCP_HTTP", "localhost",
16 "A host providing the HTTP Service (a web server)" ); 16 "A host providing the HTTP Service (a web server)" );
@@ -23,12 +23,15 @@ my $hostname_invalid = getTestParameter( "hostname_invalid", "NP_HOSTNAME_IN
23 23
24my $successOutput = '/^TCP OK\s-\s+[0-9]?\.?[0-9]+ second response time on port [0-9]+/'; 24my $successOutput = '/^TCP OK\s-\s+[0-9]?\.?[0-9]+ second response time on port [0-9]+/';
25 25
26my $failedExpect = '/^TCP WARNING\s-\sUnexpected response from host/socket on port [0-9]+/';
27
26my $t; 28my $t;
27 29
28$t += checkCmd( "./check_tcp $host_tcp_http -p 80 -wt 300 -ct 600", 0, $successOutput ); 30$t += checkCmd( "./check_tcp $host_tcp_http -p 80 -wt 300 -ct 600", 0, $successOutput );
29$t += checkCmd( "./check_tcp $host_tcp_http -p 81 -wt 0 -ct 0 -to 1", 2 ); # use invalid port for this test 31$t += checkCmd( "./check_tcp $host_tcp_http -p 81 -wt 0 -ct 0 -to 1", 2 ); # use invalid port for this test
30$t += checkCmd( "./check_tcp $host_nonresponsive -p 80 -wt 0 -ct 0 -to 1", 2 ); 32$t += checkCmd( "./check_tcp $host_nonresponsive -p 80 -wt 0 -ct 0 -to 1", 2 );
31$t += checkCmd( "./check_tcp $hostname_invalid -p 80 -wt 0 -ct 0 -to 1", 2 ); 33$t += checkCmd( "./check_tcp $hostname_invalid -p 80 -wt 0 -ct 0 -to 1", 2 );
34$t += checkCmd( "./check_tcp $host_tcp_http -p 80 -s 'GET /\n' -e 'ThisShouldntMatch' -j", 1, $failedExpect );
32 35
33exit(0) if defined($Test::Harness::VERSION); 36exit(0) if defined($Test::Harness::VERSION);
34exit($tests - $t); 37exit($tests - $t);