Browse Source

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>
Jouni Malinen 11 years ago
parent
commit
0c43a982c7
4 changed files with 96 additions and 15 deletions
  1. 51 7
      tests/hwsim/run-all.sh
  2. 21 4
      tests/hwsim/start-p2p-concurrent.sh
  3. 21 4
      tests/hwsim/start.sh
  4. 3 0
      tests/hwsim/stop-wifi.sh

+ 51 - 7
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

+ 21 - 4
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

+ 21 - 4
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

+ 3 - 0
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