]> granicus.if.org Git - curl/commitdiff
Improved the test harness to allow running test servers on other than
authorDan Fandrich <dan@coneharvesters.com>
Mon, 30 Apr 2007 20:15:33 +0000 (20:15 +0000)
committerDan Fandrich <dan@coneharvesters.com>
Mon, 30 Apr 2007 20:15:33 +0000 (20:15 +0000)
the default port numbers, allowing more than one test suite to run
simultaneously on the same host.

CHANGES
tests/FILEFORMAT
tests/README
tests/data/test75
tests/libtest/Makefile.am
tests/libtest/test75.pl [new file with mode: 0755]
tests/runtests.pl

diff --git a/CHANGES b/CHANGES
index 4130e21eb90e0b4aca666061dd25bf78f5472b03..54514b2df87c0f79e5771846aafc82fd031a1912 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,11 @@
 
                                   Changelog
 
+Dan F (30 April 2007)
+- Improved the test harness to allow running test servers on other than
+  the default port numbers, allowing more than one test suite to run
+  simultaneously on the same host.
+
 Daniel S (28 April 2007)
 - Peter O'Gorman fixed libcurl to not init GnuTLS as early as we did before,
   since it then inits libgcrypt and libgcrypt is being evil and EXITS the
index d0cb8b44ead7ec766b7812d48b62546943619d64..3264ef5f7df17f13261a32e3cf568c7af133a769 100644 (file)
@@ -265,6 +265,7 @@ advanced. Example: "s/^EPRT .*/EPRT stripped/"
 the protocol dump curl should transmit, if 'nonewline' is set, we will cut
 off the trailing newline of this given data before comparing with the one
 actually sent by the client
+Variables are substituted as in the <command> section.
 </protocol>
 <stdout [mode="text"]>
 This verifies that this data was passed to stdout.
index 56ebab9528e7430e7f1c73ec6ed151a6c7b8e74d..8eaeee21ffd7b02f27370d0951f6f6af3938e47b 100644 (file)
@@ -12,7 +12,7 @@ Requires:
   stunnel (for HTTPS and FTPS tests)
   sshd (for SCP and SFTP tests; OpenSSH ver. 3.8 is known to work)
 
-TCP ports used:
+TCP ports used by default:
 
   - 8990 on localhost for HTTP tests
   - 8991 on localhost for HTTPS tests
@@ -27,7 +27,11 @@ TCP ports used:
   The test suite runs simple FTP, HTTP and TFTP servers on these ports to
   which it makes requests.  For SSL tests, it runs stunnel to handle
   encryption to the regular servers. For SSH, it runs a standard OpenSSH
-  server.
+  server.  
+
+  The base port number shown above can be changed using runtests' -b option
+  to allow running more than one instance of the test suite simultaneously
+  on one machine.
 
 Run:
   'make test'. This invokes the 'runtests.pl' perl script. Edit the top
index f0309e8f4a362fd3fd62b5c13d4d5d917752c885..63695f50042ea92ebfc4caa1077e3b9f2ee91bc8 100644 (file)
@@ -26,6 +26,11 @@ HTTP, urlglob retrieval with bad range
  <command option="no-output">
 "http://%HOSTIP:%HTTPPORT/[2-1]" -o "log/weee#1.dump" --stderr -
 </command>
+# The error message on stdout implicitly depends on the length of the
+# URL, so refuse to run if the length is unexpected.
+<precheck>
+perl %SRCDIR/libtest/test75.pl http://%HOSTIP:%HTTPPORT/ 22
+</precheck>
 </client>
 
 #
index 35709b8ec214f04341ad895bd76f77420844e5fb..276ec85ebd00f74cd7219b3688cdc52635a714d6 100644 (file)
@@ -35,7 +35,7 @@ INCLUDES = -I$(top_srcdir)/include/curl \
 
 LIBDIR = $(top_builddir)/lib
 
-EXTRA_DIST = test307.pl
+EXTRA_DIST = test75.pl test307.pl test610.pl
 
 # files used only in some libcurl test programs
 TESTUTIL = testutil.c testutil.h
diff --git a/tests/libtest/test75.pl b/tests/libtest/test75.pl
new file mode 100755 (executable)
index 0000000..01a53ff
--- /dev/null
@@ -0,0 +1,13 @@
+#!/usr/bin/env perl
+# Check that the length of a given URL is correct
+if ( $#ARGV != 1 ) 
+{
+       print "Usage: $0 string length\n";
+       exit 3;
+}
+if (length(@ARGV[0]) != @ARGV[1])
+{
+       print "Given host IP and port not supported\n";
+       exit 1;
+}
+exit 0;
index 851de6f5aae3f73be02f6647bbaa4329bc2d968b..76adec16195609095ad32c28385e55e46b3d5c79 100755 (executable)
@@ -2253,6 +2253,12 @@ do {
         # verbose output
         $verbose=1;
     }
+    elsif($ARGV[0] =~ /^-b(.*)/) {
+        my $portno=$1;
+        if($portno =~ s/(\d+)$//) {
+            $base = int $1;
+        }
+    }
     elsif ($ARGV[0] eq "-c") {
         # use this path to curl instead of default
         $DBGCURL=$CURL=$ARGV[1];
@@ -2309,20 +2315,22 @@ do {
     elsif($ARGV[0] eq "-h") {
         # show help text
         print <<EOHELP
-Usage: runtests.pl [options]
+Usage: runtests.pl [options] [test number(s)]
   -a       continue even if a test fails
+  -bN      use base port number N for test servers (default $base)
+  -c path  use this curl executable
   -d       display server debug info
   -g       run the test case with gdb
   -h       this help text
   -k       keep stdout and stderr files present after tests
   -l       list all test case names/descriptions
-  -n       No valgrind
-  -p       Print log file contents when a test fails
+  -n       no valgrind
+  -p       print log file contents when a test fails
   -s       short output
-  -t       torture
+  -t[N]    torture (simulate memory alloc failures); N means fail Nth alloc
   -v       verbose output
   [num]    like "5 6 9" or " 5 to 22 " to run those tests only
-  ![num]   like "!5 !6 !9" to disable those tests
+  [!num]   like "!5 !6 !9" to disable those tests
 EOHELP
     ;
         exit;