X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=libeap%2Ftests%2Fhwsim%2Fvm%2Fvm-run.sh;fp=libeap%2Ftests%2Fhwsim%2Fvm%2Fvm-run.sh;h=99930437c178f1680198ee4e75dd6763d8e9b8bb;hb=4f319dde67a76fe0aaf33f6d2788968012584ada;hp=0000000000000000000000000000000000000000;hpb=ed09b5e64dd485851310307979d5eed14678087b;p=mech_eap.git diff --git a/libeap/tests/hwsim/vm/vm-run.sh b/libeap/tests/hwsim/vm/vm-run.sh new file mode 100755 index 0000000..9993043 --- /dev/null +++ b/libeap/tests/hwsim/vm/vm-run.sh @@ -0,0 +1,126 @@ +#!/bin/bash + +cd "$(dirname $0)" + +if [ -z "$TESTDIR" ] ; then + TESTDIR=$(pwd)/../ +fi + +LOGS=/tmp/hwsim-test-logs + +# increase the memory size if you want to run with valgrind, 512 MB works +MEMORY=192 + +# Some ubuntu systems (notably 12.04) have issues with this - since the guest +# mounts as read-only it should be safe to not specify ,readonly. Override in +# vm-config if needed (see below) +ROTAG=,readonly + +# set this to ttyS0 to see kvm messages (if something doesn't work) +KVMOUT=ttyS1 + +# you can set EPATH if you need anything extra in $PATH inside the VM +#EPATH=/some/dir + +# extra KVM arguments, e.g., -s for gdbserver +#KVMARGS=-s + +# number of channels each hwsim device supports +CHANNELS=1 + +test -f vm-config && . vm-config +test -f ~/.wpas-vm-config && . ~/.wpas-vm-config + +if [ -z "$KERNEL" ] && [ -z "$KERNELDIR" ] ; then + echo "You need to set a KERNEL or KERNELDIR (in the environment or vm-config)" + exit 2 +fi +if [ -z "$KERNEL" ] ; then + KERNEL=$KERNELDIR/arch/x86_64/boot/bzImage +fi + + +CMD=$TESTDIR/vm/inside.sh + +unset RUN_TEST_ARGS +TIMESTAMP=$(date +%s) +DATE=$TIMESTAMP +CODECOV=no +TIMEWARP=0 +DELAY=0 +CODECOV_DIR= +while [ "$1" != "" ]; do + case $1 in + --timestamp ) shift + TIMESTAMP=$1 + shift + ;; + --ext ) shift + DATE=$TIMESTAMP.$1 + shift + ;; + --codecov ) shift + CODECOV=yes + ;; + --codecov_dir ) shift + CODECOV_DIR=$1 + shift + ;; + --timewrap ) shift + TIMEWARP=1 + ;; + --delay ) shift + DELAY=$1 + shift + ;; + * ) + RUN_TEST_ARGS="$RUN_TEST_ARGS$1 " + shift + ;; + esac +done + +LOGDIR=$LOGS/$DATE +mkdir -p $LOGDIR + +if [ -n "$CODECOV_DIR" ]; then + cp -a $CODECOV_DIR/alt-wpa_supplicant $LOGDIR + cp -a $CODECOV_DIR/alt-hostapd $LOGDIR + cp -a $CODECOV_DIR/alt-hostapd-as $LOGDIR + cp -a $CODECOV_DIR/alt-hlr_auc_gw $LOGDIR +elif [ $CODECOV = "yes" ]; then + ./build-codecov.sh $LOGDIR || exit 1 +else + CODECOV=no +fi + +if [ $DELAY -gt 0 ]; then + echo "Wait $DELAY seconds before starting VM" + sleep $DELAY +fi + +echo "Starting test run in a virtual machine" + +kvm \ + -kernel $KERNEL -smp 4 \ + $KVMARGS -m $MEMORY -nographic \ + -fsdev local,security_model=none,id=fsdev-root,path=/$ROTAG \ + -device virtio-9p-pci,id=fs-root,fsdev=fsdev-root,mount_tag=/dev/root \ + -fsdev local,security_model=none,id=fsdev-logs,path="$LOGDIR",writeout=immediate \ + -device virtio-9p-pci,id=fs-logs,fsdev=fsdev-logs,mount_tag=logshare \ + -monitor null -serial stdio -serial file:$LOGDIR/console \ + -append "mac80211_hwsim.support_p2p_device=0 mac80211_hwsim.channels=$CHANNELS mac80211_hwsim.radios=7 init=$CMD testdir=$TESTDIR timewarp=$TIMEWARP console=$KVMOUT root=/dev/root rootflags=trans=virtio,version=9p2000.u ro rootfstype=9p EPATH=$EPATH ARGS=$RUN_TEST_ARGS" + +if [ $CODECOV = "yes" ]; then + echo "Preparing code coverage reports" + ./process-codecov.sh $LOGDIR "" restore + ./combine-codecov.sh $LOGDIR lcov +fi + +echo +echo "Test run completed" +echo "Logfiles are at $LOGDIR" +if [ $CODECOV = "yes" ]; then + echo "Code coverage report:" + echo "file://$LOGDIR/lcov/index.html" +fi