Code

Converted check_ping.t to new-style testcases. Added test case for check_icmp -
[nagiosplug.git] / plugins-root / t / check_icmp.t
1 #! /usr/bin/perl -w -I ..
2 #
3 # Ping Response Tests via check_icmp
4 #
5 # $Id$
6 #
8 use strict;
9 use Test::More;
10 use NPTest;
12 my $allow_sudo = getTestParameter( "NP_ALLOW_SUDO",
13         "If sudo is setup for this user to run any command as root ('yes' to allow)",
14         "no" );
16 if ($allow_sudo eq "yes") {
17         plan tests => 10;
18 } else {
19         plan skip_all => "Need sudo to test check_icmp";
20 }
22 my $successOutput = '/OK - .*?: rta [\d\.]+ms, lost \d%/';
23 my $failureOutput = '/(WARNING|CRITICAL) - .*?: rta [\d\.]+ms, lost \d%/';
25 my $host_responsive    = getTestParameter( "NP_HOST_RESPONSIVE",
26                                 "The hostname of system responsive to network requests",
27                                 "localhost" );
29 my $host_nonresponsive = getTestParameter( "NP_HOST_NONRESPONSIVE",
30                                 "The hostname of system not responsive to network requests",
31                                 "10.0.0.1" );
33 my $hostname_invalid   = getTestParameter( "NP_HOSTNAME_INVALID",
34                                 "An invalid (not known to DNS) hostname",
35                                 "nosuchhost" );
37 my $res;
39 $res = NPTest->testCmd(
40         "sudo ./check_icmp -H $host_responsive -w 10000ms,100% -c 10000ms,100%"
41         );
42 is( $res->return_code, 0, "Syntax ok" );
43 like( $res->output, $successOutput, "Output OK" );
45 $res = NPTest->testCmd(
46         "sudo ./check_icmp -H $host_responsive -w 0ms,0% -c 10000ms,100%"
47         );
48 is( $res->return_code, 1, "Syntax ok, with forced warning" );
49 like( $res->output, $failureOutput, "Output OK" );
51 $res = NPTest->testCmd(
52         "sudo ./check_icmp -H $host_responsive -w 0,0% -c 0,0%"
53         );
54 is( $res->return_code, 2, "Syntax ok, with forced critical" );
55 like( $res->output, $failureOutput, "Output OK" );
57 $res = NPTest->testCmd(
58         "sudo ./check_icmp -H $host_nonresponsive -w 10000ms,100% -c 10000ms,100%"
59         );
60 is( $res->return_code, 2, "Timeout - host nonresponsive" );
61 like( $res->output, '/100%/', "Error contains '100%' string (for 100% packet loss)" );
63 $res = NPTest->testCmd(
64         "sudo ./check_icmp -w 10000ms,100% -c 10000ms,100%"
65         );
66 is( $res->return_code, 3, "No hostname" );
67 like( $res->output, '/No hosts to check/', "Output with appropriate error message");