From c5a6c5136a2a7e629907b04a63dff059603bdb09 Mon Sep 17 00:00:00 2001 From: Sven Nierlein Date: Thu, 12 Jun 2014 13:56:48 +0200 Subject: tests: testCmd has own timeout which overwrites local one so add configurable/optional timeout to testCmd. Signed-off-by: Sven Nierlein --- NPTest.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'NPTest.pm') diff --git a/NPTest.pm b/NPTest.pm index 2baed0b0..e04ebba3 100644 --- a/NPTest.pm +++ b/NPTest.pm @@ -627,12 +627,13 @@ sub only_output { } sub testCmd { - my $class = shift; + my $class = shift; my $command = shift or die "No command passed to testCmd"; + my $timeout = shift || 120; my $object = $class->new; local $SIG{'ALRM'} = sub { die("timeout in command: $command"); }; - alarm(120); # no test should take longer than 120 seconds + alarm($timeout); # no test should take longer than 120 seconds my $output = `$command`; $object->return_code($? >> 8); -- cgit v1.2.3-74-g34f1 From 93901d5ff10cd7fd915cc09d7c496cec49f82ce5 Mon Sep 17 00:00:00 2001 From: Sven Nierlein Date: Fri, 13 Jun 2014 14:20:14 +0200 Subject: tests: fping checks require being root or setuid root on the fping binary. Check this before running the test. Signed-off-by: Sven Nierlein --- NPTest.pm | 29 ++++++++++++++++++++++++++--- plugins/t/check_fping.t | 14 ++++++++------ 2 files changed, 34 insertions(+), 9 deletions(-) (limited to 'NPTest.pm') 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, -C and C. These are exported by +This module defines four public functions, C, +C, C and C. These are exported by default via the C statement. =over @@ -185,6 +185,15 @@ of times. =back +=item C + +If for any reason the test harness must C 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 @@ -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); -- cgit v1.2.3-74-g34f1