mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 16:18:48 -05:00
157 lines
3.0 KiB
Bash
Executable File
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
|