]> granicus.if.org Git - curl/commitdiff
Remove showing stderr log files unconditionally for tests 518 and 537.
authorYang Tse <yangsita@gmail.com>
Thu, 9 Nov 2006 13:20:42 +0000 (13:20 +0000)
committerYang Tse <yangsita@gmail.com>
Thu, 9 Nov 2006 13:20:42 +0000 (13:20 +0000)
Add failure checking for servers when fork()ed.

Use same code path in 'stopserver' when called with a single or multiple pids.

tests/runtests.pl

index 85501a4d082a5b9463e393fb3f3b39d5f4a4b0af..d43657131aa0ad9a5e5e9d1fd6f397d50356555d 100755 (executable)
@@ -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++;