mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
starts and stops both HTTP and FTP servers now
checks memanalyze output better filters PORT output when doing FTP compares
This commit is contained in:
parent
2830504f4f
commit
eb993c28ca
@ -9,7 +9,8 @@
|
||||
use strict;
|
||||
|
||||
my $HOSTIP="127.0.0.1";
|
||||
my $HOSTPORT=8999;
|
||||
my $HOSTPORT=8999; # bad name, but this is the HTTP server port
|
||||
my $FTPPORT=8921; # this is the FTP server port
|
||||
my $CURL="../src/curl";
|
||||
my $LOGDIR="log";
|
||||
my $TESTDIR="data";
|
||||
@ -28,6 +29,7 @@ my $TESTCASES="all";
|
||||
#
|
||||
|
||||
my $PIDFILE=".server.pid";
|
||||
my $FTPPIDFILE=".ftpserver.pid";
|
||||
|
||||
# this gets set if curl is compiled with memory debugging:
|
||||
my $memory_debug=0;
|
||||
@ -47,28 +49,33 @@ my $verbose;
|
||||
my $anyway;
|
||||
|
||||
#######################################################################
|
||||
# Return the pid of the http server as found in the pid file
|
||||
# Return the pid of the server as found in the given pid file
|
||||
#
|
||||
sub serverpid {
|
||||
my $PIDFILE = $_[0];
|
||||
open(PFILE, "<$PIDFILE");
|
||||
my $PID=<PFILE>;
|
||||
close(PFILE);
|
||||
chomp $PID;
|
||||
return $PID;
|
||||
}
|
||||
|
||||
#######################################################################
|
||||
# stop the test http server
|
||||
# stop the given test server
|
||||
#
|
||||
sub stopserver {
|
||||
my $PIDFILE = $_[0];
|
||||
# check for pidfile
|
||||
if ( -f $PIDFILE ) {
|
||||
my $PID = serverpid();
|
||||
my $PID = serverpid($PIDFILE);
|
||||
|
||||
my $res = kill (9, $PID); # die!
|
||||
unlink $PIDFILE; # server is killed
|
||||
|
||||
if($res && $verbose) {
|
||||
print "TCP server signalled to die\n";
|
||||
print "Test server pid $PID signalled to die\n";
|
||||
}
|
||||
elsif($verbose) {
|
||||
print "Test server pid $PID didn't exist\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -77,13 +84,13 @@ sub stopserver {
|
||||
# start the http server, or if it already runs, verify that it is our
|
||||
# test server on the test-port!
|
||||
#
|
||||
sub runserver {
|
||||
sub runhttpserver {
|
||||
my $verbose = $_[0];
|
||||
my $STATUS;
|
||||
my $RUNNING;
|
||||
# check for pidfile
|
||||
if ( -f $PIDFILE ) {
|
||||
my $PID=serverpid();
|
||||
my $PID=serverpid($PIDFILE);
|
||||
if ($PID ne "" && kill(0, $PID)) {
|
||||
$STATUS="httpd (pid $PID) running";
|
||||
$RUNNING=1;
|
||||
@ -118,6 +125,49 @@ sub runserver {
|
||||
}
|
||||
}
|
||||
|
||||
sub runftpserver {
|
||||
my $verbose = $_[0];
|
||||
my $STATUS;
|
||||
my $RUNNING;
|
||||
# check for pidfile
|
||||
if ( -f $FTPPIDFILE ) {
|
||||
my $PID=serverpid($FTPPIDFILE);
|
||||
if ($PID ne "" && kill(0, $PID)) {
|
||||
$STATUS="ftpd (pid $PID) running";
|
||||
$RUNNING=1;
|
||||
}
|
||||
else {
|
||||
$STATUS="ftpd (pid $PID?) not running";
|
||||
$RUNNING=0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$STATUS="ftpd (no pid file) not running";
|
||||
$RUNNING=0;
|
||||
}
|
||||
|
||||
if ($RUNNING != 1) {
|
||||
system("perl ./ftpserver.pl $FTPPORT &");
|
||||
sleep 1; # give it a little time to start
|
||||
}
|
||||
else {
|
||||
print "$STATUS\n";
|
||||
|
||||
# verify that our server is one one running on this port:
|
||||
my $data=`$CURL --silent -i ftp://$HOSTIP:$FTPPORT/verifiedserver`;
|
||||
|
||||
if ( $data !~ /WE ROOLZ/ ) {
|
||||
print "Another FTP server is running on port $FTPPORT\n",
|
||||
"Edit runtests.pl to use another FTP port and rerun the ",
|
||||
"test script\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
print "The running FTP server has been verified to be our server\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#######################################################################
|
||||
# This function compares two binary files and return non-zero if they
|
||||
# differ
|
||||
@ -276,8 +326,8 @@ sub singletest {
|
||||
# curl command to run
|
||||
my $CURLCMD="$TESTDIR/command$NUMBER.txt";
|
||||
|
||||
# this is the valid HTTP we should generate
|
||||
my $HTTP="$TESTDIR/http$NUMBER.txt";
|
||||
# this is the valid protocol file we should generate
|
||||
my $PROT="$TESTDIR/prot$NUMBER.txt";
|
||||
|
||||
# name of the test
|
||||
open(N, "<$TESTDIR/name$NUMBER.txt") ||
|
||||
@ -308,6 +358,7 @@ sub singletest {
|
||||
# make some nice replace operations
|
||||
$cmd =~ s/%HOSTIP/$HOSTIP/g;
|
||||
$cmd =~ s/%HOSTPORT/$HOSTPORT/g;
|
||||
$cmd =~ s/%FTPPORT/$FTPPORT/g;
|
||||
#$cmd =~ s/%HOSTNAME/$HOSTNAME/g;
|
||||
|
||||
if($memory_debug) {
|
||||
@ -391,8 +442,8 @@ sub singletest {
|
||||
}
|
||||
}
|
||||
|
||||
if (! -r $HTTP) {
|
||||
print "** Missing HTTP file for test $NUMBER",
|
||||
if (! -r $PROT) {
|
||||
print "** Missing protocol file for test $NUMBER",
|
||||
", should be similar to $SERVERIN\n";
|
||||
return 1;
|
||||
}
|
||||
@ -403,8 +454,8 @@ sub singletest {
|
||||
# always differ!
|
||||
|
||||
# verify the sent request
|
||||
$res = compare($SERVERIN, $HTTP, "http",
|
||||
"^(User-Agent:|--curl|Content-Type: multipart/form-data; boundary=).*\r\n");
|
||||
$res = compare($SERVERIN, $PROT, "http",
|
||||
"^(User-Agent:|--curl|Content-Type: multipart/form-data; boundary=|PORT 127,0,0,1).*\r\n");
|
||||
if($res) {
|
||||
return 1;
|
||||
}
|
||||
@ -422,12 +473,14 @@ sub singletest {
|
||||
my @memdata=`$memanalyze < $memdump`;
|
||||
my $leak=0;
|
||||
for(@memdata) {
|
||||
if($_ =~ /Leak detected/) {
|
||||
if($_ ne "") {
|
||||
# well it could be other memory problems as well, but
|
||||
# we call it leak for short here
|
||||
$leak=1;
|
||||
}
|
||||
}
|
||||
if($leak) {
|
||||
print "\n** MEMORY LEAK\n";
|
||||
print "\n** MEMORY FAILURE\n";
|
||||
print @memdata;
|
||||
return 1;
|
||||
}
|
||||
@ -495,10 +548,11 @@ cleardir($LOGDIR);
|
||||
mkdir($LOGDIR, 0777);
|
||||
|
||||
#######################################################################
|
||||
# First, start the TCP server
|
||||
# First, start our test servers
|
||||
#
|
||||
|
||||
runserver($verbose);
|
||||
runhttpserver($verbose);
|
||||
runftpserver($verbose);
|
||||
|
||||
#######################################################################
|
||||
# If 'all' tests are requested, find out all test numbers
|
||||
@ -539,7 +593,9 @@ foreach $testnum (split(" ", $TESTCASES)) {
|
||||
}
|
||||
|
||||
#######################################################################
|
||||
# Tests done, stop the server
|
||||
# Tests done, stop the servers
|
||||
#
|
||||
|
||||
stopserver();
|
||||
stopserver($FTPPIDFILE);
|
||||
stopserver($PIDFILE);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user