aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Sven Nierlein <Sven.Nierlein@consol.de> 2014-06-13 14:20:14 +0200
committerGravatar Sven Nierlein <Sven.Nierlein@consol.de> 2014-06-13 15:23:18 +0200
commit93901d5ff10cd7fd915cc09d7c496cec49f82ce5 (patch)
tree7532c4990cf605c5e1ea62bd1914525f8ea2e243
parentfb89accaaa831def2f948192a04eae84c4777531 (diff)
downloadmonitoring-plugins-93901d5ff10cd7fd915cc09d7c496cec49f82ce5.tar.gz
tests: fping checks require being root or setuid root
on the fping binary. Check this before running the test. Signed-off-by: Sven Nierlein <Sven.Nierlein@consol.de>
-rw-r--r--NPTest.pm29
-rw-r--r--plugins/t/check_fping.t14
2 files changed, 34 insertions, 9 deletions
diff --git a/NPTest.pm b/NPTest.pm
index e04ebba3..f72ed2df 100644
--- a/NPTest.pm
+++ b/NPTest.pm
@@ -6,7 +6,7 @@ package NPTest;
require Exporter;
@ISA = qw(Exporter);
-@EXPORT = qw(getTestParameter checkCmd skipMissingCmd);
+@EXPORT = qw(getTestParameter checkCmd skipMissingCmd skipMsg);
@EXPORT_OK = qw(DetermineTestHarnessDirectory TestsFrom SetCacheFilename);
use strict;
@@ -38,8 +38,8 @@ testing.
=head1 FUNCTIONS
-This module defines three public functions, C<getTestParameter(...)>,
-C<checkCmd(...)> and C<skipMissingCmd(...)>. These are exported by
+This module defines four public functions, C<getTestParameter(...)>,
+C<checkCmd(...)>, C<skipMissingCmd(...)> and C<skipMsg(...)>. These are exported by
default via the C<use NPTest;> statement.
=over
@@ -185,6 +185,15 @@ of times.
=back
+=item C<skipMsg(...)>
+
+If for any reason the test harness must C<Test::skip()> some
+or all of the tests in a given test harness this function provides a
+simple iterator to issue an appropriate message the requested number
+of times.
+
+=back
+
=head1 SEE ALSO
L<Test>
@@ -304,6 +313,20 @@ sub skipMissingCmd
return $testStatus;
}
+sub skipMsg
+{
+ my( $msg, $count ) = @_;
+
+ my $testStatus;
+
+ for ( 1 .. $count )
+ {
+ $testStatus += skip( $msg, 1 );
+ }
+
+ return $testStatus;
+}
+
sub getTestParameter
{
my( $param, $envvar, $default, $brief, $scoped );
diff --git a/plugins/t/check_fping.t b/plugins/t/check_fping.t
index 45a9be8a..08692e46 100644
--- a/plugins/t/check_fping.t
+++ b/plugins/t/check_fping.t
@@ -27,16 +27,18 @@ my $hostname_invalid = getTestParameter( "hostname_invalid", "NP_HOSTNAME_IN
my $t;
-if ( -x "./check_fping" )
-{
+my $fping = qx(which fping 2> /dev/null);
+chomp($fping);
+if( ! -x "./check_fping") {
+ $t += skipMissingCmd( "./check_fping", $tests );
+}
+elsif ( $> != 0 && (!$fping || ! -u $fping)) {
+ $t += skipMsg( "./check_fping", $tests );
+} else {
$t += checkCmd( "./check_fping $host_responsive", 0, $successOutput );
$t += checkCmd( "./check_fping $host_nonresponsive", [ 1, 2 ] );
$t += checkCmd( "./check_fping $hostname_invalid", [ 1, 2 ] );
}
-else
-{
- $t += skipMissingCmd( "./check_fping", $tests );
-}
exit(0) if defined($Test::Harness::VERSION);
exit($tests - $t);