]> granicus.if.org Git - curl/commitdiff
Squeeze slack time when killing more than one server from
authorYang Tse <yangsita@gmail.com>
Thu, 14 Jan 2010 17:36:57 +0000 (17:36 +0000)
committerYang Tse <yangsita@gmail.com>
Thu, 14 Jan 2010 17:36:57 +0000 (17:36 +0000)
the <killserver> section of test harness definition files.

tests/runtests.pl

index 3ddadbb46ca45be491a9f5c7c4b14bdaae4a2254..c5091e841f7e84305d5244f44670c02e3a6ddfcb 100755 (executable)
@@ -1919,7 +1919,7 @@ sub singletest {
     $timeprepini{$testnum} = Time::HiRes::time() if($timestats);
 
     if($disttests !~ /test$testnum\W/ ) {
-        print STDERR "Warning: data/test$testnum is not present in tests/data/Makefile.am\n";
+        logmsg "Warning: test$testnum not present in tests/data/Makefile.am\n";
     }
 
 
@@ -2370,45 +2370,62 @@ sub singletest {
     $timesrvrlog{$testnum} = Time::HiRes::time() if($timestats);
 
     # test definition might instruct to stop some servers
+    # stop also non-secure server when stopping a ssl one
     my @killservers = getpart("client", "killserver");
-    foreach my $serv (@killservers) {
-        chomp $serv;
-        my $pid;
-        # handle given server no matter if secure or not
-        if($run{$serv}) {
-            # stop server pid(s) from %run hash clearing them
-            stopserver($run{$serv});
-            $run{$serv} = 0;
-        }
-        # deal with unexpectedly still alive server
-        $pid = processexists($serverpidfile{$serv});
-        if($pid > 0) {
-            print STDERR "Warning: $serv server unexpectedly alive\n";
-            stopserver($pid);
-        }
-        # handle unsecure server when given a secure one
-        my $unsec = $serv;
-        if($serv =~ /^(ftp|http|imap|pop3|smtp)s(.*)$/) {
-            $unsec = "$1$2";
-            # stop unsecure server when stopping a secure one
-            if($run{$unsec}) {
-                # stop server pid(s) from %run hash clearing them
-                stopserver($run{$unsec});
-                $run{$unsec} = 0;
-            }
-            # deal with unexpectedly still alive server
-            $pid = processexists($serverpidfile{$unsec});
-            if($pid > 0) {
-                print STDERR "Warning: $unsec server unexpectedly alive\n";
-                stopserver($pid);
+    if(@killservers) {
+        #
+        # kill sockfilter processes for pingpong servers
+        #
+        foreach my $server (@killservers) {
+            chomp $server;
+            if($server =~ /^(ftp|imap|pop3|smtp)s?(\d*)(-ipv6|)$/) {
+                my $proto  = $1;
+                my $idnum  = ($2 && ($2 > 1)) ? $2 : 1;
+                my $ipvnum = ($3 && ($3 =~ /6$/)) ? 6 : 4;
+                killsockfilters($proto, $ipvnum, $idnum, $verbose);
+            }
+        }
+        #
+        # kill server pids from %run hash clearing them
+        #
+        my $pidlist;
+        foreach my $server (@killservers) {
+            chomp $server;
+            if($run{$server}) {
+                $pidlist .= " $run{$server}";
+                $run{$server} = 0;
+            }
+            if($server =~ /^(ftp|http|imap|pop3|smtp)s(.*)$/) {
+                $server = "$1$2";
+                if($run{$server}) {
+                    $pidlist .= " $run{$server}";
+                    $run{$server} = 0;
+                }
             }
         }
-        # handle potentially still alive server sockfilters
-        if($unsec =~ /^(ftp|imap|pop3|smtp)(\d*)(-ipv6|)/) {
-            my $proto  = $1;
-            my $idnum  = ($2 && ($2 > 1)) ? $2 : 1;
-            my $ipvnum = ($3 && ($3 =~ /6$/)) ? 6 : 4;
-            killsockfilters($proto, $ipvnum, $idnum, $verbose);
+        killpid($verbose, $pidlist);
+        #
+        # cleanup server pid files
+        #
+        foreach my $server (@killservers) {
+            chomp $server;
+            my $pidfile = $serverpidfile{$server};
+            my $pid = processexists($pidfile);
+            if($pid > 0) {
+                logmsg "Warning: $server server unexpectedly alive\n";
+                killpid($verbose, $pid);
+            }
+            unlink($pidfile) if(-f $pidfile);
+            if($server =~ /^(ftp|http|imap|pop3|smtp)s(.*)$/) {
+                $server = "$1$2";
+                $pidfile = $serverpidfile{$server};
+                $pid = processexists($pidfile);
+                if($pid > 0) {
+                    logmsg "Warning: $server server unexpectedly alive\n";
+                    killpid($verbose, $pid);
+                }
+                unlink($pidfile) if(-f $pidfile);
+            }
         }
     }