[monitoring-plugins] tests: fping checks require being root or setuid ...

Sven Nierlein git at monitoring-plugins.org
Fri Jun 13 16:20:09 CEST 2014


 Module: monitoring-plugins
 Branch: master
 Commit: 93901d5ff10cd7fd915cc09d7c496cec49f82ce5
 Author: Sven Nierlein <Sven.Nierlein at consol.de>
   Date: Fri Jun 13 14:20:14 2014 +0200
    URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=93901d5

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 at consol.de>

---

 NPTest.pm               | 29 ++++++++++++++++++++++++++---
 plugins/t/check_fping.t | 14 ++++++++------
 2 files changed, 34 insertions(+), 9 deletions(-)

diff --git a/NPTest.pm b/NPTest.pm
index e04ebba..f72ed2d 100644
--- a/NPTest.pm
+++ b/NPTest.pm
@@ -6,7 +6,7 @@ package NPTest;
 
 require Exporter;
 @ISA       = qw(Exporter);
- at EXPORT    = qw(getTestParameter checkCmd skipMissingCmd);
+ at 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 45a9be8..08692e4 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);



More information about the Commits mailing list