diff options
Diffstat (limited to 'tests/runtests.sh')
-rwxr-xr-x | tests/runtests.sh | 156 |
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 |