1#!/bin/sh 2 3errors=0 4umask 0002 5 6DATE="$(date +%s)" 7unset LOGBASEDIR 8if [ -z "$LOGDIR" ]; then 9 LOGBASEDIR=logs 10 LOGDIR=$LOGBASEDIR/$DATE 11 mkdir -p $LOGDIR 12fi 13export LOGDIR 14 15if [ -z "$DBFILE" ]; then 16 DB="" 17else 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 31fi 32 33usage() 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 41unset VALGRIND 42unset TRACE 43unset TRACE_ARGS 44unset RUN_TEST_ARGS 45unset BUILD 46unset BUILD_ARGS 47unset CODECOV 48unset VM 49while [ "$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 92done 93 94if [ ! -z "$RUN_TEST_ARGS" ]; then 95 echo "$0: passing the following args to run-tests.py: $RUN_TEST_ARGS" 96fi 97 98unset SUFFIX 99if [ ! -z "$BUILD" ]; then 100 SUFFIX=-build 101fi 102 103if [ ! -z "$VALGRIND" ]; then 104 SUFFIX=$SUFFIX-valgrind 105fi 106 107if [ ! -z "$TRACE" ]; then 108 SUFFIX=$SUFFIX-trace 109 TRACE_ARGS="-T" 110fi 111 112if [ ! -z "$CODECOV" ]; then 113 SUFFIX=$SUFFIX-codecov 114fi 115 116if [ ! -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 122fi 123 124if ! ./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 129fi 130 131# Only use sudo if not already root. 132if [ "$(id -u)" != 0 ]; then 133 SUDO=sudo 134else 135 SUDO= 136fi 137${SUDO} env VM=$VM ./run-tests.py -D --logdir "$LOGDIR" $TRACE_ARGS -q $DB $RUN_TEST_ARGS || errors=1 138 139./stop.sh 140 141ps ax > $LOGDIR/after-stop-ps-ax 142netstat -tnlu > $LOGDIR/after-stop-netstat 143 144if [ ! -z "$VALGRIND" ] ; then 145 failures=`grep "ERROR SUMMARY" $LOGDIR/valgrind-* | grep -v " 0 errors" | wc -l` 146 if [ $failures -gt 0 ]; then 147 echo "Mark as failed due to valgrind errors" 148 errors=1 149 fi 150fi 151 152if tail -100 $LOGDIR/auth_serv | grep -q MEMLEAK; then 153 echo "Mark as failed due to authentication server memory leak" 154 errors=1 155fi 156 157if [ ! -z "$CODECOV" ] ; then 158 lcov -q --capture --directory ../../wpa_supplicant --output-file $LOGDIR/wpas_lcov.info 159 genhtml -q $LOGDIR/wpas_lcov.info --output-directory $LOGDIR/wpas_lcov 160 lcov -q --capture --directory ../../hostapd --output-file $LOGDIR/hostapd_lcov.info 161 genhtml -q $LOGDIR/hostapd_lcov.info --output-directory $LOGDIR/hostapd_lcov 162fi 163 164if [ $errors -gt 0 ]; then 165 if [ -z $VM ]; then 166 tar czf /tmp/hwsim-tests-$DATE-FAILED$SUFFIX.tar.gz $LOGDIR/ 167 fi 168 exit 1 169fi 170 171echo "ALL-PASSED" 172