diff options
author | Sven Nierlein <sven@nierlein.de> | 2013-08-21 15:59:56 +0200 |
---|---|---|
committer | Sven Nierlein <sven@nierlein.de> | 2013-08-21 15:59:56 +0200 |
commit | d57941c4d2e62313f7aafacddcd92c2201381ad1 (patch) | |
tree | 22e340b4201da0572c79596f087eeff4c773dc68 /plugins/t | |
parent | 461cea42615936f0fdf9c75fa72d0fc0a88eaff6 (diff) | |
download | monitoring-plugins-d57941c4d2e62313f7aafacddcd92c2201381ad1.tar.gz |
check_snmp: added threshold tests
Diffstat (limited to 'plugins/t')
-rw-r--r-- | plugins/t/check_snmp.t | 293 |
1 files changed, 156 insertions, 137 deletions
diff --git a/plugins/t/check_snmp.t b/plugins/t/check_snmp.t index 04bf500b..6de5f299 100644 --- a/plugins/t/check_snmp.t +++ b/plugins/t/check_snmp.t | |||
@@ -8,145 +8,164 @@ use strict; | |||
8 | use Test::More; | 8 | use Test::More; |
9 | use NPTest; | 9 | use NPTest; |
10 | 10 | ||
11 | my $tests = 8+42+2+2; | 11 | BEGIN { |
12 | plan tests => $tests; | 12 | plan skip_all => 'check_snmp is not compiled' unless -x "./check_snmp"; |
13 | plan tests => 60; | ||
14 | } | ||
15 | |||
13 | my $res; | 16 | my $res; |
14 | 17 | ||
18 | my $host_snmp = getTestParameter( "host_snmp", "NP_HOST_SNMP", "localhost", | ||
19 | "A host providing an SNMP Service"); | ||
20 | |||
21 | my $snmp_community = getTestParameter( "snmp_community", "NP_SNMP_COMMUNITY", "public", | ||
22 | "The SNMP Community string for SNMP Testing (assumes snmp v1)" ); | ||
23 | |||
24 | my $host_nonresponsive = getTestParameter( "host_nonresponsive", "NP_HOST_NONRESPONSIVE", "10.0.0.1", | ||
25 | "The hostname of system not responsive to network requests" ); | ||
26 | |||
27 | my $hostname_invalid = getTestParameter( "hostname_invalid", "NP_HOSTNAME_INVALID", "nosuchhost", | ||
28 | "An invalid (not known to DNS) hostname" ); | ||
29 | |||
30 | $res = NPTest->testCmd( "./check_snmp -t 1" ); | ||
31 | is( $res->return_code, 3, "No host name" ); | ||
32 | is( $res->output, "No host specified" ); | ||
33 | |||
34 | $res = NPTest->testCmd( "./check_snmp -H fakehostname" ); | ||
35 | is( $res->return_code, 3, "No OIDs specified" ); | ||
36 | is( $res->output, "No OIDs specified" ); | ||
37 | |||
38 | $res = NPTest->testCmd( "./check_snmp -H fakehost -o oids -P 3 --seclevel=rubbish" ); | ||
39 | is( $res->return_code, 3, "Invalid seclevel" ); | ||
40 | like( $res->output, "/check_snmp: Invalid seclevel - rubbish/" ); | ||
41 | |||
42 | $res = NPTest->testCmd( "./check_snmp -H fakehost -o oids -P 3c" ); | ||
43 | is( $res->return_code, 3, "Invalid protocol" ); | ||
44 | like( $res->output, "/check_snmp: Invalid SNMP version - 3c/" ); | ||
45 | |||
46 | SKIP: { | ||
47 | skip "no snmp host defined", 38 if ( ! $host_snmp ); | ||
48 | |||
49 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0 -w 1: -c 1:"); | ||
50 | cmp_ok( $res->return_code, '==', 0, "Exit OK when querying uptime" ); | ||
51 | like($res->output, '/^SNMP OK - (\d+)/', "String contains SNMP OK"); | ||
52 | $res->output =~ /^SNMP OK - (\d+)/; | ||
53 | my $value = $1; | ||
54 | cmp_ok( $value, ">", 0, "Got a time value" ); | ||
55 | like($res->perf_output, "/sysUpTime.*$1/", "Got perfdata with value '$1' in it"); | ||
56 | |||
57 | |||
58 | # some more threshold tests | ||
59 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0 -c 1"); | ||
60 | cmp_ok( $res->return_code, '==', 2, "Threshold test -c 1" ); | ||
61 | |||
62 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0 -c 1:"); | ||
63 | cmp_ok( $res->return_code, '==', 0, "Threshold test -c 1:" ); | ||
64 | |||
65 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0 -c ~:1"); | ||
66 | cmp_ok( $res->return_code, '==', 2, "Threshold test -c ~:1" ); | ||
67 | |||
68 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0 -c 1:10"); | ||
69 | cmp_ok( $res->return_code, '==', 2, "Threshold test -c 1:10" ); | ||
70 | |||
71 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0 -c \@1:10"); | ||
72 | cmp_ok( $res->return_code, '==', 0, "Threshold test -c \@1:10" ); | ||
73 | |||
74 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0 -c 10:1"); | ||
75 | cmp_ok( $res->return_code, '==', 0, "Threshold test -c 10:1" ); | ||
76 | |||
77 | |||
78 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o .1.3.6.1.2.1.1.3.0 -w 1: -c 1:"); | ||
79 | cmp_ok( $res->return_code, '==', 0, "Test with numeric OID (no mibs loaded)" ); | ||
80 | like($res->output, '/^SNMP OK - \d+/', "String contains SNMP OK"); | ||
81 | |||
82 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysDescr.0"); | ||
83 | cmp_ok( $res->return_code, '==', 0, "Exit OK when querying sysDescr" ); | ||
84 | unlike($res->perf_output, '/sysDescr/', "Perfdata doesn't contain string values"); | ||
85 | |||
86 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysDescr.0,system.sysDescr.0"); | ||
87 | cmp_ok( $res->return_code, '==', 0, "Exit OK when querying two string OIDs, comma-separated" ); | ||
88 | like($res->output, '/^SNMP OK - /', "String contains SNMP OK"); | ||
89 | |||
90 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysDescr.0 -o system.sysDescr.0"); | ||
91 | cmp_ok( $res->return_code, '==', 0, "Exit OK when querying two string OIDs, repeated option" ); | ||
92 | like($res->output, '/^SNMP OK - /', "String contains SNMP OK"); | ||
93 | |||
94 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w 1:1 -c 1:1"); | ||
95 | cmp_ok( $res->return_code, '==', 0, "Exit OK when querying hrSWRunIndex.1" ); | ||
96 | like($res->output, '/^SNMP OK - 1\s.*$/', "String fits SNMP OK and output format"); | ||
97 | |||
98 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w 0 -c 1:"); | ||
99 | cmp_ok( $res->return_code, '==', 1, "Exit WARNING when querying hrSWRunIndex.1 and warn-th doesn't apply " ); | ||
100 | like($res->output, '/^SNMP WARNING - \*1\*\s.*$/', "String matches SNMP WARNING and output format"); | ||
101 | |||
102 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w :0 -c 0"); | ||
103 | cmp_ok( $res->return_code, '==', 2, "Exit CRITICAL when querying hrSWRunIndex.1 and crit-th doesn't apply" ); | ||
104 | like($res->output, '/^SNMP CRITICAL - \*1\*\s.*$/', "String matches SNMP CRITICAL and output format"); | ||
105 | |||
106 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o ifIndex.2,ifIndex.1 -w 1:2 -c 1:2"); | ||
107 | cmp_ok( $res->return_code, '==', 0, "Checking two OIDs at once" ); | ||
108 | like($res->output, "/^SNMP OK - 2 1/", "Got two values back" ); | ||
109 | like( $res->perf_output, "/ifIndex.2=2/", "Got 1st perf data" ); | ||
110 | like( $res->perf_output, "/ifIndex.1=1/", "Got 2nd perf data" ); | ||
111 | |||
112 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o ifIndex.2,ifIndex.1 -w 1:2,1:2 -c 2:2,2:2"); | ||
113 | cmp_ok( $res->return_code, '==', 2, "Checking critical threshold is passed if any one value crosses" ); | ||
114 | like($res->output, "/^SNMP CRITICAL - 2 *1*/", "Got two values back" ); | ||
115 | like( $res->perf_output, "/ifIndex.2=2/", "Got 1st perf data" ); | ||
116 | like( $res->perf_output, "/ifIndex.1=1/", "Got 2nd perf data" ); | ||
117 | |||
118 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrStorage.hrMemorySize.0,host.hrSystem.hrSystemProcesses.0 -w 1:,1: -c 1:,1:"); | ||
119 | cmp_ok( $res->return_code, '==', 0, "Exit OK when querying hrMemorySize and hrSystemProcesses"); | ||
120 | like($res->output, '/^SNMP OK - \d+ \d+/', "String contains hrMemorySize and hrSystemProcesses"); | ||
121 | |||
122 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w \@:0 -c \@0"); | ||
123 | cmp_ok( $res->return_code, '==', 0, "Exit OK with inside-range thresholds"); | ||
124 | like($res->output, '/^SNMP OK - 1\s.*$/', "String matches SNMP OK and output format"); | ||
125 | |||
126 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o enterprises.ucdavis.laTable.laEntry.laLoad.3"); | ||
127 | $res->output =~ m/^SNMP OK - (\d+\.\d{2})\s.*$/; | ||
128 | my $lower = $1 - 0.05; | ||
129 | my $higher = $1 + 0.05; | ||
130 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o enterprises.ucdavis.laTable.laEntry.laLoad.3 -w $lower -c $higher"); | ||
131 | cmp_ok( $res->return_code, '==', 1, "Exit WARNING with fractionnal arguments"); | ||
132 | |||
133 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0,host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w ,:0 -c ,:2"); | ||
134 | cmp_ok( $res->return_code, '==', 1, "Exit WARNING on 2nd threshold"); | ||
135 | like($res->output, '/^SNMP WARNING - Timeticks:\s\(\d+\)\s+(?:\d+ days?,\s+)?\d+:\d+:\d+\.\d+\s+\*1\*\s.*$/', "First OID returned as string, 2nd checked for thresholds"); | ||
136 | |||
137 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w '' -c ''"); | ||
138 | cmp_ok( $res->return_code, '==', 0, "Empty thresholds doesn't crash"); | ||
139 | |||
140 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrStorage.hrMemorySize.0,host.hrSystem.hrSystemProcesses.0 -w ,,1 -c ,,2"); | ||
141 | cmp_ok( $res->return_code, '==', 0, "Skipping first two thresholds on 2 OID check"); | ||
142 | like($res->output, '/^SNMP OK - \d+ \w+ \d+\s.*$/', "Skipping first two thresholds, result printed rather than parsed"); | ||
143 | |||
144 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrStorage.hrMemorySize.0,host.hrSystem.hrSystemProcesses.0 -w ,, -c ,,"); | ||
145 | cmp_ok( $res->return_code, '==', 0, "Skipping all thresholds"); | ||
146 | like($res->output, '/^SNMP OK - \d+ \w+ \d+\s.*$/', "Skipping all thresholds, result printed rather than parsed"); | ||
147 | |||
148 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0 -c 1000000000000: -u '1/100 sec'"); | ||
149 | cmp_ok( $res->return_code, '==', 2, "Timetick used as a threshold"); | ||
150 | like($res->output, '/^SNMP CRITICAL - \*\d+\* 1\/100 sec.*$/', "Timetick used as a threshold, parsed as numeric"); | ||
151 | |||
152 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0"); | ||
153 | cmp_ok( $res->return_code, '==', 0, "Timetick used as a string"); | ||
154 | like($res->output, '/^SNMP OK - Timeticks:\s\(\d+\)\s+(?:\d+ days?,\s+)?\d+:\d+:\d+\.\d+\s.*$/', "Timetick used as a string, result printed rather than parsed"); | ||
155 | } | ||
156 | |||
157 | # These checks need a complete command line. An invalid community is used so | ||
158 | # the tests can run on hosts w/o snmp host/community in NPTest.cache. Execution will fail anyway | ||
15 | SKIP: { | 159 | SKIP: { |
16 | skip "check_snmp is not compiled", $tests if ( ! -x "./check_snmp" ); | 160 | skip "no non responsive host defined", 2 if ( ! $host_nonresponsive ); |
17 | 161 | $res = NPTest->testCmd( "./check_snmp -H $host_nonresponsive -C np_foobar -o system.sysUpTime.0 -w 1: -c 1:"); | |
18 | my $host_snmp = getTestParameter( "host_snmp", "NP_HOST_SNMP", "localhost", | 162 | cmp_ok( $res->return_code, '==', 3, "Exit UNKNOWN with non responsive host" ); |
19 | "A host providing an SNMP Service"); | 163 | like($res->output, '/External command error: Timeout: No Response from /', "String matches timeout problem"); |
20 | 164 | } | |
21 | my $snmp_community = getTestParameter( "snmp_community", "NP_SNMP_COMMUNITY", "public", | ||
22 | "The SNMP Community string for SNMP Testing (assumes snmp v1)" ); | ||
23 | |||
24 | my $host_nonresponsive = getTestParameter( "host_nonresponsive", "NP_HOST_NONRESPONSIVE", "10.0.0.1", | ||
25 | "The hostname of system not responsive to network requests" ); | ||
26 | |||
27 | my $hostname_invalid = getTestParameter( "hostname_invalid", "NP_HOSTNAME_INVALID", "nosuchhost", | ||
28 | "An invalid (not known to DNS) hostname" ); | ||
29 | |||
30 | $res = NPTest->testCmd( "./check_snmp -t 1" ); | ||
31 | is( $res->return_code, 3, "No host name" ); | ||
32 | is( $res->output, "No host specified" ); | ||
33 | |||
34 | $res = NPTest->testCmd( "./check_snmp -H fakehostname" ); | ||
35 | is( $res->return_code, 3, "No OIDs specified" ); | ||
36 | is( $res->output, "No OIDs specified" ); | ||
37 | |||
38 | $res = NPTest->testCmd( "./check_snmp -H fakehost -o oids -P 3 --seclevel=rubbish" ); | ||
39 | is( $res->return_code, 3, "Invalid seclevel" ); | ||
40 | like( $res->output, "/check_snmp: Invalid seclevel - rubbish/" ); | ||
41 | |||
42 | $res = NPTest->testCmd( "./check_snmp -H fakehost -o oids -P 3c" ); | ||
43 | is( $res->return_code, 3, "Invalid protocol" ); | ||
44 | like( $res->output, "/check_snmp: Invalid SNMP version - 3c/" ); | ||
45 | |||
46 | SKIP: { | ||
47 | skip "no snmp host defined", 38 if ( ! $host_snmp ); | ||
48 | |||
49 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0 -w 1: -c 1:"); | ||
50 | cmp_ok( $res->return_code, '==', 0, "Exit OK when querying uptime" ); | ||
51 | like($res->output, '/^SNMP OK - (\d+)/', "String contains SNMP OK"); | ||
52 | $res->output =~ /^SNMP OK - (\d+)/; | ||
53 | my $value = $1; | ||
54 | cmp_ok( $value, ">", 0, "Got a time value" ); | ||
55 | like($res->perf_output, "/sysUpTime.*$1/", "Got perfdata with value '$1' in it"); | ||
56 | |||
57 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o .1.3.6.1.2.1.1.3.0 -w 1: -c 1:"); | ||
58 | cmp_ok( $res->return_code, '==', 0, "Test with numeric OID (no mibs loaded)" ); | ||
59 | like($res->output, '/^SNMP OK - \d+/', "String contains SNMP OK"); | ||
60 | |||
61 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysDescr.0"); | ||
62 | cmp_ok( $res->return_code, '==', 0, "Exit OK when querying sysDescr" ); | ||
63 | unlike($res->perf_output, '/sysDescr/', "Perfdata doesn't contain string values"); | ||
64 | |||
65 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysDescr.0,system.sysDescr.0"); | ||
66 | cmp_ok( $res->return_code, '==', 0, "Exit OK when querying two string OIDs, comma-separated" ); | ||
67 | like($res->output, '/^SNMP OK - /', "String contains SNMP OK"); | ||
68 | |||
69 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysDescr.0 -o system.sysDescr.0"); | ||
70 | cmp_ok( $res->return_code, '==', 0, "Exit OK when querying two string OIDs, repeated option" ); | ||
71 | like($res->output, '/^SNMP OK - /', "String contains SNMP OK"); | ||
72 | |||
73 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w 1:1 -c 1:1"); | ||
74 | cmp_ok( $res->return_code, '==', 0, "Exit OK when querying hrSWRunIndex.1" ); | ||
75 | like($res->output, '/^SNMP OK - 1\s.*$/', "String fits SNMP OK and output format"); | ||
76 | |||
77 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w 0 -c 1:"); | ||
78 | cmp_ok( $res->return_code, '==', 1, "Exit WARNING when querying hrSWRunIndex.1 and warn-th doesn't apply " ); | ||
79 | like($res->output, '/^SNMP WARNING - \*1\*\s.*$/', "String matches SNMP WARNING and output format"); | ||
80 | |||
81 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w :0 -c 0"); | ||
82 | cmp_ok( $res->return_code, '==', 2, "Exit CRITICAL when querying hrSWRunIndex.1 and crit-th doesn't apply" ); | ||
83 | like($res->output, '/^SNMP CRITICAL - \*1\*\s.*$/', "String matches SNMP CRITICAL and output format"); | ||
84 | |||
85 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o ifIndex.2,ifIndex.1 -w 1:2 -c 1:2"); | ||
86 | cmp_ok( $res->return_code, '==', 0, "Checking two OIDs at once" ); | ||
87 | like($res->output, "/^SNMP OK - 2 1/", "Got two values back" ); | ||
88 | like( $res->perf_output, "/ifIndex.2=2/", "Got 1st perf data" ); | ||
89 | like( $res->perf_output, "/ifIndex.1=1/", "Got 2nd perf data" ); | ||
90 | |||
91 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o ifIndex.2,ifIndex.1 -w 1:2,1:2 -c 2:2,2:2"); | ||
92 | cmp_ok( $res->return_code, '==', 2, "Checking critical threshold is passed if any one value crosses" ); | ||
93 | like($res->output, "/^SNMP CRITICAL - 2 *1*/", "Got two values back" ); | ||
94 | like( $res->perf_output, "/ifIndex.2=2/", "Got 1st perf data" ); | ||
95 | like( $res->perf_output, "/ifIndex.1=1/", "Got 2nd perf data" ); | ||
96 | |||
97 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrStorage.hrMemorySize.0,host.hrSystem.hrSystemProcesses.0 -w 1:,1: -c 1:,1:"); | ||
98 | cmp_ok( $res->return_code, '==', 0, "Exit OK when querying hrMemorySize and hrSystemProcesses"); | ||
99 | like($res->output, '/^SNMP OK - \d+ \d+/', "String contains hrMemorySize and hrSystemProcesses"); | ||
100 | |||
101 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w \@:0 -c \@0"); | ||
102 | cmp_ok( $res->return_code, '==', 0, "Exit OK with inside-range thresholds"); | ||
103 | like($res->output, '/^SNMP OK - 1\s.*$/', "String matches SNMP OK and output format"); | ||
104 | |||
105 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o enterprises.ucdavis.laTable.laEntry.laLoad.3"); | ||
106 | $res->output =~ m/^SNMP OK - (\d+\.\d{2})\s.*$/; | ||
107 | my $lower = $1 - 0.05; | ||
108 | my $higher = $1 + 0.05; | ||
109 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o enterprises.ucdavis.laTable.laEntry.laLoad.3 -w $lower -c $higher"); | ||
110 | cmp_ok( $res->return_code, '==', 1, "Exit WARNING with fractionnal arguments"); | ||
111 | |||
112 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0,host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w ,:0 -c ,:2"); | ||
113 | cmp_ok( $res->return_code, '==', 1, "Exit WARNING on 2nd threshold"); | ||
114 | like($res->output, '/^SNMP WARNING - Timeticks:\s\(\d+\)\s+(?:\d+ days?,\s+)?\d+:\d+:\d+\.\d+\s+\*1\*\s.*$/', "First OID returned as string, 2nd checked for thresholds"); | ||
115 | |||
116 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w '' -c ''"); | ||
117 | cmp_ok( $res->return_code, '==', 0, "Empty thresholds doesn't crash"); | ||
118 | |||
119 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrStorage.hrMemorySize.0,host.hrSystem.hrSystemProcesses.0 -w ,,1 -c ,,2"); | ||
120 | cmp_ok( $res->return_code, '==', 0, "Skipping first two thresholds on 2 OID check"); | ||
121 | like($res->output, '/^SNMP OK - \d+ \w+ \d+\s.*$/', "Skipping first two thresholds, result printed rather than parsed"); | ||
122 | |||
123 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrStorage.hrMemorySize.0,host.hrSystem.hrSystemProcesses.0 -w ,, -c ,,"); | ||
124 | cmp_ok( $res->return_code, '==', 0, "Skipping all thresholds"); | ||
125 | like($res->output, '/^SNMP OK - \d+ \w+ \d+\s.*$/', "Skipping all thresholds, result printed rather than parsed"); | ||
126 | |||
127 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0 -c 1000000000000: -u '1/100 sec'"); | ||
128 | cmp_ok( $res->return_code, '==', 2, "Timetick used as a threshold"); | ||
129 | like($res->output, '/^SNMP CRITICAL - \*\d+\* 1\/100 sec.*$/', "Timetick used as a threshold, parsed as numeric"); | ||
130 | |||
131 | $res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0"); | ||
132 | cmp_ok( $res->return_code, '==', 0, "Timetick used as a string"); | ||
133 | like($res->output, '/^SNMP OK - Timeticks:\s\(\d+\)\s+(?:\d+ days?,\s+)?\d+:\d+:\d+\.\d+\s.*$/', "Timetick used as a string, result printed rather than parsed"); | ||
134 | } | ||
135 | |||
136 | # These checks need a complete command line. An invalid community is used so | ||
137 | # the tests can run on hosts w/o snmp host/community in NPTest.cache. Execution will fail anyway | ||
138 | SKIP: { | ||
139 | skip "no non responsive host defined", 2 if ( ! $host_nonresponsive ); | ||
140 | $res = NPTest->testCmd( "./check_snmp -H $host_nonresponsive -C np_foobar -o system.sysUpTime.0 -w 1: -c 1:"); | ||
141 | cmp_ok( $res->return_code, '==', 3, "Exit UNKNOWN with non responsive host" ); | ||
142 | like($res->output, '/External command error: Timeout: No Response from /', "String matches timeout problem"); | ||
143 | } | ||
144 | |||
145 | SKIP: { | ||
146 | skip "no non invalid host defined", 2 if ( ! $hostname_invalid ); | ||
147 | $res = NPTest->testCmd( "./check_snmp -H $hostname_invalid -C np_foobar -o system.sysUpTime.0 -w 1: -c 1:"); | ||
148 | cmp_ok( $res->return_code, '==', 3, "Exit UNKNOWN with non responsive host" ); | ||
149 | like($res->output, '/External command error: .*(nosuchhost|Name or service not known|Unknown host)/', "String matches invalid host"); | ||
150 | } | ||
151 | 165 | ||
166 | SKIP: { | ||
167 | skip "no non invalid host defined", 2 if ( ! $hostname_invalid ); | ||
168 | $res = NPTest->testCmd( "./check_snmp -H $hostname_invalid -C np_foobar -o system.sysUpTime.0 -w 1: -c 1:"); | ||
169 | cmp_ok( $res->return_code, '==', 3, "Exit UNKNOWN with non responsive host" ); | ||
170 | like($res->output, '/External command error: .*(nosuchhost|Name or service not known|Unknown host)/', "String matches invalid host"); | ||
152 | } | 171 | } |