hostapd/tests/hwsim/run-all.sh
Jouni Malinen 73b41762d0 tests: Fetch commitid on the host when running tests in a VM
git has started rejecting repositories owned by other users and refusing
to run the "git rev-parse HEAD" command in this type of cases. That
resulted in issues with the VM testing model where the VM is practically
running everything as root while the host is a normal development
environment and likely a non-root user owned files.

Fix this by fetching the commitid on the host and pass it to the VM so
that no git operations need to be run within the VM itself.

Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
2022-04-14 11:59:22 +03:00

168 lines
3.2 KiB
Bash
Executable file

#!/bin/sh
errors=0
umask 0002
DATE="$(date +%s)"
unset LOGBASEDIR
if [ -z "$LOGDIR" ]; then
LOGBASEDIR=logs
LOGDIR=$LOGBASEDIR/$DATE
mkdir -p $LOGDIR
fi
export LOGDIR
if [ -z "$DBFILE" ]; then
DB=""
else
DB="-S $DBFILE"
if [ -z "$COMMITID" ]; then
COMMITID="$(git rev-parse HEAD)"
fi
if [ -n "$COMMITID" ]; then
DB="$DB --commit $COMMITID"
fi
if [ -n "$BUILD" ]; then
DB="$DB -b $BUILD"
fi
if [ "$PREFILL_DB" = "y" ] ; then
DB="$DB --prefill-tests"
fi
fi
usage()
{
echo "$0 [-v | --valgrind | valgrind] [-t | --trace | trace]"
echo "\t[-n <num> | --channels <num>] [-B | --build]"
echo "\t[-c | --codecov ] [run-tests.py parameters]"
exit 1
}
unset VALGRIND
unset TRACE
unset TRACE_ARGS
unset RUN_TEST_ARGS
unset BUILD
unset BUILD_ARGS
unset CODECOV
unset VM
while [ "$1" != "" ]; do
case $1 in
-v | --valgrind | valgrind)
shift
echo "$0: using valgrind"
VALGRIND=valgrind
;;
-t | --trace | trace)
shift
echo "$0: using Trace"
TRACE=trace
;;
-n | --channels)
shift
NUM_CH=$1
shift
echo "$0: using channels=$NUM_CH"
;;
-B | --build)
shift
echo "$0: build before running tests"
BUILD=build
;;
-c | --codecov)
shift
echo "$0: using code coverage"
CODECOV=lcov
BUILD_ARGS=-c
;;
-h | --help)
usage
;;
-V | --vm)
shift
echo "$0: running inside a VM"
VM=VM
;;
*)
RUN_TEST_ARGS="$RUN_TEST_ARGS$1 "
shift
;;
esac
done
if [ ! -z "$RUN_TEST_ARGS" ]; then
echo "$0: passing the following args to run-tests.py: $RUN_TEST_ARGS"
fi
unset SUFFIX
if [ ! -z "$BUILD" ]; then
SUFFIX=-build
fi
if [ ! -z "$VALGRIND" ]; then
SUFFIX=$SUFFIX-valgrind
fi
if [ ! -z "$TRACE" ]; then
SUFFIX=$SUFFIX-trace
TRACE_ARGS="-T"
fi
if [ ! -z "$CODECOV" ]; then
SUFFIX=$SUFFIX-codecov
fi
if [ ! -z "$BUILD" ]; then
echo "Building with args=$BUILD_ARGS"
if ! ./build.sh $BUILD_ARGS; then
echo "Failed building components"
exit 1
fi
fi
if ! ./start.sh $VM $VALGRIND $TRACE channels=$NUM_CH; then
if ! [ -z "$LOGBASEDIR" ] ; then
echo "Could not start test environment" > $LOGDIR/run
fi
exit 1
fi
# Only use sudo if not already root.
if [ "$(id -u)" != 0 ]; then
SUDO=sudo
else
SUDO=
fi
${SUDO} ./run-tests.py -D --logdir "$LOGDIR" $TRACE_ARGS -q $DB $RUN_TEST_ARGS || errors=1
./stop.sh
if [ ! -z "$VALGRIND" ] ; then
failures=`grep "ERROR SUMMARY" $LOGDIR/valgrind-* | grep -v " 0 errors" | wc -l`
if [ $failures -gt 0 ]; then
echo "Mark as failed due to valgrind errors"
errors=1
fi
fi
if tail -100 $LOGDIR/auth_serv | grep -q MEMLEAK; then
echo "Mark as failed due to authentication server memory leak"
errors=1
fi
if [ ! -z "$CODECOV" ] ; then
lcov -q --capture --directory ../../wpa_supplicant --output-file $LOGDIR/wpas_lcov.info
genhtml -q $LOGDIR/wpas_lcov.info --output-directory $LOGDIR/wpas_lcov
lcov -q --capture --directory ../../hostapd --output-file $LOGDIR/hostapd_lcov.info
genhtml -q $LOGDIR/hostapd_lcov.info --output-directory $LOGDIR/hostapd_lcov
fi
if [ $errors -gt 0 ]; then
if [ -z $VM ]; then
tar czf /tmp/hwsim-tests-$DATE-FAILED$SUFFIX.tar.gz $LOGDIR/
fi
exit 1
fi
echo "ALL-PASSED"