Imported Upstream version 1.4.13+git200906171200

This commit is contained in:
Jan Wagner 2013-11-26 23:56:50 +01:00
parent 4ab9f0d24c
commit d0b8ab8112
362 changed files with 34110 additions and 10773 deletions

View file

@ -2,7 +2,6 @@
#
# check_by_ssh tests
#
# $Id$
#
use strict;
@ -92,7 +91,7 @@ $result = NPTest->testCmd(
);
cmp_ok($result->return_code, '==', 0, "Multiple checks always return OK");
my @lines = split(/\n/, $result->output);
cmp_ok(scalar(@lines), '==', 8, "Correct number of output lined for multiple checks");
cmp_ok(scalar(@lines), '==', 8, "Correct number of output lines for multiple checks");
my %linemap = (
'0' => '1',
'2' => '0',

View file

@ -2,7 +2,6 @@
#
# check_cluster tests
#
# $Id: check_cluster.t 1702 2007-04-28 21:57:17Z psychotrahe $
#
use strict;

84
plugins/t/check_dig.t Normal file
View file

@ -0,0 +1,84 @@
#! /usr/bin/perl -w -I ..
#
# Domain Name Server (DNS) Tests via check_dig
#
#
use strict;
use Test::More;
use NPTest;
plan skip_all => "check_dig not compiled" unless (-x "check_dig");
plan tests => 12;
my $successOutput = '/DNS OK - [\.0-9]+ seconds? response time/';
my $hostname_valid = getTestParameter(
"NP_HOSTNAME_VALID",
"A valid (known to DNS) hostname",
"nagios.com"
);
my $hostname_valid_ip = getTestParameter(
"NP_HOSTNAME_VALID_IP",
"The IP address of the valid hostname $hostname_valid",
"66.118.156.50",
);
my $hostname_valid_reverse = getTestParameter(
"NP_HOSTNAME_VALID_REVERSE",
"The hostname of $hostname_valid_ip",
"66-118-156-50.static.sagonet.net.",
);
my $hostname_invalid = getTestParameter(
"NP_HOSTNAME_INVALID",
"An invalid (not known to DNS) hostname",
"nosuchhost.altinity.com",
);
my $dns_server = getTestParameter(
"NP_DNS_SERVER",
"A non default (remote) DNS server",
);
my $res;
SKIP: {
skip "check_dig.t: not enough parameters given",
12 unless ($hostname_valid && $hostname_valid_ip && $hostname_valid_reverse && $hostname_invalid && $dns_server);
$res = NPTest->testCmd("./check_dig -H $dns_server -l $hostname_valid -t 5");
cmp_ok( $res->return_code, '==', 0, "Found $hostname_valid");
like ( $res->output, $successOutput, "Output OK" );
$res = NPTest->testCmd("./check_dig -H $dns_server -l $hostname_valid -t 5 -w 0.000001 -c 0.00001");
cmp_ok( $res->return_code, '==', 2, "Critical threshold passed");
$res = NPTest->testCmd("./check_dig -H $dns_server -l $hostname_valid -t 5 -w 0.000001 -c 5");
cmp_ok( $res->return_code, '==', 1, "Warning threshold passed");
$res = NPTest->testCmd("./check_dig -H $dns_server -t 1");
cmp_ok( $res->return_code, '==', 3, "Invalid command line -l missing");
$res = NPTest->testCmd("./check_dig -H $dns_server -l $hostname_invalid -t 1");
cmp_ok( $res->return_code, '==', 2, "Invalid $hostname_invalid");
$res = NPTest->testCmd("./check_dig -H $dns_server -l $hostname_valid -t 5");
cmp_ok( $res->return_code, '==', 0, "Found $hostname_valid on $dns_server");
like ( $res->output, $successOutput, "Output OK" );
$res = NPTest->testCmd("./check_dig -H $dns_server -l $hostname_valid -a $hostname_valid_ip -t 5");
cmp_ok( $res->return_code, '==', 0, "Got expected address");
$res = NPTest->testCmd("./check_dig -H $dns_server -l $hostname_valid -a 10.10.10.10 -t 5");
cmp_ok( $res->return_code, '==', 1, "Got wrong address");
my $ip_reverse = $hostname_valid_ip;
$ip_reverse =~ s/(\d+)\.(\d+)\.(\d+)\.(\d+)/$4.$3.$2.$1.in-addr.arpa/;
$res = NPTest->testCmd("./check_dig -H $dns_server -l $ip_reverse -a $hostname_valid_reverse -T PTR -t 5");
cmp_ok( $res->return_code, '==', 0, "Got expected fqdn");
like ( $res->output, $successOutput, "Output OK");
}

View file

@ -2,7 +2,6 @@
#
# Disk Space Tests via check_disk
#
# $Id: check_disk.t 1786 2007-09-22 17:40:35Z psychotrahe $
#
# TODO: Add in tests for perf data. Need to beef up Nagios::Plugin::Performance to cater for max, min, etc

View file

@ -2,7 +2,6 @@
#
# Domain Name Server (DNS) Tests via check_dns
#
# $Id: check_dns.t 1902 2008-01-08 16:05:36Z tonvoon $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# check_dummy tests
#
# $Id: check_dummy.t 1716 2007-05-24 08:35:53Z tonvoon $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# FPing Tests via check_fping
#
# $Id: check_fping.t 1207 2005-07-25 01:47:15Z illumino $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# File Transfer Protocol (FTP) Test via check_ftp
#
# $Id: check_ftp.t 1901 2008-01-08 11:57:24Z tonvoon $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# HP JetDirect Test via check_hpjd
#
# $Id: check_hpjd.t 1354 2006-03-24 16:13:40Z tonvoon $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# HyperText Transfer Protocol (HTTP) Test via check_http
#
# $Id: check_http.t 1669 2007-04-01 14:21:09Z psychotrahe $
#
use strict;
@ -35,7 +34,7 @@ my $host_tcp_http2;
if ($internet_access eq "no") {
$host_tcp_http2 = getTestParameter( "NP_HOST_TCP_HTTP2",
"A host providing an index page containing the string 'nagios'",
"altinity.com" );
"www.nagios.com" );
}
@ -74,7 +73,7 @@ SKIP: {
skip "No internet access and no host serving nagios in index file",
7 if $internet_access eq "no" && ! $host_tcp_http2;
$host_tcp_http2 = "altinity.com" if (! $host_tcp_http2);
$host_tcp_http2 = "www.nagios.com" if (! $host_tcp_http2);
$res = NPTest->testCmd( "./check_http -H $host_tcp_http2 -r 'nagios'" );
cmp_ok( $res->return_code, "==", 0, "Got a reference to 'nagios'");

View file

@ -2,7 +2,6 @@
#
# Internet Mail Access Protocol (IMAP) Server Tests via check_imap
#
# $Id: check_imap.t 1901 2008-01-08 11:57:24Z tonvoon $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# Jabber Server Tests via check_jabber
#
# $Id: check_jabber.t 1901 2008-01-08 11:57:24Z tonvoon $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# Load Average Tests via check_load
#
# $Id: check_load.t 1851 2007-12-10 00:19:27Z psychotrahe $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# MySQL Database Server Tests via check_mysql
#
# $Id: check_mysql.t 1988 2008-04-30 12:50:52Z dermoth $
#
#
# These are the database permissions required for this test:

View file

@ -2,7 +2,6 @@
#
# MySQL Database Server Tests via check_mysql
#
# $Id: check_mysql_query.t 1315 2006-02-01 13:23:38Z tonvoon $
#
#
# These are the database permissions required for this test:

View file

@ -2,7 +2,6 @@
#
# check_nagios tests
#
# $Id: check_nagios.t 1953 2008-03-17 23:08:21Z tonvoon $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# Testing NTP
#
# $Id: check_ntp.t 1865 2007-12-11 13:54:23Z dermoth $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# Ping Response Tests via check_ping
#
# $Id: check_ping.t 1639 2007-03-12 10:51:06Z tonvoon $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# Post Office Protocol (POP) Server Tests via check_pop
#
# $Id: check_pop.t 1901 2008-01-08 11:57:24Z tonvoon $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# Process Tests via check_procs
#
# $Id: check_procs.t 1937 2008-02-28 16:21:59Z tonvoon $
#
use strict;
@ -11,7 +10,7 @@ use NPTest;
my $t;
if (`uname -s` eq "SunOS\n") {
if (`uname -s` eq "SunOS\n" && ! -x "/usr/local/nagios/libexec/pst3") {
plan skip_all => "Ignoring tests on solaris because of pst3";
} else {
plan tests => 12;

View file

@ -2,7 +2,6 @@
#
# Simple Mail Transfer Protocol (SMTP) Test via check_smtp
#
# $Id: check_smtp.t 1500 2006-10-19 11:56:34Z tonvoon $
#
use strict;

View file

@ -2,56 +2,132 @@
#
# Simple Network Management Protocol (SNMP) Test via check_snmp
#
# $Id: check_snmp.t 1557 2006-12-23 18:59:36Z dermoth $
#
use strict;
use Test;
use Test::More;
use NPTest;
use vars qw($tests);
BEGIN {$tests = 12; plan tests => $tests}
my $tests = 44;
plan tests => $tests;
my $res;
my $t;
SKIP: {
skip "check_snmp is not compiled", $tests if ( ! -x "./check_snmp" );
if ( -x "./check_snmp" )
{
my $host_snmp = getTestParameter( "host_snmp", "NP_HOST_SNMP", "localhost",
"A host providing an SNMP Service");
my $host_snmp = getTestParameter( "host_snmp", "NP_HOST_SNMP", "localhost",
"A host providing an SNMP Service");
my $snmp_community = getTestParameter( "snmp_community", "NP_SNMP_COMMUNITY", "public",
"The SNMP Community string for SNMP Testing" );
my $snmp_community = getTestParameter( "snmp_community", "NP_SNMP_COMMUNITY", "public",
"The SNMP Community string for SNMP Testing (assumes snmp v1)" );
my $host_nonresponsive = getTestParameter( "host_nonresponsive", "NP_HOST_NONRESPONSIVE", "10.0.0.1",
"The hostname of system not responsive to network requests" );
my $host_nonresponsive = getTestParameter( "host_nonresponsive", "NP_HOST_NONRESPONSIVE", "10.0.0.1",
"The hostname of system not responsive to network requests" );
my $hostname_invalid = getTestParameter( "hostname_invalid", "NP_HOSTNAME_INVALID", "nosuchhost",
"An invalid (not known to DNS) hostname" );
my $hostname_invalid = getTestParameter( "hostname_invalid", "NP_HOSTNAME_INVALID", "nosuchhost",
"An invalid (not known to DNS) hostname" );
my %exceptions = ( 3 => "No SNMP Server present?" );
$res = NPTest->testCmd( "./check_snmp -t 1" );
is( $res->return_code, 3, "No host name" );
is( $res->output, "No host specified" );
$res = NPTest->testCmd( "./check_snmp -H fakehostname" );
is( $res->return_code, 3, "No OIDs specified" );
is( $res->output, "No OIDs specified" );
$res = NPTest->testCmd( "./check_snmp -H fakehost -o oids -P 3 --seclevel=rubbish" );
is( $res->return_code, 3, "Invalid seclevel" );
like( $res->output, "/check_snmp: Invalid seclevel - rubbish/" );
$t += checkCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0 -w 1: -c 1:",
{ 0 => 'continue', 3 => 'skip' }, '/^SNMP OK - \d+/', %exceptions );
$res = NPTest->testCmd( "./check_snmp -H fakehost -o oids -P 3c" );
is( $res->return_code, 3, "Invalid protocol" );
like( $res->output, "/check_snmp: Invalid SNMP version - 3c/" );
$t += checkCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w 1:1 -c 1:1",
{ 0 => 'continue', 3 => 'skip' }, '/^SNMP OK - 1\s.*$/', %exceptions );
SKIP: {
skip "no snmp host defined", 32 if ( ! $host_snmp );
$t += checkCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w 0 -c 1:",
{ 1 => 'continue', 3 => 'skip' }, '/^SNMP WARNING - \*1\*\s.*$/', %exceptions );
$res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysUpTime.0 -w 1: -c 1:");
cmp_ok( $res->return_code, '==', 0, "Exit OK when querying uptime" );
like($res->output, '/^SNMP OK - (\d+)/', "String contains SNMP OK");
$res->output =~ /^SNMP OK - (\d+)/;
my $value = $1;
cmp_ok( $value, ">", 0, "Got a time value" );
like($res->perf_output, "/sysUpTime.*$1/", "Got perfdata with value '$1' in it");
$t += checkCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w :0 -c 0",
{ 2 => 'continue', 3 => 'skip' }, '/^SNMP CRITICAL - \*1\*\s.*$/', %exceptions );
$res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o system.sysDescr.0");
cmp_ok( $res->return_code, '==', 0, "Exit OK when querying sysDescr" );
unlike($res->perf_output, '/sysDescr/', "Perfdata doesn't contain string values");
$t += checkCmd( "./check_snmp -H $host_nonresponsive -C $snmp_community -o system.sysUpTime.0 -w 1: -c 1:", 3, '/SNMP problem - /' );
$res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w 1:1 -c 1:1");
cmp_ok( $res->return_code, '==', 0, "Exit OK when querying hrSWRunIndex.1" );
like($res->output, '/^SNMP OK - 1\s.*$/', "String fits SNMP OK and output format");
$t += checkCmd( "./check_snmp -H $hostname_invalid -C $snmp_community -o system.sysUpTime.0 -w 1: -c 1:", 3, '/SNMP problem - /' );
$res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w 0 -c 1:");
cmp_ok( $res->return_code, '==', 1, "Exit WARNING when querying hrSWRunIndex.1 and warn-th doesn't apply " );
like($res->output, '/^SNMP WARNING - \*1\*\s.*$/', "String matches SNMP WARNING and output format");
$res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w :0 -c 0");
cmp_ok( $res->return_code, '==', 2, "Exit CRITICAL when querying hrSWRunIndex.1 and crit-th doesn't apply" );
like($res->output, '/^SNMP CRITICAL - \*1\*\s.*$/', "String matches SNMP CRITICAL and output format");
$res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o ifIndex.2,ifIndex.1 -w 1:2 -c 1:2");
cmp_ok( $res->return_code, '==', 0, "Checking two OIDs at once" );
like($res->output, "/^SNMP OK - 2 1/", "Got two values back" );
like( $res->perf_output, "/ifIndex.2=2/", "Got 1st perf data" );
like( $res->perf_output, "/ifIndex.1=1/", "Got 2nd perf data" );
$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");
cmp_ok( $res->return_code, '==', 2, "Checking critical threshold is passed if any one value crosses" );
like($res->output, "/^SNMP CRITICAL - 2 *1*/", "Got two values back" );
like( $res->perf_output, "/ifIndex.2=2/", "Got 1st perf data" );
like( $res->perf_output, "/ifIndex.1=1/", "Got 2nd perf data" );
$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:");
cmp_ok( $res->return_code, '==', 0, "Exit OK when querying hrMemorySize and hrSystemProcesses");
like($res->output, '/^SNMP OK - \d+ \d+/', "String contains hrMemorySize and hrSystemProcesses");
$res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w \@:0 -c \@0");
cmp_ok( $res->return_code, '==', 0, "Exit OK with inside-range thresholds");
like($res->output, '/^SNMP OK - 1\s.*$/', "String matches SNMP OK and output format");
$res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o enterprises.ucdavis.laTable.laEntry.laLoad.3");
$res->output =~ m/^SNMP OK - (\d+\.\d{2})\s.*$/;
my $lower = $1 - 0.05;
my $higher = $1 + 0.05;
$res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o enterprises.ucdavis.laTable.laEntry.laLoad.3 -w $lower -c $higher");
cmp_ok( $res->return_code, '==', 1, "Exit WARNING with fractionnal arcuments");
$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");
cmp_ok( $res->return_code, '==', 1, "Exit WARNING on 2nd threshold");
like($res->output, '/^SNMP WARNING - Timeticks:\s\(\d+\)\s.*,\s.*\s\*1\*\s.*$/', "First OID returned as string, 2nd checked for thresholds");
$res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrSWRun.hrSWRunTable.hrSWRunEntry.hrSWRunIndex.1 -w '' -c ''");
cmp_ok( $res->return_code, '==', 0, "Empty thresholds doesn't crash");
$res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrStorage.hrMemorySize.0,host.hrSystem.hrSystemProcesses.0 -w ,,1 -c ,,2");
cmp_ok( $res->return_code, '==', 0, "Skipping first two thresholds on 2 OID check");
like($res->output, '/^SNMP OK - \d+ \w+ \d+\s.*$/', "Skipping first two thresholds, result printed rather than parsed");
$res = NPTest->testCmd( "./check_snmp -H $host_snmp -C $snmp_community -o host.hrStorage.hrMemorySize.0,host.hrSystem.hrSystemProcesses.0 -w ,, -c ,,");
cmp_ok( $res->return_code, '==', 0, "Skipping all thresholds");
like($res->output, '/^SNMP OK - \d+ \w+ \d+\s.*$/', "Skipping all thresholds, result printed rather than parsed");
}
# These checks need a complete command line. An invalid community is used so
# the tests can run on hosts w/o snmp host/community in NPTest.cache. Execution will fail anyway
SKIP: {
skip "no non responsive host defined", 2 if ( ! $host_nonresponsive );
$res = NPTest->testCmd( "./check_snmp -H $host_nonresponsive -C np_foobar -o system.sysUpTime.0 -w 1: -c 1:");
cmp_ok( $res->return_code, '==', 3, "Exit UNKNOWN with non responsive host" );
like($res->output, '/External command error: Timeout: No Response from /', "String matches timeout problem");
}
SKIP: {
skip "no non invalid host defined", 2 if ( ! $hostname_invalid );
$res = NPTest->testCmd( "./check_snmp -H $hostname_invalid -C np_foobar -o system.sysUpTime.0 -w 1: -c 1:");
cmp_ok( $res->return_code, '==', 3, "Exit UNKNOWN with non responsive host" );
like($res->output, '/External command error: .*(nosuchhost|Name or service not known|Unknown host)/', "String matches invalid host");
}
}
else
{
$t += skipMissingCmd( "./check_snmp", $tests );
}
exit(0) if defined($Test::Harness::VERSION);
exit($tests - $t);

