From 0c43a982c7bd70b9591d1821e09e4468e22d53fd Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sat, 24 Aug 2013 20:33:21 +0300 Subject: [PATCH] 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 --- tests/hwsim/run-all.sh | 58 +++++++++++++++++++++++++---- tests/hwsim/start-p2p-concurrent.sh | 25 +++++++++++-- tests/hwsim/start.sh | 25 +++++++++++-- tests/hwsim/stop-wifi.sh | 3 ++ 4 files changed, 96 insertions(+), 15 deletions(-) diff --git a/tests/hwsim/run-all.sh b/tests/hwsim/run-all.sh index 3ef4666f7..5d409cfe0 100755 --- a/tests/hwsim/run-all.sh +++ b/tests/hwsim/run-all.sh @@ -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 - tar czf /tmp/hwsim-tests-$DATE-FAILED.tar.gz logs/$DATE* - exit 1 + +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 diff --git a/tests/hwsim/start-p2p-concurrent.sh b/tests/hwsim/start-p2p-concurrent.sh index 83727b048..294d96bff 100755 --- a/tests/hwsim/start-p2p-concurrent.sh +++ b/tests/hwsim/start-p2p-concurrent.sh @@ -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 diff --git a/tests/hwsim/start.sh b/tests/hwsim/start.sh index be5070dd5..5d97b8a9d 100755 --- a/tests/hwsim/start.sh +++ b/tests/hwsim/start.sh @@ -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 diff --git a/tests/hwsim/stop-wifi.sh b/tests/hwsim/stop-wifi.sh index 6464e67ec..a9f286503 100755 --- a/tests/hwsim/stop-wifi.sh +++ b/tests/hwsim/stop-wifi.sh @@ -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