Updated through tag hostap_2_5 from git://w1.fi/hostap.git
[mech_eap.git] / libeap / tests / hwsim / run-all.sh
1 #!/bin/sh
2
3 errors=0
4 umask 0002
5
6 DATE="$(date +%s)"
7 unset LOGBASEDIR
8 if [ -z "$LOGDIR" ]; then
9         LOGBASEDIR=logs
10         LOGDIR=$LOGBASEDIR/$DATE
11         mkdir -p $LOGDIR
12 fi
13 export LOGDIR
14
15 if [ -z "$DBFILE" ]; then
16     DB=""
17 else
18     DB="-S $DBFILE --commit $(git rev-parse HEAD)"
19     if [ -n "$BUILD" ]; then
20         DB="$DB -b $BUILD"
21     fi
22     if [ "$PREFILL_DB" = "y" ] ; then
23         DB="$DB --prefill-tests"
24     fi
25 fi
26
27 usage()
28 {
29         echo "$0 [-v | --valgrind | valgrind] [-t | --trace | trace]"
30         echo "\t[-n <num> | --channels <num>] [-B | --build]"
31         echo "\t[-c | --codecov ] [run-tests.py parameters]"
32         exit 1
33 }
34
35 unset VALGRIND
36 unset TRACE
37 unset TRACE_ARGS
38 unset RUN_TEST_ARGS
39 unset BUILD
40 unset BUILD_ARGS
41 unset CODECOV
42 while [ "$1" != "" ]; do
43         case $1 in
44                 -v | --valgrind | valgrind)
45                         shift
46                         echo "$0: using valgrind"
47                         VALGRIND=valgrind
48                         ;;
49                 -t | --trace | trace)
50                         shift
51                         echo "$0: using Trace"
52                         TRACE=trace
53                         ;;
54                 -n | --channels)
55                         shift
56                         NUM_CH=$1
57                         shift
58                         echo "$0: using channels=$NUM_CH"
59                         ;;
60                 -B | --build)
61                         shift
62                         echo "$0: build before running tests"
63                         BUILD=build
64                         ;;
65                 -c | --codecov)
66                         shift
67                         echo "$0: using code coverage"
68                         CODECOV=lcov
69                         BUILD_ARGS=-c
70                         ;;
71                 -h | --help)
72                         usage
73                         ;;
74                 *)
75                         RUN_TEST_ARGS="$RUN_TEST_ARGS$1 "
76                         shift
77                         ;;
78         esac
79 done
80
81 if [ ! -z "$RUN_TEST_ARGS" ]; then
82         echo "$0: passing the following args to run-tests.py: $RUN_TEST_ARGS"
83 fi
84
85 unset SUFFIX
86 if [ ! -z "$BUILD" ]; then
87         SUFFIX=-build
88 fi
89
90 if [ ! -z "$VALGRIND" ]; then
91         SUFFIX=$SUFFIX-valgrind
92 fi
93
94 if [ ! -z "$TRACE" ]; then
95         SUFFIX=$SUFFIX-trace
96         TRACE_ARGS="-T"
97 fi
98
99 if [ ! -z "$CODECOV" ]; then
100         SUFFIX=$SUFFIX-codecov
101 fi
102
103 if [ ! -z "$BUILD" ]; then
104     echo "Building with args=$BUILD_ARGS"
105     if ! ./build.sh $BUILD_ARGS; then
106             echo "Failed building components"
107             exit 1
108     fi
109 fi
110
111 if ! ./start.sh $VALGRIND $TRACE channels=$NUM_CH; then
112         if ! [ -z "$LOGBASEDIR" ] ; then
113                 echo "Could not start test environment" > $LOGDIR/run
114         fi
115         exit 1
116 fi
117
118 sudo ./run-tests.py -D --logdir "$LOGDIR" $TRACE_ARGS -q $DB $RUN_TEST_ARGS || errors=1
119
120 ./stop.sh
121
122 if [ ! -z "$VALGRIND" ] ; then
123     failures=`grep "ERROR SUMMARY" $LOGDIR/valgrind-* | grep -v " 0 errors" | wc -l`
124     if [ $failures -gt 0 ]; then
125         echo "Mark as failed due to valgrind errors"
126         errors=1
127     fi
128 fi
129
130 if [ ! -z "$CODECOV" ] ; then
131         lcov -q --capture --directory ../../wpa_supplicant --output-file $LOGDIR/wpas_lcov.info
132         genhtml -q $LOGDIR/wpas_lcov.info --output-directory $LOGDIR/wpas_lcov
133         lcov -q --capture --directory ../../hostapd --output-file $LOGDIR/hostapd_lcov.info
134         genhtml -q $LOGDIR/hostapd_lcov.info --output-directory $LOGDIR/hostapd_lcov
135 fi
136
137 if [ $errors -gt 0 ]; then
138     tar czf /tmp/hwsim-tests-$DATE-FAILED$SUFFIX.tar.gz $LOGDIR/
139     exit 1
140 fi
141
142 echo "ALL-PASSED"