aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/runtests.pl58
1 files changed, 43 insertions, 15 deletions
diff --git a/tests/runtests.pl b/tests/runtests.pl
index a406067fa..a87922a67 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -129,25 +129,39 @@ sub torture {
# loop over the different tests commands
for(@test) {
- my $testcmd = "$CURL $_ >log/torture.stdout 2>log/torture.stderr";
-
- subVariables(\$testcmd);
-
- # First get test server, ignore the output/result
- system($testcmd);
+ my $cmdargs = "$_";
$c++;
if($tortnum && ($tortnum != $c)) {
next;
}
+ print "We want test $c\n";
+
+ my $redir=">log/torture.stdout 2>log/torture.stderr";
+
+ subVariables(\$cmdargs);
+
+ my $testcmd = "$CURL $cmdargs $redir";
+
+ # First get URL from test server, ignore the output/result
+ system($testcmd);
+
+ # Set up gdb-stuff if desired
+ if($gdbthis) {
+ open(GDBCMD, ">log/gdbcmd");
+ print GDBCMD "set args $cmdargs\n";
+ print GDBCMD "show args\n";
+ close(GDBCMD);
+ $testcmd = "gdb $CURL -x log/gdbcmd";
+ }
print "Torture test $c starting up\n",
" CMD: $testcmd\n";
# memanalyze -v is our friend, get the number of allocations made
my $count;
- my @out = `$memanalyze -v memdump`;
+ my @out = `$memanalyze -v $memdump`;
for(@out) {
if(/^Allocations: (\d+)/) {
$count = $1;
@@ -156,6 +170,7 @@ sub torture {
}
if(!$count) {
# hm, no allocations in this fetch, ignore and get next
+ print "BEEEP, no allocs found for test $c!!!\n";
next;
}
print " $count allocations to excersize\n";
@@ -167,12 +182,16 @@ sub torture {
if($tortalloc && ($tortalloc != $limit)) {
next;
}
+
+ print "Alloc no: $limit\r" if(!$gdbthis);
# make the memory allocation function number $limit return failure
$ENV{'CURL_MEMLIMIT'} = $limit;
# remove memdump first to be sure we get a new nice and clean one
- unlink("memdump");
+ unlink($memdump);
+
+ print "**> Alloc number $limit is now set to fail <**\n" if($gdbthis);
my $ret = system($testcmd);
@@ -195,6 +214,7 @@ sub torture {
if($leak) {
print "** MEMORY FAILURE\n";
print @memdata;
+ print `$memanalyze -l $memdump`;
$fail = 1;
}
}
@@ -205,10 +225,12 @@ sub torture {
exit 1;
}
}
- print " torture test $c did GOOD\n";
+ print "\n torture test $c did GOOD\n";
# all is well, now test a different kind of URL
}
+ stopservers();
+ exit; # for now, we stop after these tests
}
#######################################################################
@@ -1075,9 +1097,9 @@ sub singletest {
#######################################################################
# Stop all running test servers
sub stopservers {
- print "Shutting down test suite servers:\n" if (!$short);
+ print "Shutting down test suite servers:\n" if ($verbose);
for(keys %run) {
- printf ("* kill pid for %-5s => %-5d\n", $_, $run{$_}) if(!$short);
+ printf ("* kill pid for %-5s => %-5d\n", $_, $run{$_}) if($verbose);
stopserver($run{$_}); # the pid file is in the hash table
}
}
@@ -1097,6 +1119,7 @@ sub startservers {
if($pid <= 0) {
return 2; # error starting it
}
+ printf ("* pid ftp => %-5d\n", $pid) if($verbose);
$run{'ftp'}=$pid;
}
}
@@ -1105,7 +1128,8 @@ sub startservers {
$pid = runhttpserver($verbose);
if($pid <= 0) {
return 2; # error starting
- }
+ }
+ printf ("* pid http => %-5d\n", $pid) if($verbose);
$run{'http'}=$pid;
}
}
@@ -1127,6 +1151,7 @@ sub startservers {
if($pid <= 0) {
return 2;
}
+ printf ("* pid ftps => %-5d\n", $pid) if($verbose);
$run{'ftps'}=$pid;
}
}
@@ -1151,6 +1176,7 @@ sub startservers {
if($pid <= 0) {
return 2;
}
+ printf ("* pid https => %-5d\n", $pid) if($verbose);
$run{'https'}=$pid;
}
}
@@ -1229,8 +1255,11 @@ do {
# torture
$torture=1;
my $xtra = $1;
- if($xtra =~ /(\d+),(\d+)/) {
- ($tortnum, $tortalloc)= ($1, $2);
+ if($xtra =~ s/^(\d+)//) {
+ $tortnum = $1;
+ }
+ if($xtra =~ s/(\d+)$//) {
+ $tortalloc = $1;
}
}
elsif($ARGV[0] eq "-a") {
@@ -1331,7 +1360,6 @@ open(CMDLOG, ">$CURLLOG") ||
#
if($torture) {
&torture();
- exit; # for now, we stop after these tests
}
#######################################################################
# The main test-loop