Home | History | Annotate | Line # | Download | only in test
test.sh revision 1.1.1.1.4.2
      1 #!/bin/sh
      2 
      3 BACKENDS="EVPORT KQUEUE EPOLL DEVPOLL POLL SELECT WIN32"
      4 TESTS="test-eof test-weof test-time test-changelist test-fdleak"
      5 FAILED=no
      6 TEST_OUTPUT_FILE=${TEST_OUTPUT_FILE:-/dev/null}
      7 REGRESS_ARGS=${REGRESS_ARGS:-}
      8 
      9 # /bin/echo is a little more likely to support -n than sh's builtin echo,
     10 # printf is even more likely
     11 if test "`printf %s hello 2>&1`" = "hello"
     12 then
     13 	ECHO_N="printf %s"
     14 else
     15 	if test -x /bin/echo
     16 	then
     17 		ECHO_N="/bin/echo -n"
     18 	else
     19 		ECHO_N="echo -n"
     20 	fi
     21 fi
     22 
     23 if test "$TEST_OUTPUT_FILE" != "/dev/null"
     24 then
     25 	touch "$TEST_OUTPUT_FILE" || exit 1
     26 fi
     27 
     28 TEST_DIR=.
     29 TEST_SRC_DIR=.
     30 
     31 T=`echo "$0" | sed -e 's/test.sh$//'`
     32 if test -x "$T/test-init"
     33 then
     34 	TEST_DIR="$T"
     35 elif test -x "./test/test-init"
     36 then
     37         TEST_DIR="./test"
     38 fi
     39 if test -f "$T/check-dumpevents.py"
     40 then
     41 	TEST_SRC_DIR="$T"
     42 elif test -f "./test/check-dumpevents.py"
     43 then
     44         TEST_SRC_DIR="./test"
     45 elif test -f "../../../sntp/libevent/test/check-dumpevents.py"
     46 then    
     47         TEST_SRC_DIR="../../../sntp/libevent/test"
     48 else
     49         echo "### Can't find check-dumpevents.py"
     50 fi
     51 
     52 setup () {
     53 	for i in $BACKENDS; do
     54 		eval "EVENT_NO$i=yes; export EVENT_NO$i"
     55 	done
     56 	unset EVENT_EPOLL_USE_CHANGELIST
     57 	unset EVENT_PRECISE_TIMER
     58 }
     59 
     60 announce () {
     61 	echo "$@"
     62 	echo "$@" >>"$TEST_OUTPUT_FILE"
     63 }
     64 
     65 announce_n () {
     66 	$ECHO_N "$@"
     67 	echo "$@" >>"$TEST_OUTPUT_FILE"
     68 }
     69 
     70 
     71 run_tests () {
     72 	if $TEST_DIR/test-init 2>>"$TEST_OUTPUT_FILE" ;
     73 	then
     74 		true
     75 	else
     76 		announce Skipping test
     77 		return
     78 	fi
     79 	for i in $TESTS; do
     80 		announce_n " $i: "
     81 		if $TEST_DIR/$i >>"$TEST_OUTPUT_FILE" ;
     82 		then
     83 			announce OKAY ;
     84 		else
     85 			announce FAILED ;
     86 			FAILED=yes
     87 		fi
     88 	done
     89 	announce_n " test-dumpevents: "
     90 	if python2 -c 'import sys; assert(sys.version_info >= (2, 4))' 2>/dev/null; then
     91 	    if $TEST_DIR/test-dumpevents | python2 $TEST_SRC_DIR/check-dumpevents.py >> "$TEST_OUTPUT_FILE" ;
     92 	    then
     93 	        announce OKAY ;
     94 	    else
     95 	        announce FAILED ;
     96 		FAILED=yes
     97 	    fi
     98 	else
     99 	    # no python
    100 	    if $TEST_DIR/test-dumpevents >/dev/null; then
    101 	        announce "OKAY (output not checked)" ;
    102 	    else
    103 	        announce "FAILED (output not checked)" ;
    104 		FAILED=yes
    105 	    fi
    106 	fi
    107 	test -x $TEST_DIR/regress || return
    108 	announce_n " regress: "
    109 	if test "$TEST_OUTPUT_FILE" = "/dev/null" ;
    110 	then
    111 		$TEST_DIR/regress --quiet $REGRESS_ARGS
    112 	else
    113 		$TEST_DIR/regress $REGRESS_ARGS >>"$TEST_OUTPUT_FILE"
    114 	fi
    115 	if test "$?" = "0" ;
    116 	then
    117 		announce OKAY ;
    118 	else
    119 		announce FAILED ;
    120 		FAILED=yes
    121 	fi
    122 }
    123 
    124 do_test() {
    125 	setup
    126 	announce "$1 $2"
    127 	unset EVENT_NO$1
    128 	if test "$2" = "(changelist)" ; then
    129 	    EVENT_EPOLL_USE_CHANGELIST=yes; export EVENT_EPOLL_USE_CHANGELIST
    130 	elif test "$2" = "(timerfd)" ; then
    131 	    EVENT_PRECISE_TIMER=1; export EVENT_PRECISE_TIMER
    132 	elif test "$2" = "(timerfd+changelist)" ; then
    133 	    EVENT_EPOLL_USE_CHANGELIST=yes; export EVENT_EPOLL_USE_CHANGELIST
    134 	    EVENT_PRECISE_TIMER=1; export EVENT_PRECISE_TIMER
    135         fi
    136 
    137 	run_tests
    138 }
    139 
    140 announce "Running tests:"
    141 
    142 do_test EPOLL "(timerfd)"
    143 do_test EPOLL "(changelist)"
    144 do_test EPOLL "(timerfd+changelist)"
    145 for i in $BACKENDS; do
    146 	do_test $i
    147 done
    148 
    149 if test "$FAILED" = "yes"; then
    150 	exit 1
    151 fi
    152