Updated through tag hostap_2_5 from git://w1.fi/hostap.git
[mech_eap.git] / libeap / tests / hwsim / example-setup.txt
1 Step-by-step guide for setting up hostapd/wpa_supplicant test framework
2 -----------------------------------------------------------------------
3
4 This document can be used as a quick guide for getting started with
5 hostapd/wpa_supplicant test framework with mac80211_hwsim. While the
6 example here uses Ubuntu 14.04.1 server to have a list of exact steps,
7 there are no requirements for using that specific distribution in the
8 testing setup.
9
10 The steps here describe how to run a full Linux installation in a
11 virtual machine with any host system (e.g., Linux, Windows, or OS X as
12 the host and using kvm, VirtualBox, etc. for running the virtual guest
13 system). For more advanced (and significantly faster and with more
14 testing coverage) configuration on a Linux host system, parallel virtual
15 machines can be used as an alternative setup. See tests/hwsim/vm/README
16 for more details on that.
17
18
19 Install Ubuntu Server 14.04.1 in the virtual machine
20
21 - download installation image, e.g.,
22   http://releases.ubuntu.com/14.04.1/ubuntu-14.04.1-server-amd64.iso
23 - use virtualization software specific steps to create a new VM and
24   install the the guest system with default settings (i.e., no need to
25   select any extra packages during initial installation)
26 - if the host system has multiple CPU cores, it is likely a good idea to
27   enabled at least two CPUs in the guest; 1024 MB of RAM should be enough
28   for testing purposes
29 - 8 GB of virtual hard driver should be fine for this purpose
30 - boot to the installed operating system
31
32
33 Install the prerequisite packages that may not have been installed by default
34
35 sudo apt-get install build-essential git libpcap-dev libsqlite3-dev binutils-dev libnl-3-dev libnl-genl-3-dev libnl-route-3-dev libssl-dev libiberty-dev libdbus-1-dev iw bridge-utils python-pyrad python-crypto
36
37
38 Install a recent kernel wireless components (mac80211_hwsim, mac80211,
39 cfg80211)
40
41 For this step, the kernel version may be updated, but the simpler option
42 is to install the latest version of Backports package. For example:
43
44 wget http://www.kernel.org/pub/linux/kernel/projects/backports/stable/v3.19-rc1/backports-3.19-rc1-1.tar.xz
45 tar xJf backports-3.19-rc1-1.tar.xz
46 cd backports-3.19-rc1-1
47
48 cat > defconfigs/mac80211_hwsim <<EOF
49 CPTCFG_CFG80211=m
50 CPTCFG_CFG80211_WEXT=y
51 CPTCFG_MAC80211=m
52 CPTCFG_MAC80211_LEDS=y
53 CPTCFG_MAC80211_MESH=y
54 CPTCFG_WLAN=y
55 CPTCFG_MAC80211_HWSIM=m
56 EOF
57
58 make defconfig-mac80211_hwsim
59 make
60 sudo make install
61 cd ..
62
63
64 Update iw based on custom iw.git build
65
66 Couple of the test cases expect iw to have support for requesting
67 cfg80211 scan results to be flushed. That functionality is not included
68 in the version that Ubuntu 14.04.1 includes (iw v3.4). Following steps
69 can be used to replace that version with a custom build. This is
70 optional, i.e., most test cases will work with the old iw version, but
71 some test cases are skipped and some are more likely to fail if iw does
72 not get updated.
73
74 wget https://www.kernel.org/pub/software/network/iw/iw-3.17.tar.gz
75 tar xf iw-3.17.tar.gz
76 cd iw-3.17
77 make
78 sudo mv /sbin/iw{,-distro}
79 sudo cp iw /sbin/iw
80 cd ..
81
82
83 Update wireless-regdb
84
85 Number of VHT and DFS test cases are skipped if the old wireless-regdb
86 version from Ubuntu 14.04 (2013.02.13) is used. Following steps can
87 optionally be used to update wireless-regdb to a newer snapshot to
88 enable additional test cases:
89
90 wget http://kernel.org/pub/software/network/wireless-regdb/wireless-regdb-2014.10.07.tar.xz
91 tar xJf wireless-regdb-2014.10.07.tar.xz
92 sudo mv /lib/crda/regulatory.bin{,-distro}
93 sudo cp wireless-regdb-2014.10.07/regulatory.bin /lib/crda/regulatory.bin
94
95 # following command can be used to verify that the new version is trusted
96 regdbdump /lib/crda/regulatory.bin
97
98
99 Download a snapshot of the hostap.git repository and build the programs
100
101 git clone git://w1.fi/hostap.git
102 cd hostap/tests/hwsim
103 ./build.sh
104
105
106 Setup is now ready for testing. You can run a quick test to confirm that
107 things work as expected:
108
109 # load mac80211_hwsim and start test software
110 ./start.sh
111
112 # run a single test case ap_open
113 sudo ./run-tests.py ap_open
114
115 This should print out following style results:
116
117 DEV: wlan0: 02:00:00:00:00:00
118 DEV: wlan1: 02:00:00:00:01:00
119 DEV: wlan2: 02:00:00:00:02:00
120 APDEV: wlan3
121 APDEV: wlan4
122 START ap_open 1/1
123 Test: AP with open mode (no security) configuration
124 Starting AP wlan3
125 Connect STA wlan0 to AP
126 PASS ap_open 0.175895 2015-01-17 20:12:07.486006
127 passed all 1 test case(s)
128
129 (If that "PASS ap_open" line does not show up, something unexpected has
130 happened and the setup is not in working condition.)
131
132 # to stop test software and unload mac80211_hwsim
133 ./stop.sh
134
135
136 To run all available test cases (about thousand or so), you can run following:
137
138 ./run-all.sh
139
140 This will take about half an hour to hour to run (if that sounds long, see
141 vm/README for information on how parallel VMs can be used to speed this
142 up; e.g., a 4-core i7-4770K can run these in under 10 minutes with 7
143 parallel VMs).
144
145 The results may look something like this:
146
147 START grpform_goneg_fail_with_group_iface 1/981
148 PASS grpform_goneg_fail_with_group_iface 0.371424 2015-01-17 22:17:16.659803
149 START grpform2 2/981
150 PASS grpform2 1.476142 2015-01-17 22:17:18.136539
151 ...
152 START ext_password_psk_not_found 981/981
153 PASS ext_password_psk_not_found 1.544709 2015-01-17 22:46:56.489764
154 failed tests: wext_wpa2_psk wext_wep_open_auth wext_open wext_rfkill wext_scan_hidden wext_pmksa_cache wext_wep_shared_key_auth
155
156
157 In this example, about 860 test cases passed and about 100 were skipped.
158
159 Most of the skipped test cases are in following categories:
160 - D-Bus (requires kvm-based test run, see vm/README)
161 - VHT 80 and 160 MHz channels (requires wireless-regdb update)
162 - DFS (requires wireless-regdb updates)
163
164 The following test failed every time (i.e., other failed cases could be
165 passed on second attempt):
166
167 wext_pmf wext_wpa2_psk wext_wep_open_auth wext_open wext_rfkill wext_scan_hidden wext_pmksa_cache wext_wep_shared_key_auth
168
169 WEXT failures are due to the specific cfg80211/mac80211 version from
170 Backports not allowing WEXT support to be enabled. A newer build
171 addresses that and these WEXT test cases pass, e.g., with this snapshot
172 build:
173 http://buildbot.w1.fi/backports-wireless-testing/backports-wireless-testing-2015-01-18-ba3f765.tar.bz2
174
175 With that version, ibss_rsn is failing due to a known cfg80211
176 regression in the specific snapshot build. All other test cases passed
177 at least on retry or were skipped due to missing testing capability.