View file

@ -2,7 +2,6 @@
#
# Swap Space Tests via check_swap
#
# $Id: check_swap.t 1279 2005-11-09 16:40:12Z tonvoon $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# TCP Connection Based Tests via check_tcp
#
# $Id: check_tcp.t 1901 2008-01-08 11:57:24Z tonvoon $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# System Time Tests via check_time
#
# $Id: check_time.t 1270 2005-11-03 15:04:16Z tonvoon $
#
use strict;

View file

@ -2,7 +2,6 @@
#
# UDP Connection Based Tests via check_udp
#
# $Id: check_udp.t 1459 2006-07-28 22:44:11Z tonvoon $
#
use strict;

View file

@ -2,8 +2,11 @@
#
# Logged in Users Tests via check_users
#
# $Id: check_users.t 1207 2005-07-25 01:47:15Z illumino $
# Trick: This ckeck requires at least 1 user logged in. These commands should
# leave a session open forever in the background:
#
# $ ssh -tt localhost </dev/null >/dev/null 2>/dev/null &
# $ disown %1
use strict;
use Test;

View file

@ -3,15 +3,13 @@
# negate checks
# Need check_dummy to work for testing
#
# $Id: negate.pl 1717 2007-05-24 08:53:50Z tonvoon $
#
use strict;
use Test::More;
use NPTest;
# 15 tests in the first part and 32 in the last loop
plan tests => 47;
# 15 tests in the first part, 9 in timeout tests and 2 * 32 in the last loops
plan tests => 88;
my $res;
@ -55,18 +53,37 @@ is( $res->output, "No data returned from command", "Bad command, as expected (tr
$res = NPTest->testCmd( './negate $PWD/check_dummy 0 \'$$ a dummy okay\'' );
is( $res->output, 'OK: $$ a dummy okay', 'Proves that $$ is not being expanded again' );
my %state = (
ok => 0,
warning => 1,
critical => 2,
unknown => 3,
);
foreach my $current_state (qw(ok warning critical unknown)) {
foreach my $new_state (qw(ok warning critical unknown)) {
# Timeout tests
$res = NPTest->testCmd( "./negate -t 2 /bin/sh -c 'sleep 5'" );
is( $res->output, 'CRITICAL - Plugin timed out after 2 seconds' );
foreach my $state (keys(%state)) {
$res = NPTest->testCmd( "./negate -t 2 -T $state /bin/sh -c 'sleep 5'" );
is( $res->return_code, $state{$state}, "Got timeout state $state" );
is( $res->output, uc($state)." - Plugin timed out after 2 seconds", "Timeout state $state output");
}
foreach my $current_state (keys(%state)) {
foreach my $new_state (keys(%state)) {
$res = NPTest->testCmd( "./negate --$current_state=$new_state ./check_dummy ".$state{$current_state}." 'Fake $new_state'" );
is( $res->return_code, $state{$new_state}, "Got fake $new_state" );
is( $res->output, uc($current_state).": Fake $new_state" );
is( $res->output, uc($current_state).": Fake $new_state", "Fake $new_state output");
}
}
# Same as aboce with substitute
foreach my $current_state (keys(%state)) {
foreach my $new_state (keys(%state)) {
$res = NPTest->testCmd( "./negate -s --$current_state=$new_state ./check_dummy ".$state{$current_state}." 'Fake $new_state'" );
is( $res->return_code, $state{$new_state}, "Got fake $new_state (with substitute)" );
is( $res->output, uc($new_state).": Fake $new_state", "Substitued fake $new_state output");
}
}