summaryrefslogtreecommitdiffstats
path: root/t/Monitoring-Plugin-Getopt-02.t
diff options
context:
space:
mode:
Diffstat (limited to 't/Monitoring-Plugin-Getopt-02.t')
-rw-r--r--t/Monitoring-Plugin-Getopt-02.t63
1 files changed, 63 insertions, 0 deletions
diff --git a/t/Monitoring-Plugin-Getopt-02.t b/t/Monitoring-Plugin-Getopt-02.t
new file mode 100644
index 0000000..c6c563e
--- /dev/null
+++ b/t/Monitoring-Plugin-Getopt-02.t
@@ -0,0 +1,63 @@
1# Monitoring::Plugin::Getopt timeout tests
2
3use strict;
4
5use Test::More tests => 14;
6BEGIN { use_ok('Monitoring::Plugin::Getopt') };
7
8# Needed to get evals to work in testing
9Monitoring::Plugin::Functions::_use_die(1);
10
11my %PARAM = (
12 version => '0.01',
13 url => 'http://www.openfusion.com.au/labs/nagios/',
14 blurb => 'This plugin tests various stuff.',
15 usage => "Usage: %s -H <host> -w <warning_threshold>
16 -c <critical threshold>",
17 plugin => 'test_plugin',
18 timeout => 18,
19);
20
21sub setup
22{
23 # Instantiate object
24 my $ng = Monitoring::Plugin::Getopt->new(%PARAM);
25 ok($ng, 'constructor ok');
26 return $ng;
27}
28
29my $ng;
30
31# No args
32@ARGV = qw();
33$ng = setup();
34$ng->getopts;
35is($ng->timeout, 18, 'default timeout set to 18');
36
37# Check help message
38@ARGV = ( '-h' );
39$ng = setup;
40ok(! defined eval { $ng->getopts }, 'getopts died on help');
41like($@, qr/times out.*default: 18\b/i, 'help timeout changed to 18');
42
43# Explicit timeout
44@ARGV = qw(--timeout=25 --verbose);
45$ng = setup();
46$ng->getopts;
47is($ng->timeout, 25, 'timeout changed to 25');
48
49# Explicit timeout
50@ARGV = qw(-t10 --verbose);
51$ng = setup();
52$ng->getopts;
53is($ng->timeout, 10, 'timeout changed to 10');
54
55# Short timeout, test default timeout handler
56@ARGV = qw(-t2 --verbose);
57$ng = setup();
58$ng->getopts;
59is($ng->timeout, 2, 'timeout changed to 2');
60alarm($ng->timeout);
61# Loop
62ok(! defined eval { 1 while 1 }, 'loop timed out');
63like($@, qr/UNKNOWN\b.*\btimed out/, 'default timeout handler ok');