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