check_tcp.t 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #! /usr/bin/perl -w -I ..
  2. #
  3. # TCP Connection Based Tests via check_tcp
  4. #
  5. #
  6. use strict;
  7. use Test;
  8. use vars qw($tests $has_ipv6);
  9. BEGIN {
  10. use NPTest;
  11. $has_ipv6 = NPTest::has_ipv6();
  12. $tests = $has_ipv6 ? 14 : 11;
  13. }
  14. my $host_tcp_http = getTestParameter( "host_tcp_http", "NP_HOST_TCP_HTTP", "localhost",
  15. "A host providing the HTTP Service (a web server)" );
  16. my $host_nonresponsive = getTestParameter( "host_nonresponsive", "NP_HOST_NONRESPONSIVE", "10.0.0.1",
  17. "The hostname of system not responsive to network requests" );
  18. my $hostname_invalid = getTestParameter( "hostname_invalid", "NP_HOSTNAME_INVALID", "nosuchhost",
  19. "An invalid (not known to DNS) hostname" );
  20. my $internet_access = getTestParameter( "NP_INTERNET_ACCESS",
  21. "Is this system directly connected to the internet?",
  22. "yes");
  23. my $successOutput = '/^TCP OK\s-\s+[0-9]?\.?[0-9]+ second response time on port [0-9]+/';
  24. my $failedExpect = '/^TCP WARNING\s-\sUnexpected response from host/socket on port [0-9]+/';
  25. my $t;
  26. $tests = $tests - 4 if $internet_access eq "no";
  27. plan tests => $tests;
  28. $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
  30. $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 );
  32. if($internet_access ne "no") {
  33. $t += checkCmd( "./check_tcp -S -D 1 -H www.verisign.com -p 443", 0 );
  34. $t += checkCmd( "./check_tcp -S -D 9000,1 -H www.verisign.com -p 443", 1 );
  35. $t += checkCmd( "./check_tcp -S -D 9000 -H www.verisign.com -p 443", 1 );
  36. $t += checkCmd( "./check_tcp -S -D 9000,8999 -H www.verisign.com -p 443", 2 );
  37. }
  38. # Need the \r\n to make it more standards compliant with web servers. Need the various quotes
  39. # so that perl doesn't interpret the \r\n and is passed onto command line correctly
  40. $t += checkCmd( "./check_tcp $host_tcp_http -p 80 -E -s ".'"GET / HTTP/1.1\r\n\r\n"'." -e 'ThisShouldntMatch' -j", 1, $failedExpect );
  41. # IPv6 checks
  42. if($has_ipv6) {
  43. $t += checkCmd( "./check_tcp $host_tcp_http -p 80 -wt 300 -ct 600 -6 ", 0, $successOutput );
  44. $t += checkCmd( "./check_tcp -6 -p 80 www.heise.de", 0 );
  45. }
  46. exit(0) if defined($Test::Harness::VERSION);
  47. exit($tests - $t);