tests: Add option to run test cases under valgrind/concurrent P2P

./run-all.sh can now take an optional argument to select whether to run
all test cases as before (default), to run these under valgrind
("valgrind"), to run P2P test cases with concurrent station interface
("concurrent"), or the concurrent P2P test cases under valgrind
("concurrent-valgrind").

valgrind cases report errors if a test case fails or valgrind reports an
error.

Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2013-08-24 20:33:21 +03:00
parent 8d6e035072
commit 0c43a982c7
4 changed files with 96 additions and 15 deletions

View file

@ -2,11 +2,55 @@
errors=0
umask 0002
./start.sh
DATE=`ls -1tr logs | tail -1 | cut -f1 -d-`
./run-tests.py -e logs/$DATE-failed || errors=1
./stop-wifi.sh
if [ $errors -gt 0 ]; then
if [ "x$1" = "xconcurrent-valgrind" ]; then
./start-p2p-concurrent.sh valgrind
DATE=`ls -1tr logs | tail -1 | cut -f1 -d-`
for i in autogo discovery grpform; do
./run-tests.py -e logs/$DATE-failed-$i -f test_p2p_$i.py || errors=1
done
./stop-wifi.sh valgrind
failures=`grep "ERROR SUMMARY" logs/$DATE-valgrind-* | grep -v " 0 errors" | wc -l`
if [ $failures -gt 0 ]; then
echo "Mark as failed due to valgrind errors"
errors=1
fi
if [ $errors -gt 0 ]; then
tar czf /tmp/hwsim-tests-$DATE-FAILED-concurrent-valgrind.tar.gz logs/$DATE*
exit 1
fi
elif [ "x$1" = "xconcurrent" ]; then
./start-p2p-concurrent.sh
DATE=`ls -1tr logs | tail -1 | cut -f1 -d-`
for i in autogo discovery grpform; do
./run-tests.py -e logs/$DATE-failed-$i -f test_p2p_$i.py || errors=1
done
./stop-wifi.sh
if [ $errors -gt 0 ]; then
tar czf /tmp/hwsim-tests-$DATE-FAILED-concurrent.tar.gz logs/$DATE*
exit 1
fi
elif [ "x$1" = "xvalgrind" ]; then
./start.sh valgrind
DATE=`ls -1tr logs | tail -1 | cut -f1 -d-`
./run-tests.py -e logs/$DATE-failed || errors=1
./stop-wifi.sh valgrind
failures=`grep "ERROR SUMMARY" logs/$DATE-valgrind-* | grep -v " 0 errors" | wc -l`
if [ $failures -gt 0 ]; then
echo "Mark as failed due to valgrind errors"
errors=1
fi
if [ $errors -gt 0 ]; then
tar czf /tmp/hwsim-tests-$DATE-FAILED-valgrind.tar.gz logs/$DATE*
exit 1
fi
else
./start.sh
DATE=`ls -1tr logs | tail -1 | cut -f1 -d-`
./run-tests.py -e logs/$DATE-failed || errors=1
./stop-wifi.sh
if [ $errors -gt 0 ]; then
tar czf /tmp/hwsim-tests-$DATE-FAILED.tar.gz logs/$DATE*
exit 1
fi
fi

View file

