work more on pids, less on pidfiles to be able to do better kills at the
end of the test where the pidfiles aren't found, but "our" server is running
This commit is contained in:
@@ -104,20 +104,24 @@ sub serverpid {
|
|||||||
# stop the given test server
|
# stop the given test server
|
||||||
#
|
#
|
||||||
sub stopserver {
|
sub stopserver {
|
||||||
my $PIDFILE = $_[0];
|
my $pid = $_[0];
|
||||||
# check for pidfile
|
# check for pidfile
|
||||||
if ( -f $PIDFILE ) {
|
if ( -f $pid ) {
|
||||||
my $PID = serverpid($PIDFILE);
|
my $PIDFILE = $pid;
|
||||||
|
$pid = serverpid($PIDFILE);
|
||||||
my $res = kill (9, $PID); # die!
|
|
||||||
unlink $PIDFILE; # server is killed
|
unlink $PIDFILE; # server is killed
|
||||||
|
}
|
||||||
|
elsif($pid <= 0) {
|
||||||
|
return; # this is not a good pid
|
||||||
|
}
|
||||||
|
|
||||||
if($res && $verbose) {
|
my $res = kill (9, $pid); # die!
|
||||||
print "RUN: Test server pid $PID signalled to die\n";
|
|
||||||
}
|
if($res && $verbose) {
|
||||||
elsif($verbose) {
|
print "RUN: Test server pid $pid signalled to die\n";
|
||||||
print "RUN: Test server pid $PID didn't exist\n";
|
}
|
||||||
}
|
elsif($verbose) {
|
||||||
|
print "RUN: Test server pid $pid didn't exist\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,24 +130,19 @@ sub stopserver {
|
|||||||
#
|
#
|
||||||
sub checkserver {
|
sub checkserver {
|
||||||
my ($pidfile)=@_;
|
my ($pidfile)=@_;
|
||||||
my $RUNNING=0;
|
my $pid=0;
|
||||||
my $PID=0;
|
|
||||||
|
|
||||||
# check for pidfile
|
# check for pidfile
|
||||||
if ( -f $pidfile ) {
|
if ( -f $pidfile ) {
|
||||||
$PID=serverpid($pidfile);
|
$pid=serverpid($pidfile);
|
||||||
if ($PID ne "" && kill(0, $PID)) {
|
if ($pid ne "" && kill(0, $pid)) {
|
||||||
$RUNNING=1;
|
return $pid;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$RUNNING=0;
|
return -$pid; # negative means dead process
|
||||||
$PID = -$PID; # negative means dead process
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
return 0;
|
||||||
$RUNNING=0;
|
|
||||||
}
|
|
||||||
return $PID
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
@@ -177,7 +176,7 @@ sub runhttpserver {
|
|||||||
}
|
}
|
||||||
elsif($data) {
|
elsif($data) {
|
||||||
print "RUN: Unknown HTTP server is running on port $HOSTPORT\n";
|
print "RUN: Unknown HTTP server is running on port $HOSTPORT\n";
|
||||||
return 2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($pid > 0) {
|
if($pid > 0) {
|
||||||
@@ -202,25 +201,26 @@ sub runhttpserver {
|
|||||||
# verify that our server is up and running:
|
# verify that our server is up and running:
|
||||||
my $data=`$CURL --silent -i $HOSTIP:$HOSTPORT/verifiedserver 2>/dev/null`;
|
my $data=`$CURL --silent -i $HOSTIP:$HOSTPORT/verifiedserver 2>/dev/null`;
|
||||||
|
|
||||||
if ( $data !~ /WE ROOLZ: (\d+)/ ) {
|
if ( $data =~ /WE ROOLZ: (\d+)/ ) {
|
||||||
sleep(1);
|
$pid = 0+$1;
|
||||||
next;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$verified = 1;
|
$verified = 1;
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
sleep(1);
|
||||||
|
next;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(!$verified) {
|
if(!$verified) {
|
||||||
print STDERR "RUN: failed to start our HTTP server\n";
|
print STDERR "RUN: failed to start our HTTP server\n";
|
||||||
return 1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($verbose) {
|
if($verbose) {
|
||||||
print "RUN: HTTP server is now verified to be our server\n";
|
print "RUN: HTTP server is now verified to be our server\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return $pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
@@ -230,12 +230,12 @@ sub runhttpsserver {
|
|||||||
my $verbose = $_[0];
|
my $verbose = $_[0];
|
||||||
my $STATUS;
|
my $STATUS;
|
||||||
my $RUNNING;
|
my $RUNNING;
|
||||||
my $PID=checkserver($HTTPSPIDFILE );
|
my $pid=checkserver($HTTPSPIDFILE );
|
||||||
|
|
||||||
if($PID > 0) {
|
if($pid > 0) {
|
||||||
# kill previous stunnel!
|
# kill previous stunnel!
|
||||||
if($verbose) {
|
if($verbose) {
|
||||||
print "RUN: kills off running stunnel at $PID\n";
|
print "RUN: kills off running stunnel at $pid\n";
|
||||||
}
|
}
|
||||||
stopserver($HTTPSPIDFILE);
|
stopserver($HTTPSPIDFILE);
|
||||||
}
|
}
|
||||||
@@ -247,6 +247,9 @@ sub runhttpsserver {
|
|||||||
print "CMD: $cmd\n";
|
print "CMD: $cmd\n";
|
||||||
}
|
}
|
||||||
sleep(1);
|
sleep(1);
|
||||||
|
$pid=checkserver($HTTPSPIDFILE);
|
||||||
|
|
||||||
|
return $pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
@@ -273,13 +276,13 @@ sub runftpserver {
|
|||||||
|
|
||||||
if ( $data =~ /WE ROOLZ: (\d+)/ ) {
|
if ( $data =~ /WE ROOLZ: (\d+)/ ) {
|
||||||
# this is our test server with a known pid!
|
# this is our test server with a known pid!
|
||||||
$pid = $1;
|
$pid = 0+$1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if($data || ($took > 2)) {
|
if($data || ($took > 2)) {
|
||||||
# this is not a known server
|
# this is not a known server
|
||||||
print "RUN: Unknown server on our favourite port: $FTPPORT\n";
|
print "RUN: Unknown server on our favourite port: $FTPPORT\n";
|
||||||
return 1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -290,7 +293,7 @@ sub runftpserver {
|
|||||||
if(!$res) {
|
if(!$res) {
|
||||||
print "RUN: Failed to kill our FTP test server, do it manually and",
|
print "RUN: Failed to kill our FTP test server, do it manually and",
|
||||||
" restart the tests.\n";
|
" restart the tests.\n";
|
||||||
exit;
|
return -1;
|
||||||
}
|
}
|
||||||
sleep(1);
|
sleep(1);
|
||||||
}
|
}
|
||||||
@@ -308,27 +311,29 @@ sub runftpserver {
|
|||||||
# verify that our server is up and running:
|
# verify that our server is up and running:
|
||||||
my $data=`$CURL --silent -i ftp://$HOSTIP:$FTPPORT/verifiedserver 2>/dev/null`;
|
my $data=`$CURL --silent -i ftp://$HOSTIP:$FTPPORT/verifiedserver 2>/dev/null`;
|
||||||
|
|
||||||
if ( $data !~ /WE ROOLZ: (\d+)/ ) {
|
if ( $data =~ /WE ROOLZ: (\d+)/ ) {
|
||||||
|
$pid = 0+$1;
|
||||||
|
$verified = 1;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
else {
|
||||||
if($verbose) {
|
if($verbose) {
|
||||||
print STDERR "RUN: Retrying FTP server existance in 1 sec\n";
|
print STDERR "RUN: Retrying FTP server existance in 1 sec\n";
|
||||||
}
|
}
|
||||||
sleep(1);
|
sleep(1);
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
$verified = 1;
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(!$verified) {
|
if(!$verified) {
|
||||||
die "RUN: failed to start our FTP server\n";
|
warn "RUN: failed to start our FTP server\n";
|
||||||
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($verbose) {
|
if($verbose) {
|
||||||
print "RUN: FTP server is now verified to be our server\n";
|
print "RUN: FTP server is now verified to be our server\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return $pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
@@ -338,12 +343,12 @@ sub runftpsserver {
|
|||||||
my $verbose = $_[0];
|
my $verbose = $_[0];
|
||||||
my $STATUS;
|
my $STATUS;
|
||||||
my $RUNNING;
|
my $RUNNING;
|
||||||
my $PID=checkserver($FTPSPIDFILE );
|
my $pid=checkserver($FTPSPIDFILE );
|
||||||
|
|
||||||
if($PID > 0) {
|
if($pid > 0) {
|
||||||
# kill previous stunnel!
|
# kill previous stunnel!
|
||||||
if($verbose) {
|
if($verbose) {
|
||||||
print "kills off running stunnel at $PID\n";
|
print "kills off running stunnel at $pid\n";
|
||||||
}
|
}
|
||||||
stopserver($FTPSPIDFILE);
|
stopserver($FTPSPIDFILE);
|
||||||
}
|
}
|
||||||
@@ -355,6 +360,10 @@ sub runftpsserver {
|
|||||||
print "CMD: $cmd\n";
|
print "CMD: $cmd\n";
|
||||||
}
|
}
|
||||||
sleep(1);
|
sleep(1);
|
||||||
|
|
||||||
|
$pid=checkserver($FTPSPIDFILE );
|
||||||
|
|
||||||
|
return $pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
@@ -871,7 +880,7 @@ sub singletest {
|
|||||||
chomp $serv;
|
chomp $serv;
|
||||||
if($run{$serv}) {
|
if($run{$serv}) {
|
||||||
stopserver($run{$serv}); # the pid file is in the hash table
|
stopserver($run{$serv}); # the pid file is in the hash table
|
||||||
$run{$serv}=""; # clear it
|
$run{$serv}=0; # clear pid
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
print STDERR "RUN: The $serv server is not running\n";
|
print STDERR "RUN: The $serv server is not running\n";
|
||||||
@@ -919,6 +928,7 @@ sub singletest {
|
|||||||
|
|
||||||
sub serverfortest {
|
sub serverfortest {
|
||||||
my ($testnum)=@_;
|
my ($testnum)=@_;
|
||||||
|
my $pid;
|
||||||
|
|
||||||
# load the test case file definition
|
# load the test case file definition
|
||||||
if(loadtest("${TESTDIR}/test${testnum}")) {
|
if(loadtest("${TESTDIR}/test${testnum}")) {
|
||||||
@@ -941,18 +951,20 @@ sub serverfortest {
|
|||||||
$what =~ s/[^a-z]//g;
|
$what =~ s/[^a-z]//g;
|
||||||
if($what eq "ftp") {
|
if($what eq "ftp") {
|
||||||
if(!$run{'ftp'}) {
|
if(!$run{'ftp'}) {
|
||||||
if(runftpserver($verbose)) {
|
$pid = runftpserver($verbose);
|
||||||
|
if($pid <= 0) {
|
||||||
return 2; # error starting it
|
return 2; # error starting it
|
||||||
}
|
}
|
||||||
$run{'ftp'}=$FTPPIDFILE;
|
$run{'ftp'}=$pid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif($what eq "http") {
|
elsif($what eq "http") {
|
||||||
if(!$run{'http'}) {
|
if(!$run{'http'}) {
|
||||||
if(runhttpserver($verbose)) {
|
$pid = runhttpserver($verbose);
|
||||||
|
if($pid <= 0) {
|
||||||
return 2; # error starting
|
return 2; # error starting
|
||||||
}
|
}
|
||||||
$run{'http'}=$HTTPPIDFILE;
|
$run{'http'}=$pid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif($what eq "ftps") {
|
elsif($what eq "ftps") {
|
||||||
@@ -962,14 +974,18 @@ sub serverfortest {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if(!$run{'ftp'}) {
|
if(!$run{'ftp'}) {
|
||||||
if(runftpserver($verbose)) {
|
$pid = runftpserver($verbose);
|
||||||
|
if($pid <= 0) {
|
||||||
return 2; # error starting it
|
return 2; # error starting it
|
||||||
}
|
}
|
||||||
$run{'ftp'}=$FTPPIDFILE;
|
$run{'ftp'}=$pid;
|
||||||
}
|
}
|
||||||
if(!$run{'ftps'}) {
|
if(!$run{'ftps'}) {
|
||||||
runftpsserver($verbose);
|
$pid = runftpsserver($verbose);
|
||||||
$run{'ftps'}=$FTPSPIDFILE;
|
if($pid <= 0) {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
$run{'ftps'}=$pid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif($what eq "file") {
|
elsif($what eq "file") {
|
||||||
@@ -982,14 +998,18 @@ sub serverfortest {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if(!$run{'http'}) {
|
if(!$run{'http'}) {
|
||||||
if(runhttpserver($verbose)) {
|
$pid = runhttpserver($verbose);
|
||||||
|
if($pid <= 0) {
|
||||||
return 2; # problems starting server
|
return 2; # problems starting server
|
||||||
}
|
}
|
||||||
$run{'http'}=$HTTPPIDFILE;
|
$run{'http'}=$pid;
|
||||||
}
|
}
|
||||||
if(!$run{'https'}) {
|
if(!$run{'https'}) {
|
||||||
runhttpsserver($verbose);
|
$pid = runhttpsserver($verbose);
|
||||||
$run{'https'}=$HTTPSPIDFILE;
|
if($pid <= 0) {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
$run{'https'}=$pid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif($what eq "none") {
|
elsif($what eq "none") {
|
||||||
@@ -1165,7 +1185,9 @@ close(CMDLOG);
|
|||||||
# Tests done, stop the servers
|
# Tests done, stop the servers
|
||||||
#
|
#
|
||||||
|
|
||||||
|
print "Shutting down test suite servers:\n" if (!$short);
|
||||||
for(keys %run) {
|
for(keys %run) {
|
||||||
|
printf STDERR ("* kill pid for %-5s => %-5d\n", $_, $run{$_}) if(!$short);
|
||||||
stopserver($run{$_}); # the pid file is in the hash table
|
stopserver($run{$_}); # the pid file is in the hash table
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user