aboutsummaryrefslogtreecommitdiff
path: root/tests/runtests.pl
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2006-11-09 13:20:42 +0000
committerYang Tse <yangsita@gmail.com>2006-11-09 13:20:42 +0000
commit17d4f9513ecdaa5cf1364abf50473e470047eb59 (patch)
tree3d2a2ac6a51b725a0e7b226db153029ae7874a4e /tests/runtests.pl
parentf830d7730702b7ff923e9248f98b1904d2b5ade3 (diff)
Remove showing stderr log files unconditionally for tests 518 and 537.
Add failure checking for servers when fork()ed. Use same code path in 'stopserver' when called with a single or multiple pids.
Diffstat (limited to 'tests/runtests.pl')
-rwxr-xr-xtests/runtests.pl55
1 files changed, 27 insertions, 28 deletions
diff --git a/tests/runtests.pl b/tests/runtests.pl
index 85501a4d0..d43657131 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -235,8 +235,13 @@ sub startnew {
my $child = fork();
my $pid2;
+ if(not defined $child) {
+ logmsg "fork() failure detected\n";
+ return (-1,-1);
+ }
+
if(0 == $child) {
- # a child, run the given command instead!
+ # Here we are the child. Run the given command.
# Calling exec() within a pseudo-process actually spawns the requested
# executable in a separate process and waits for it to complete before
@@ -244,7 +249,12 @@ sub startnew {
# the process ID reported within the running executable will be
# different from what the earlier Perl fork() might have returned.
- exec($cmd);
+ # exec() should never return back here to this process. We protect
+ # ourselfs calling die() just in case something goes really bad.
+
+ exec($cmd) || die "Can't exec() $cmd: $!";
+
+ die "error: exec() has returned !!!";
}
my $count=5;
@@ -390,22 +400,23 @@ sub torture {
sub stopserver {
my ($pid) = @_;
- if($pid <= 0) {
- return; # this is not a good pid
+ if(not defined $pid) {
+ return; # whad'da'ya wanna'da with no pid ?
}
- if($pid =~ / /) {
- # if it contains space, it might be more than one pid
- my @pids = split(" ", $pid);
- for (@pids) {
- kill (9, $_); # die!
- }
- }
+ # it might be more than one pid
- my $res = kill (9, $pid); # die!
-
- if($verbose) {
- logmsg "RUN: Test server pid $pid signalled to die\n";
+ my @pids = split(/\s+/, $pid);
+ for (@pids) {
+ chomp($_);
+ if($_ =~ /^(\d+)$/) {
+ if(($1 > 0) && kill(0, $1)) {
+ if($verbose) {
+ logmsg "RUN: Test server pid $1 signalled to die\n";
+ }
+ kill(9, $1); # die!
+ }
+ }
}
}
@@ -1216,13 +1227,7 @@ sub singletest {
$cmd = $precheck[0];
chomp $cmd;
if($cmd) {
- my @o;
- if(($testnum == 518) || ($testnum == 537)) {
- @o = `$cmd 2>"$LOGDIR/stderr$testnum"`;
- }
- else {
- @o = `$cmd 2>/dev/null`;
- }
+ my @o = `$cmd 2>/dev/null`;
if($o[0]) {
$why = $o[0];
chomp $why;
@@ -1231,12 +1236,6 @@ sub singletest {
}
}
- if(($testnum == 518) || ($testnum == 537)) {
- logmsg "== Start of file $LOGDIR/stderr$testnum\n";
- displaylogcontent("$LOGDIR/stderr$testnum");
- logmsg "== End of file $LOGDIR/stderr$testnum\n";
- }
-
if($why) {
# there's a problem, count it as "skipped"
$skipped++;