tests: Remove duplicated mkdir for LOGDIR
[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 WLANTEST=$DIR/../../wlantest/wlantest
8 HLR_AUC_GW=$DIR/../../hostapd/hlr_auc_gw
9
10 if [ -z "$LOGDIR" ] ; then
11     DATE="$(date +%s)"
12     LOGDIR="$DIR/logs/$DATE"
13     mkdir -p $LOGDIR
14     rm -rf $DIR/logs/current
15     ln -sf $DATE $DIR/logs/current
16 fi
17
18 if groups | tr ' ' "\n" | grep -q ^admin$; then
19     GROUP=admin
20 else
21     GROUP=adm
22 fi
23
24 sed "s/ GROUP=.*$/ GROUP=$GROUP/" "$DIR/sta-dummy.conf" > "$LOGDIR/sta-dummy.conf"
25 for i in 0 1 2; do
26     sed "s/ GROUP=.*$/ GROUP=$GROUP/" "$DIR/p2p$i.conf" > "$LOGDIR/p2p$i.conf"
27 done
28
29 if [ "$1" = "concurrent" ]; then
30     CONCURRENT=y
31     CONCURRENT_ARGS="-N -Dnl80211 -ista%d -c $LOGDIR/sta-dummy.conf"
32     shift
33 else
34     unset CONCURRENT
35     CONCURRENT_ARGS=
36 fi
37
38 if [ "$1" = "valgrind" ]; then
39     VALGRIND=y
40     VALGRIND_WPAS="valgrind --log-file=$LOGDIR/valgrind-wlan%d"
41     VALGRIND_HAPD="valgrind --log-file=$LOGDIR/valgrind-hostapd"
42     chmod -f a+rx $WPAS
43     chmod -f a+rx $HAPD
44     shift
45 else
46     unset VALGRIND
47     VALGRIND_WPAS=
48     VALGRIND_HAPD=
49 fi
50
51 if [ "$1" = "trace" ]; then
52     TRACE="T"
53     shift
54 else
55     TRACE=""
56 fi
57
58 $DIR/stop.sh
59 test -f /proc/modules && sudo modprobe mac80211_hwsim radios=5
60 if [ "$CONCURRENT" = "y" ]; then
61     sudo iw wlan0 interface add sta0 type station
62     sudo iw wlan1 interface add sta1 type station
63     sudo iw wlan2 interface add sta2 type station
64 fi
65 sudo ifconfig hwsim0 up
66 sudo $WLANTEST -i hwsim0 -n $LOGDIR/hwsim0.pcapng -c -d > $LOGDIR/hwsim0 &
67 for i in 0 1 2; do
68     sudo $(printf -- "$VALGRIND_WPAS" $i) $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $LOGDIR/p2p$i.conf \
69          $(printf -- "$CONCURRENT_ARGS" $i) -ddKt$TRACE -f $LOGDIR/log$i &
70 done
71 sudo $VALGRIND_HAPD $HAPD -ddKt$TRACE -g /var/run/hostapd-global -G $GROUP -ddKt -f $LOGDIR/hostapd &
72
73 sleep 1
74 sudo chown -f $USER $LOGDIR/hwsim0.pcapng $LOGDIR/log* $LOGDIR/hostapd
75 if [ "x$VALGRIND" = "xy" ]; then
76     sudo chown -f $USER $LOGDIR/*valgrind*
77 fi
78
79 if [ -x $HLR_AUC_GW ]; then
80     $HLR_AUC_GW -m $DIR/auth_serv/hlr_auc_gw.milenage_db > $LOGDIR/hlr_auc_gw &
81 fi
82
83 $HAPD -ddKt $DIR/auth_serv/as.conf > $LOGDIR/auth_serv &
84
85 # wait for programs to be fully initialized
86 for i in 0 1 2; do
87     for j in `seq 1 10`; do
88         if $WPACLI -g /tmp/wpas-wlan$i ping | grep -q PONG; then
89             break
90         fi
91         if [ $j = "10" ]; then
92             echo "Could not connect to /tmp/wpas-wlan$i"
93             exit 1
94         fi
95         sleep 1
96     done
97 done
98
99 for j in `seq 1 10`; do
100     if $WPACLI -g /var/run/hostapd-global ping | grep -q PONG; then
101         break
102     fi
103     if [ $j = "10" ]; then
104         echo "Could not connect to /var/run/hostapd-global"
105         exit 1
106     fi
107     sleep 1
108 done
109
110 exit 0