Squeeze slack time when killing more than one server from

the <killserver> section of test harness definition files.
This commit is contained in:
Yang Tse
2010-01-14 17:36:57 +00:00
parent 383bf1e476
commit 7624527591

View File

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