aboutsummaryrefslogtreecommitdiff
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
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.
-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++;