tests: Run hostapd-AS under valgrind if requested
[mech_eap.git] / tests / hwsim / start.sh
1 #!/bin/sh
2
3 DIR="$( cd "$( dirname "$0" )" && pwd )"
4 WPAS=$DIR/../../wpa_supplicant/wpa_supplicant
5 WPACLI=$DIR/../../wpa_supplicant/wpa_cli
6 HAPD=$DIR/../../hostapd/hostapd
7 HAPD_AS=$DIR/../../hostapd/hostapd
8 WLANTEST=$DIR/../../wlantest/wlantest
9 HLR_AUC_GW=$DIR/../../hostapd/hlr_auc_gw
10 DATE="$(date +%s)"
11
12 if [ -z "$LOGDIR" ] ; then
13     LOGDIR="$DIR/logs/$DATE"
14     mkdir -p $LOGDIR
15 else
16     if [ -e $LOGDIR/alt-wpa_supplicant/wpa_supplicant/wpa_supplicant ]; then
17         WPAS=$LOGDIR/alt-wpa_supplicant/wpa_supplicant/wpa_supplicant
18     fi
19     if [ -e $LOGDIR/alt-hostapd/hostapd/hostapd ]; then
20         HAPD=$LOGDIR/alt-hostapd/hostapd/hostapd
21     fi
22     if [ -e $LOGDIR/alt-hostapd-as/hostapd/hostapd ]; then
23         HAPD_AS=$LOGDIR/alt-hostapd-as/hostapd/hostapd
24     fi
25     if [ -e $LOGDIR/alt-hlr_auc_gw/hostapd/hlr_auc_gw ]; then
26         HLR_AUC_GW=$LOGDIR/alt-hlr_auc_gw/hostapd/hlr_auc_gw
27     fi
28 fi
29
30 if test -w "$DIR/logs" ; then
31     rm -rf $DIR/logs/current
32     ln -sf $DATE $DIR/logs/current
33 fi
34
35 if groups | tr ' ' "\n" | grep -q ^admin$; then
36     GROUP=admin
37 else
38     GROUP=adm
39 fi
40
41 for i in 0 1 2; do
42     sed "s/ GROUP=.*$/ GROUP=$GROUP/" "$DIR/p2p$i.conf" > "$LOGDIR/p2p$i.conf"
43 done
44
45 sed "s/group=admin/group=$GROUP/" "$DIR/auth_serv/as.conf" > "$LOGDIR/as.conf"
46 sed "s/group=admin/group=$GROUP/;s%LOGDIR%$LOGDIR%" "$DIR/auth_serv/as2.conf" > "$LOGDIR/as2.conf"
47
48 if [ "$1" = "valgrind" ]; then
49     VALGRIND=y
50     VALGRIND_WPAS="valgrind --log-file=$LOGDIR/valgrind-wlan%d"
51     VALGRIND_HAPD="valgrind --log-file=$LOGDIR/valgrind-hostapd"
52     chmod -f a+rx $WPAS
53     chmod -f a+rx $HAPD
54     chmod -f a+rx $HAPD_AS
55     HAPD_AS="valgrind --log-file=$LOGDIR/valgrind-auth-serv $HAPD_AS"
56     shift
57 else
58     unset VALGRIND
59     VALGRIND_WPAS=
60     VALGRIND_HAPD=
61 fi
62
63 if [ "$1" = "trace" ]; then
64     TRACE="T"
65     shift
66 else
67     TRACE=""
68 fi
69
70 $DIR/stop.sh
71 test -f /proc/modules && sudo modprobe mac80211_hwsim radios=6
72 sudo ifconfig hwsim0 up
73 sudo $WLANTEST -i hwsim0 -n $LOGDIR/hwsim0.pcapng -c -dt -L $LOGDIR/hwsim0 &
74 for i in 0 1 2; do
75     sudo $(printf -- "$VALGRIND_WPAS" $i) $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $LOGDIR/p2p$i.conf \
76          -ddKt$TRACE -f $LOGDIR/log$i &
77 done
78 sudo $(printf -- "$VALGRIND_WPAS" 5) $WPAS -g /tmp/wpas-wlan5 -G$GROUP \
79     -ddKt$TRACE -f $LOGDIR/log5 &
80 sudo $VALGRIND_HAPD $HAPD -ddKt$TRACE -g /var/run/hostapd-global -G $GROUP -ddKt -f $LOGDIR/hostapd &
81
82 sleep 1
83 sudo chown -f $USER $LOGDIR/hwsim0.pcapng $LOGDIR/hwsim0 $LOGDIR/log* $LOGDIR/hostapd
84
85 if [ -x $HLR_AUC_GW ]; then
86     cp $DIR/auth_serv/hlr_auc_gw.milenage_db $LOGDIR/hlr_auc_gw.milenage_db
87     sudo $HLR_AUC_GW -u -m $LOGDIR/hlr_auc_gw.milenage_db -g $DIR/auth_serv/hlr_auc_gw.gsm > $LOGDIR/hlr_auc_gw &
88 fi
89
90 touch $LOGDIR/hostapd.db
91 sudo $HAPD_AS -ddKt $LOGDIR/as.conf $LOGDIR/as2.conf > $LOGDIR/auth_serv &
92 if [ "x$VALGRIND" = "xy" ]; then
93     sleep 1
94     sudo chown -f $USER $LOGDIR/*valgrind*
95 fi
96
97 # wait for programs to be fully initialized
98 for i in 0 1 2; do
99     for j in `seq 1 10`; do
100         if $WPACLI -g /tmp/wpas-wlan$i ping | grep -q PONG; then
101             break
102         fi
103         if [ $j = "10" ]; then
104             echo "Could not connect to /tmp/wpas-wlan$i"
105             exit 1
106         fi
107         sleep 1
108     done
109 done
110
111 for j in `seq 1 10`; do
112     if $WPACLI -g /var/run/hostapd-global ping | grep -q PONG; then
113         break
114     fi
115     if [ $j = "10" ]; then
116         echo "Could not connect to /var/run/hostapd-global"
117         exit 1
118     fi
119     sleep 1
120 done
121
122 exit 0