curl/tests/runtests.sh

157 lines
3.0 KiB
Bash
Executable File

#!/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