b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 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" |
| 19 | if [ -z "$COMMITID" ]; then |
| 20 | COMMITID="$(git rev-parse HEAD)" |
| 21 | fi |
| 22 | if [ -n "$COMMITID" ]; then |
| 23 | DB="$DB --commit $COMMITID" |
| 24 | fi |
| 25 | if [ -n "$BUILD" ]; then |
| 26 | DB="$DB -b $BUILD" |
| 27 | fi |
| 28 | if [ "$PREFILL_DB" = "y" ] ; then |
| 29 | DB="$DB --prefill-tests" |
| 30 | fi |
| 31 | fi |
| 32 | |
| 33 | usage() |
| 34 | { |
| 35 | echo "$0 [-v | --valgrind | valgrind] [-t | --trace | trace]" |
| 36 | echo "\t[-n <num> | --channels <num>] [-B | --build]" |
| 37 | echo "\t[-c | --codecov ] [run-tests.py parameters]" |
| 38 | exit 1 |
| 39 | } |
| 40 | |
| 41 | unset VALGRIND |
| 42 | unset TRACE |
| 43 | unset TRACE_ARGS |
| 44 | unset RUN_TEST_ARGS |
| 45 | unset BUILD |
| 46 | unset BUILD_ARGS |
| 47 | unset CODECOV |
| 48 | unset VM |
| 49 | while [ "$1" != "" ]; do |
| 50 | case $1 in |
| 51 | -v | --valgrind | valgrind) |
| 52 | shift |
| 53 | echo "$0: using valgrind" |
| 54 | VALGRIND=valgrind |
| 55 | ;; |
| 56 | -t | --trace | trace) |
| 57 | shift |
| 58 | echo "$0: using Trace" |
| 59 | TRACE=trace |
| 60 | ;; |
| 61 | -n | --channels) |
| 62 | shift |
| 63 | NUM_CH=$1 |
| 64 | shift |
| 65 | echo "$0: using channels=$NUM_CH" |
| 66 | ;; |
| 67 | -B | --build) |
| 68 | shift |
| 69 | echo "$0: build before running tests" |
| 70 | BUILD=build |
| 71 | ;; |
| 72 | -c | --codecov) |
| 73 | shift |
| 74 | echo "$0: using code coverage" |
| 75 | CODECOV=lcov |
| 76 | BUILD_ARGS=-c |
| 77 | ;; |
| 78 | -h | --help) |
| 79 | usage |
| 80 | ;; |
| 81 | -V | --vm) |
| 82 | shift |
| 83 | echo "$0: running inside a VM" |
| 84 | VM=VM |
| 85 | ;; |
| 86 | |
| 87 | *) |
| 88 | RUN_TEST_ARGS="$RUN_TEST_ARGS$1 " |
| 89 | shift |
| 90 | ;; |
| 91 | esac |
| 92 | done |
| 93 | |
| 94 | if [ ! -z "$RUN_TEST_ARGS" ]; then |
| 95 | echo "$0: passing the following args to run-tests.py: $RUN_TEST_ARGS" |
| 96 | fi |
| 97 | |
| 98 | unset SUFFIX |
| 99 | if [ ! -z "$BUILD" ]; then |
| 100 | SUFFIX=-build |
| 101 | fi |
| 102 | |
| 103 | if [ ! -z "$VALGRIND" ]; then |
| 104 | SUFFIX=$SUFFIX-valgrind |
| 105 | fi |
| 106 | |
| 107 | if [ ! -z "$TRACE" ]; then |
| 108 | SUFFIX=$SUFFIX-trace |
| 109 | TRACE_ARGS="-T" |
| 110 | fi |
| 111 | |
| 112 | if [ ! -z "$CODECOV" ]; then |
| 113 | SUFFIX=$SUFFIX-codecov |
| 114 | fi |
| 115 | |
| 116 | if [ ! -z "$BUILD" ]; then |
| 117 | echo "Building with args=$BUILD_ARGS" |
| 118 | if ! ./build.sh $BUILD_ARGS; then |
| 119 | echo "Failed building components" |
| 120 | exit 1 |
| 121 | fi |
| 122 | fi |
| 123 | |
| 124 | if ! ./start.sh $VM $VALGRIND $TRACE channels=$NUM_CH; then |
| 125 | if ! [ -z "$LOGBASEDIR" ] ; then |
| 126 | echo "Could not start test environment" > $LOGDIR/run |
| 127 | fi |
| 128 | exit 1 |
| 129 | fi |
| 130 | |
| 131 | # Only use sudo if not already root. |
| 132 | if [ "$(id -u)" != 0 ]; then |
| 133 | SUDO=sudo |
| 134 | else |
| 135 | SUDO= |
| 136 | fi |
| 137 | ${SUDO} ./run-tests.py -D --logdir "$LOGDIR" $TRACE_ARGS -q $DB $RUN_TEST_ARGS || errors=1 |
| 138 | |
| 139 | ./stop.sh |
| 140 | |
| 141 | if [ ! -z "$VALGRIND" ] ; then |
| 142 | failures=`grep "ERROR SUMMARY" $LOGDIR/valgrind-* | grep -v " 0 errors" | wc -l` |
| 143 | if [ $failures -gt 0 ]; then |
| 144 | echo "Mark as failed due to valgrind errors" |
| 145 | errors=1 |
| 146 | fi |
| 147 | fi |
| 148 | |
| 149 | if tail -100 $LOGDIR/auth_serv | grep -q MEMLEAK; then |
| 150 | echo "Mark as failed due to authentication server memory leak" |
| 151 | errors=1 |
| 152 | fi |
| 153 | |
| 154 | if [ ! -z "$CODECOV" ] ; then |
| 155 | lcov -q --capture --directory ../../wpa_supplicant --output-file $LOGDIR/wpas_lcov.info |
| 156 | genhtml -q $LOGDIR/wpas_lcov.info --output-directory $LOGDIR/wpas_lcov |
| 157 | lcov -q --capture --directory ../../hostapd --output-file $LOGDIR/hostapd_lcov.info |
| 158 | genhtml -q $LOGDIR/hostapd_lcov.info --output-directory $LOGDIR/hostapd_lcov |
| 159 | fi |
| 160 | |
| 161 | if [ $errors -gt 0 ]; then |
| 162 | if [ -z $VM ]; then |
| 163 | tar czf /tmp/hwsim-tests-$DATE-FAILED$SUFFIX.tar.gz $LOGDIR/ |
| 164 | fi |
| 165 | exit 1 |
| 166 | fi |
| 167 | |
| 168 | echo "ALL-PASSED" |