aboutsummaryrefslogtreecommitdiff
path: root/tests/runtests.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/runtests.sh')
-rwxr-xr-xtests/runtests.sh156
1 files changed, 156 insertions, 0 deletions
diff --git a/tests/runtests.sh b/tests/runtests.sh
new file mode 100755
index 000000000..de49aad7e
--- /dev/null
+++ b/tests/runtests.sh
@@ -0,0 +1,156 @@
+#!/bin/sh
+#
+# Main curl test script
+#
+#######################################################################
+# These should be the only variables that might be needed to get edited:
+
+HOSTIP=127.0.0.1
+HOSTPORT=8999
+CURL=../src/curl
+LOGDIR=log
+SERVERIN=$LOGDIR/server.input
+CURLOUT=$LOGDIR/curl.out
+NC=nc
+
+# Normally, all test cases should be run, but at times it is handy to
+# simply run a particular one:
+TESTCASES=" 1 2 3 4"
+
+
+compare () {
+ # filter off the $4 pattern before compare!
+
+ first="$1"
+ sec="$2"
+ text="$3"
+ strip="$4"
+
+ if test -n "$strip"; then
+ egrep -v "$strip" < $first > $LOGDIR/generated.tmp
+ egrep -v "$strip" < $sec > $LOGDIR/stored.tmp
+
+ first="$LOGDIR/generated.tmp"
+ sec="$LOGDIR/stored.tmp"
+ fi
+
+ cmp $first $sec
+ if [ $? != "0" ]; then
+ echo " $text FAILED"
+ return 1
+ else
+ echo " $text OK"
+ return 0
+ fi
+}
+
+singletest ()
+{
+ NUMBER="$1"
+
+ REPLY=data/reply$NUMBER.txt
+ CURLCMD=data/command$NUMBER.txt
+ HTTP=data/http$NUMBER.txt
+ DESC=`cat data/name$NUMBER.txt | tr -d '\012'`
+
+ echo "test $NUMBER... [$DESC]"
+
+ ./runserv.pl $HOSTIP $HOSTPORT &
+
+ sleep 1
+
+ # get the command line options to use
+ cmd=`sed -e "s/%HOSTIP/$HOSTIP/g" -e "s/%HOSTPORT/$HOSTPORT/g" <$CURLCMD `
+
+ # run curl
+ CMDLINE="$CURL -o $CURLOUT -i --silent $cmd"
+
+ # we do it the eval way to deal with quotes and similar stuff
+ eval $CMDLINE
+
+ if test -n "$verbose"; then
+ echo "$CMDLINE"
+ fi
+
+ if [ $? != "0" ]; then
+ echo "Failed to invoke curl for test $NUMBER"
+ else
+ # when curl is done, the server has closed down as well
+
+ # verify the received data
+ compare $CURLOUT $REPLY " fetch"
+
+ if [ $? != "0" ]; then
+ exit;
+ fi
+
+ # verify the sent request
+ compare $SERVERIN $HTTP " command" "User-Agent:"
+
+ if [ $? != "0" ]; then
+ exit;
+ fi
+ fi
+
+ return 0
+}
+
+
+#######################################################################
+# Check options to this test program
+#
+
+if test "$1" = "-v"; then
+ verbose="1"
+fi
+
+if test -n "$NEWSETUP"; then
+
+ #######################################################################
+ # Make sure the Host: lines are correct for this setup
+ #
+
+ HOST="$HOSTIP:$HOSTPORT"
+ for test in data/http*.txt; do
+ sed -e "s/Host: \([0-9.:]*\)/Host: $HOST/g" < $test > $test.tmp
+ mv $test.tmp $test
+ done
+fi
+
+#######################################################################
+# Output curl version being tested
+#
+VERSION=`$CURL -V`
+
+echo "Running tests on:"
+echo $VERSION
+echo ""
+
+#######################################################################
+# remove and recreate logging directory:
+#
+rm -rf $LOGDIR
+mkdir $LOGDIR
+
+#######################################################################
+# First, start the TCP server
+#
+#./runserv.pl $HOSTIP $HOSTPORT &
+
+#if [ $? != "0" ]; then
+# echo "failed starting the TCP server"
+# exit
+#fi
+
+#sleep 1 # give it a second to start
+
+#######################################################################
+# The main test-loop
+#
+
+for NUMBER in $TESTCASES; do
+
+ singletest $NUMBER
+
+ # loop for next test
+done