Annotation of embedaddon/miniupnpd/miniupnpc/testminiwget.sh, revision 1.1.1.1

1.1       misho       1: #!/bin/sh
                      2: # $Id: testminiwget.sh,v 1.18 2020/05/29 21:14:22 nanard Exp $
                      3: # vim: tabstop=4 shiftwidth=4 noexpandtab
                      4: # project miniupnp : http://miniupnp.free.fr/
                      5: #                    or https://miniupnp.tuxfamily.org/
                      6: # (c) 2011-2022 Thomas Bernard
                      7: #
                      8: # test program for miniwget.c
                      9: # is usually invoked by "make check"
                     10: #
                     11: # This test program :
                     12: #  1 - launches a local HTTP server (minihttptestserver)
                     13: #  2 - uses testminiwget to retrieve data from this server
                     14: #  3 - compares served and received data
                     15: #  4 - kills the local HTTP server and exits
                     16: #
                     17: # The script was tested and works with ksh, bash
                     18: # it should now also run with dash
                     19: 
                     20: TMPD=`mktemp -d -t miniwgetXXXXXXXXXX`
                     21: if [ -z "$TESTSERVER" ] ; then
                     22:   TESTSERVER=./build/minihttptestserver
                     23: fi
                     24: if [ -z "$TESTMINIWGET" ] ; then
                     25:   TESTMINIWGET=./build/testminiwget
                     26: fi
                     27: HTTPSERVEROUT="${TMPD}/httpserverout"
                     28: EXPECTEDFILE="${TMPD}/expectedfile"
                     29: DOWNLOADEDFILE="${TMPD}/downloadedfile"
                     30: PORT=
                     31: RET=0
                     32: IPCONFIG=$(which ifconfig)
                     33: IP=$(which ip)
                     34: if [ "$IP" ] ; then
                     35:    if ! $IP addr | grep inet6 ; then
                     36:        HAVE_IPV6=no
                     37:    fi
                     38: else
                     39:    if [ -z "$IPCONFIG" ] ; then
                     40:        IPCONFIG="/sbin/ifconfig"
                     41:    fi
                     42: 
                     43:    if ! $IPCONFIG -a | grep inet6 ; then
                     44:        HAVE_IPV6=no
                     45:    fi
                     46: fi
                     47: 
                     48: case "$HAVE_IPV6" in
                     49:     n|no|0)
                     50:         ADDR=localhost
                     51:         SERVERARGS=""
                     52:         ;;
                     53:     *)
                     54:         ADDR="[::1]"
                     55:         SERVERARGS="-6"
                     56:         ;;
                     57: 
                     58: esac
                     59: 
                     60: if [ ! -x "$TESTSERVER" ] || [ ! -x "$TESTMINIWGET" ] ; then
                     61:    echo "Please build $TESTSERVER and $TESTMINIWGET"
                     62:    #make minihttptestserver
                     63:    #make testminiwget
                     64:    exit 1
                     65: fi
                     66: 
                     67: # launching the test HTTP server
                     68: $TESTSERVER $SERVERARGS -e $EXPECTEDFILE > $HTTPSERVEROUT &
                     69: SERVERPID=$!
                     70: while [ -z "$PORT" ]; do
                     71:    sleep 1
                     72:    PORT=`cat $HTTPSERVEROUT | sed 's/Listening on port \([0-9]*\)/\1/' `
                     73: done
                     74: if [ "$PORT" = "*** ERROR ***" ]; then
                     75:    echo "HTTP test server error"
                     76:    echo "Network config :"
                     77:    $IPCONFIG -a
                     78:    exit 2
                     79: fi
                     80: echo "Test HTTP server is listening on $PORT"
                     81: 
                     82: URL1="http://$ADDR:$PORT/index.html"
                     83: URL2="http://$ADDR:$PORT/chunked"
                     84: URL3="http://$ADDR:$PORT/addcrap"
                     85: URL4="http://$ADDR:$PORT/malformed"
                     86: 
                     87: echo "standard test ..."
                     88: $TESTMINIWGET $URL1 "${DOWNLOADEDFILE}.1"
                     89: if cmp $EXPECTEDFILE "${DOWNLOADEDFILE}.1" ; then
                     90:    echo "ok"
                     91: else
                     92:    echo "standard test FAILED"
                     93:    RET=1
                     94: fi
                     95: 
                     96: echo "chunked transfert encoding test ..."
                     97: $TESTMINIWGET $URL2 "${DOWNLOADEDFILE}.2"
                     98: if cmp $EXPECTEDFILE "${DOWNLOADEDFILE}.2" ; then
                     99:    echo "ok"
                    100: else
                    101:    echo "chunked transfert encoding test FAILED"
                    102:    RET=1
                    103: fi
                    104: 
                    105: echo "response too long test ..."
                    106: $TESTMINIWGET $URL3 "${DOWNLOADEDFILE}.3"
                    107: if cmp $EXPECTEDFILE "${DOWNLOADEDFILE}.3" ; then
                    108:    echo "ok"
                    109: else
                    110:    echo "response too long test FAILED"
                    111:    RET=1
                    112: fi
                    113: 
                    114: echo "malformed response test ..."
                    115: $TESTMINIWGET $URL4 "${DOWNLOADEDFILE}.4"
                    116: 
                    117: # kill the test HTTP server
                    118: kill $SERVERPID
                    119: wait $SERVERPID
                    120: 
                    121: # remove temporary files (for success cases)
                    122: if [ $RET -eq 0 ]; then
                    123:    rm -f "${DOWNLOADEDFILE}.1"
                    124:    rm -f "${DOWNLOADEDFILE}.2"
                    125:    rm -f "${DOWNLOADEDFILE}.3"
                    126:    rm -f $EXPECTEDFILE $HTTPSERVEROUT
                    127:    rmdir ${TMPD}
                    128: else
                    129:    echo "at least one of the test FAILED"
                    130:    echo "directory ${TMPD} is left intact"
                    131: fi
                    132: exit $RET
                    133: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>