@ -5,6 +5,12 @@ WPAS=$DIR/../../wpa_supplicant/wpa_supplicant
HAPD=$DIR/../../hostapd/hostapd
WLANTEST=$DIR/../../wlantest/wlantest
if [ "x$1" = "xvalgrind" ]; then
VALGRIND=y
else
unset VALGRIND
fi
$DIR/stop-wifi.sh
sudo modprobe mac80211_hwsim radios=5
sudo iw wlan0 interface add sta0 type station
@ -15,9 +21,20 @@ DATE=`date +%s`
sudo ifconfig hwsim0 up
sudo $WLANTEST -i hwsim0 -c -d > $DIR/logs/$DATE-hwsim0 &
sudo tcpdump -ni hwsim0 -s 2500 -w $DIR/logs/$DATE-hwsim0.dump &
sudo $WPAS -g /tmp/wpas-wlan0 -Gadmin -Dnl80211 -iwlan0 -c $DIR/p2p0.conf -N -Dnl80211 -ista0 -c $DIR/sta-dummy.conf -ddKt > $DIR/logs/$DATE-log0 &
sudo $WPAS -g /tmp/wpas-wlan1 -Gadmin -Dnl80211 -iwlan1 -c $DIR/p2p1.conf -N -Dnl80211 -ista1 -c $DIR/sta-dummy.conf -ddKt > $DIR/logs/$DATE-log1 &
sudo $WPAS -g /tmp/wpas-wlan2 -Gadmin -Dnl80211 -iwlan2 -c $DIR/p2p2.conf -N -Dnl80211 -ista2 -c $DIR/sta-dummy.conf -ddKt > $DIR/logs/$DATE-log2 &
sudo $HAPD -ddKt -g /var/run/hostapd-global -G admin -ddKt > $DIR/logs/$DATE-hostapd &
if [ "x$VALGRIND" = "xy" ]; then
for i in 0 1 2; do
sudo valgrind --log-file=$DIR/logs/$DATE-valgrind-wlan$i $WPAS -g /tmp/wpas-wlan$i -Gadmin -Dnl80211 -iwlan$i -c $DIR/p2p$i.conf -N -Dnl80211 -ista$i -c $DIR/sta-dummy.conf -ddKt > $DIR/logs/$DATE-log$i &
done
sudo valgrind --log-file=$DIR/logs/$DATE-valgrind-hostapd $HAPD -ddKt -g /var/run/hostapd-global -G admin -ddKt > $DIR/logs/$DATE-hostapd &
else
for i in 0 1 2; do
sudo $WPAS -g /tmp/wpas-wlan$i -Gadmin -Dnl80211 -iwlan$i -c $DIR/p2p$i.conf -N -Dnl80211 -ista$i -c $DIR/sta-dummy.conf -ddKt > $DIR/logs/$DATE-log$i &
done
sudo $HAPD -ddKt -g /var/run/hostapd-global -G admin -ddKt > $DIR/logs/$DATE-hostapd &
fi
sleep 1
sudo chown $USER $DIR/logs/$DATE-hwsim0.dump
if [ "x$VALGRIND" = "xy" ]; then
sudo chown $USER $DIR/logs/$DATE-valgrind*
sleep 2
fi

View file

@ -5,6 +5,12 @@ WPAS=$DIR/../../wpa_supplicant/wpa_supplicant
HAPD=$DIR/../../hostapd/hostapd
WLANTEST=$DIR/../../wlantest/wlantest
if [ "x$1" = "xvalgrind" ]; then
VALGRIND=y
else
unset VALGRIND
fi
$DIR/stop-wifi.sh
sudo modprobe mac80211_hwsim radios=5
mkdir -p $DIR/logs
@ -12,9 +18,20 @@ DATE=`date +%s`
sudo ifconfig hwsim0 up
sudo $WLANTEST -i hwsim0 -c -d > $DIR/logs/$DATE-hwsim0 &
sudo tcpdump -ni hwsim0 -s 2500 -w $DIR/logs/$DATE-hwsim0.dump &
sudo $WPAS -g /tmp/wpas-wlan0 -Gadmin -Dnl80211 -iwlan0 -c $DIR/p2p0.conf -ddKt > $DIR/logs/$DATE-log0 &
sudo $WPAS -g /tmp/wpas-wlan1 -Gadmin -Dnl80211 -iwlan1 -c $DIR/p2p1.conf -ddKt > $DIR/logs/$DATE-log1 &
sudo $WPAS -g /tmp/wpas-wlan2 -Gadmin -Dnl80211 -iwlan2 -c $DIR/p2p2.conf -ddKt > $DIR/logs/$DATE-log2 &
sudo $HAPD -ddKt -g /var/run/hostapd-global -G admin -ddKt > $DIR/logs/$DATE-hostapd &
if [ "x$VALGRIND" = "xy" ]; then
for i in 0 1 2; do
sudo valgrind --log-file=$DIR/logs/$DATE-valgrind-wlan$i $WPAS -g /tmp/wpas-wlan$i -Gadmin -Dnl80211 -iwlan$i -c $DIR/p2p$i.conf -ddKt > $DIR/logs/$DATE-log$i &
done
sudo valgrind --log-file=$DIR/logs/$DATE-valgrind-hostapd $HAPD -ddKt -g /var/run/hostapd-global -G admin -ddKt > $DIR/logs/$DATE-hostapd &
else
for i in 0 1 2; do
sudo $WPAS -g /tmp/wpas-wlan$i -Gadmin -Dnl80211 -iwlan$i -c $DIR/p2p$i.conf -ddKt > $DIR/logs/$DATE-log$i &
done
sudo $HAPD -ddKt -g /var/run/hostapd-global -G admin -ddKt > $DIR/logs/$DATE-hostapd &
fi
sleep 1
sudo chown $USER $DIR/logs/$DATE-hwsim0.dump
if [ "x$VALGRIND" = "xy" ]; then
sudo chown $USER $DIR/logs/$DATE-*valgrind*
sleep 2
fi

View file

@ -2,6 +2,9 @@
sudo killall -q hostapd
sudo killall -q wpa_supplicant
if [ "x$1" = "xvalgrind" ]; then
sudo kill `pidof valgrind.bin`
fi
sudo killall -q wlantest
sudo killall -q tcpdump
if grep -q hwsim0 /proc/net/dev; then