File: testminiwget.sh

package info (click to toggle)
miniupnpc 2.3.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 992 kB
  • sloc: ansic: 7,885; makefile: 325; xml: 207; python: 170; sh: 161; java: 89
file content (133 lines) | stat: -rwxr-xr-x 3,060 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/sh
# $Id: testminiwget.sh,v 1.20 2022/10/21 21:09:42 nanard Exp $
# vim: tabstop=4 shiftwidth=4 noexpandtab
# project miniupnp : http://miniupnp.free.fr/
#                    or https://miniupnp.tuxfamily.org/
# (c) 2011-2022 Thomas Bernard
#
# test program for miniwget.c
# is usually invoked by "make check"
#
# This test program :
#  1 - launches a local HTTP server (minihttptestserver)
#  2 - uses testminiwget to retrieve data from this server
#  3 - compares served and received data
#  4 - kills the local HTTP server and exits
#
# The script was tested and works with ksh, bash
# it should now also run with dash

TMPD=`mktemp -d -t miniwgetXXXXXXXXXX`
if [ -z "$TESTSERVER" ] ; then
  TESTSERVER=./build/minihttptestserver
fi
if [ -z "$TESTMINIWGET" ] ; then
  TESTMINIWGET=./build/testminiwget
fi
HTTPSERVEROUT="${TMPD}/httpserverout"
EXPECTEDFILE="${TMPD}/expectedfile"
DOWNLOADEDFILE="${TMPD}/downloadedfile"
PORT=
RET=0
IPCONFIG=$(which ifconfig)
IP=$(which ip)
if [ "$IP" ] ; then
	if ! $IP addr | grep inet6 ; then
		HAVE_IPV6=no
	fi
else
	if [ -z "$IPCONFIG" ] ; then
		IPCONFIG="/sbin/ifconfig"
	fi

	if ! $IPCONFIG -a | grep inet6 ; then
		HAVE_IPV6=no
	fi
fi

case "$HAVE_IPV6" in
    n|no|0)
        ADDR=localhost
        SERVERARGS=""
        ;;
    *)
        ADDR="[::1]"
        SERVERARGS="-6"
        ;;

esac

if [ ! -x "$TESTSERVER" ] || [ ! -x "$TESTMINIWGET" ] ; then
	echo "Please build $TESTSERVER and $TESTMINIWGET"
	#make minihttptestserver
	#make testminiwget
	exit 1
fi

# launching the test HTTP server
$TESTSERVER $SERVERARGS -e $EXPECTEDFILE > $HTTPSERVEROUT &
SERVERPID=$!
while [ -z "$PORT" ]; do
	sleep 1
	PORT=`cat $HTTPSERVEROUT | sed 's/Listening on port \([0-9]*\)/\1/' `
done
if [ "$PORT" = "*** ERROR ***" ]; then
	echo "HTTP test server error"
	echo "Network config :"
	$IPCONFIG -a
	exit 2
fi
echo "Test HTTP server is listening on $PORT"

URL1="http://$ADDR:$PORT/index.html"
URL2="http://$ADDR:$PORT/chunked"
URL3="http://$ADDR:$PORT/addcrap"
URL4="http://$ADDR:$PORT/malformed"

echo "standard test ..."
$TESTMINIWGET $URL1 "${DOWNLOADEDFILE}.1"
if cmp $EXPECTEDFILE "${DOWNLOADEDFILE}.1" ; then
	echo "ok"
else
	echo "standard test FAILED"
	RET=1
fi

echo "chunked transfert encoding test ..."
$TESTMINIWGET $URL2 "${DOWNLOADEDFILE}.2"
if cmp $EXPECTEDFILE "${DOWNLOADEDFILE}.2" ; then
	echo "ok"
else
	echo "chunked transfert encoding test FAILED"
	RET=1
fi

echo "response too long test ..."
$TESTMINIWGET $URL3 "${DOWNLOADEDFILE}.3"
if cmp $EXPECTEDFILE "${DOWNLOADEDFILE}.3" ; then
	echo "ok"
else
	echo "response too long test FAILED"
	RET=1
fi

echo "malformed response test ..."
$TESTMINIWGET $URL4 "${DOWNLOADEDFILE}.4"

# kill the test HTTP server
kill $SERVERPID
wait $SERVERPID

# remove temporary files (for success cases)
if [ $RET -eq 0 ]; then
	rm -f "${DOWNLOADEDFILE}.1"
	rm -f "${DOWNLOADEDFILE}.2"
	rm -f "${DOWNLOADEDFILE}.3"
	rm -f $EXPECTEDFILE $HTTPSERVEROUT
	rmdir ${TMPD}
else
	echo "at least one of the test FAILED"
	echo "directory ${TMPD} is left intact"
fi
exit $RET