]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/sntp/libevent/test/test.sh
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / ntp / sntp / libevent / test / test.sh
1 #!/bin/sh
2
3 BACKENDS="EVPORT KQUEUE EPOLL DEVPOLL POLL SELECT WIN32"
4 TESTS="test-eof test-closed 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$//' | sed -e 's/test-script.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 fi
46
47 setup () {
48         for i in $BACKENDS; do
49                 eval "EVENT_NO$i=yes; export EVENT_NO$i"
50         done
51         unset EVENT_EPOLL_USE_CHANGELIST
52         unset EVENT_PRECISE_TIMER
53 }
54
55 announce () {
56         echo "$@"
57         echo "$@" >>"$TEST_OUTPUT_FILE"
58 }
59
60 announce_n () {
61         $ECHO_N "$@"
62         echo "$@" >>"$TEST_OUTPUT_FILE"
63 }
64
65
66 run_tests () {
67         if $TEST_DIR/test-init 2>>"$TEST_OUTPUT_FILE" ;
68         then
69                 true
70         else
71                 announce Skipping test
72                 return
73         fi
74         for i in $TESTS; do
75                 announce_n " $i: "
76                 if $TEST_DIR/$i >>"$TEST_OUTPUT_FILE" ;
77                 then
78                         announce OKAY ;
79                 else
80                         announce FAILED ;
81                         FAILED=yes
82                 fi
83         done
84         announce_n " test-dumpevents: "
85         if python2 -c 'import sys; assert(sys.version_info >= (2, 4))' 2>/dev/null && test -f $TEST_SRC_DIR/check-dumpevents.py; then
86             if $TEST_DIR/test-dumpevents | python2 $TEST_SRC_DIR/check-dumpevents.py >> "$TEST_OUTPUT_FILE" ;
87             then
88                 announce OKAY ;
89             else
90                 announce FAILED ;
91             fi
92         else
93             # no python
94             if $TEST_DIR/test-dumpevents >/dev/null; then
95                 announce "OKAY (output not checked)" ;
96             else
97                 announce "FAILED (output not checked)" ;
98             fi
99         fi
100         test -x $TEST_DIR/regress || return
101         announce_n " regress: "
102         if test "$TEST_OUTPUT_FILE" = "/dev/null" ;
103         then
104                 $TEST_DIR/regress --quiet $REGRESS_ARGS
105         else
106                 $TEST_DIR/regress $REGRESS_ARGS >>"$TEST_OUTPUT_FILE"
107         fi
108         if test "$?" = "0" ;
109         then
110                 announce OKAY ;
111         else
112                 announce FAILED ;
113                 FAILED=yes
114         fi
115 }
116
117 do_test() {
118         setup
119         announce "$1 $2"
120         unset EVENT_NO$1
121         if test "$2" = "(changelist)" ; then
122             EVENT_EPOLL_USE_CHANGELIST=yes; export EVENT_EPOLL_USE_CHANGELIST
123         elif test "$2" = "(timerfd)" ; then
124             EVENT_PRECISE_TIMER=1; export EVENT_PRECISE_TIMER
125         elif test "$2" = "(timerfd+changelist)" ; then
126             EVENT_EPOLL_USE_CHANGELIST=yes; export EVENT_EPOLL_USE_CHANGELIST
127             EVENT_PRECISE_TIMER=1; export EVENT_PRECISE_TIMER
128         fi
129
130         run_tests
131 }
132
133 announce "Running tests:"
134
135 do_test EPOLL "(timerfd)"
136 do_test EPOLL "(changelist)"
137 do_test EPOLL "(timerfd+changelist)"
138 for i in $BACKENDS; do
139         do_test $i
140 done
141
142 if test "$FAILED" = "yes"; then
143         exit 1
144 fi