tests: Extra coverage for command line arguments
[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         # extra code coverage
19         $WPAS > /dev/null 2>&1
20         $WPAS -efoo -Ifoo -mfoo -ofoo -Ofoo -pfoo -Pfoo -h > /dev/null 2>&1
21         $WPAS -bfoo -B -Cfoo -q -W -N -L > /dev/null 2>&1
22         $WPAS -T -v > /dev/null 2>&1
23         $WPAS -u -z > /dev/null 2>&1
24     fi
25     if [ -e $LOGDIR/alt-hostapd/hostapd/hostapd ]; then
26         HAPD=$LOGDIR/alt-hostapd/hostapd/hostapd
27         # extra code coverage
28         $HAPD > /dev/null 2>&1
29         $HAPD -v > /dev/null 2>&1
30         $HAPD -B -efoo -Pfoo -T -bfoo -h > /dev/null 2>&1
31         $HAPD -ufoo > /dev/null 2>&1
32         $HAPD -u00:11:22:33:44:55 > /dev/null 2>&1
33         $HAPD -gfoo > /dev/null 2>&1
34         $HAPD -Gfoo-not-exists > /dev/null 2>&1
35         $HAPD -z > /dev/null 2>&1
36     fi
37     if [ -e $LOGDIR/alt-hostapd-as/hostapd/hostapd ]; then
38         HAPD_AS=$LOGDIR/alt-hostapd-as/hostapd/hostapd
39     fi
40     if [ -e $LOGDIR/alt-hlr_auc_gw/hostapd/hlr_auc_gw ]; then
41         HLR_AUC_GW=$LOGDIR/alt-hlr_auc_gw/hostapd/hlr_auc_gw
42         # extra code coverage
43         $HLR_AUC_GW > /dev/null 2>&1
44         $HLR_AUC_GW -Dfoo -i7 -sfoo -h > /dev/null 2>&1
45         $HLR_AUC_GW -i100 > /dev/null 2>&1
46         $HLR_AUC_GW -z > /dev/null 2>&1
47     fi
48 fi
49
50 if test -w "$DIR/logs" ; then
51     rm -rf $DIR/logs/current
52     ln -sf $DATE $DIR/logs/current
53 fi
54
55 if groups | tr ' ' "\n" | grep -q ^admin$; then
56     GROUP=admin
57 else
58     GROUP=adm
59 fi
60
61 for i in 0 1 2; do
62     sed "s/ GROUP=.*$/ GROUP=$GROUP/" "$DIR/p2p$i.conf" > "$LOGDIR/p2p$i.conf"
63 done
64
65 sed "s/group=admin/group=$GROUP/" "$DIR/auth_serv/as.conf" > "$LOGDIR/as.conf"
66 sed "s/group=admin/group=$GROUP/;s%LOGDIR%$LOGDIR%" "$DIR/auth_serv/as2.conf" > "$LOGDIR/as2.conf"
67
68 if [ "$1" = "valgrind" ]; then
69     VALGRIND=y
70     VALGRIND_WPAS="valgrind --log-file=$LOGDIR/valgrind-wlan%d"
71     VALGRIND_HAPD="valgrind --log-file=$LOGDIR/valgrind-hostapd"
72     chmod -f a+rx $WPAS
73     chmod -f a+rx $HAPD
74     chmod -f a+rx $HAPD_AS
75     HAPD_AS="valgrind --log-file=$LOGDIR/valgrind-auth-serv $HAPD_AS"
76     shift
77 else
78     unset VALGRIND
79     VALGRIND_WPAS=
80     VALGRIND_HAPD=
81 fi
82
83 if [ "$1" = "trace" ]; then
84     TRACE="T"
85     shift
86 else
87     TRACE=""
88 fi
89
90 $DIR/stop.sh
91
92 TMP=$1
93 if [ x${TMP%=[0-9]*} = "xchannels" ]; then
94         NUM_CH=${TMP#channels=}
95         shift
96 else
97         NUM_CH=1
98 fi
99
100 test -f /proc/modules && sudo modprobe mac80211_hwsim radios=6 channels=$NUM_CH support_p2p_device=0
101 sudo ifconfig hwsim0 up
102 sudo $WLANTEST -i hwsim0 -n $LOGDIR/hwsim0.pcapng -c -dt -L $LOGDIR/hwsim0 &
103 for i in 0 1 2; do
104     sudo $(printf -- "$VALGRIND_WPAS" $i) $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $LOGDIR/p2p$i.conf \
105          -ddKt$TRACE -f $LOGDIR/log$i &
106 done
107 sudo $(printf -- "$VALGRIND_WPAS" 5) $WPAS -g /tmp/wpas-wlan5 -G$GROUP \
108     -ddKt$TRACE -f $LOGDIR/log5 &
109 sudo $VALGRIND_HAPD $HAPD -ddKt$TRACE -g /var/run/hostapd-global -G $GROUP -ddKt -f $LOGDIR/hostapd &
110
111 sleep 1
112 sudo chown -f $USER $LOGDIR/hwsim0.pcapng $LOGDIR/hwsim0 $LOGDIR/log* $LOGDIR/hostapd
113
114 if [ -x $HLR_AUC_GW ]; then
115     cp $DIR/auth_serv/hlr_auc_gw.milenage_db $LOGDIR/hlr_auc_gw.milenage_db
116     sudo $HLR_AUC_GW -u -m $LOGDIR/hlr_auc_gw.milenage_db -g $DIR/auth_serv/hlr_auc_gw.gsm > $LOGDIR/hlr_auc_gw &
117 fi
118
119 touch $LOGDIR/hostapd.db
120 sudo $HAPD_AS -ddKt $LOGDIR/as.conf $LOGDIR/as2.conf > $LOGDIR/auth_serv &
121 if [ "x$VALGRIND" = "xy" ]; then
122     sleep 1
123     sudo chown -f $USER $LOGDIR/*valgrind*
124 fi
125
126 # wait for programs to be fully initialized
127 for i in 0 1 2; do
128     for j in `seq 1 10`; do
129         if $WPACLI -g /tmp/wpas-wlan$i ping | grep -q PONG; then
130             break
131         fi
132         if [ $j = "10" ]; then
133             echo "Could not connect to /tmp/wpas-wlan$i"
134             exit 1
135         fi
136         sleep 1
137     done
138 done
139
140 for j in `seq 1 10`; do
141     if $WPACLI -g /var/run/hostapd-global ping | grep -q PONG; then
142         break
143     fi
144     if [ $j = "10" ]; then
145         echo "Could not connect to /var/run/hostapd-global"
146         exit 1
147     fi
148     sleep 1
149 done
150
151 exit 0