]> git.ipfire.org Git - thirdparty/hostap.git/blame - tests/hwsim/test_hostapd_oom.py
tests: Pass full apdev to add_ap() function (1)
[thirdparty/hostap.git] / tests / hwsim / test_hostapd_oom.py
CommitLineData
cd9548c0
JM
1# hostapd and out-of-memory error paths
2# Copyright (c) 2015, Jouni Malinen
3#
4# This software may be distributed under the terms of the BSD license.
5# See README for more details.
6
7import logging
8logger = logging.getLogger()
915135e0 9import time
cd9548c0
JM
10
11import hostapd
12from utils import HwsimSkip
13
496a7a6f 14def hostapd_oom_loop(apdev, params, start_func="main"):
8b8a1864 15 hapd = hostapd.add_ap(apdev[0], { "ssid": "ctrl" })
cd9548c0
JM
16 hapd_global = hostapd.HostapdGlobal()
17
18 count = 0
19 for i in range(1, 1000):
496a7a6f 20 if "OK" not in hapd.request("TEST_ALLOC_FAIL %d:%s" % (i, start_func)):
cd9548c0
JM
21 raise HwsimSkip("TEST_ALLOC_FAIL not supported")
22 try:
8b8a1864 23 hostapd.add_ap(apdev[1], params, timeout=2.5)
cd9548c0
JM
24 logger.info("Iteration %d - success" % i)
25 hapd_global.remove(apdev[1]['ifname'])
26
27 state = hapd.request('GET_ALLOC_FAIL')
28 logger.info("GET_ALLOC_FAIL: " + state)
29 hapd.request("TEST_ALLOC_FAIL 0:")
30 if i < 3:
31 raise Exception("AP setup succeeded during out-of-memory")
915135e0
JM
32 if state.startswith('0:'):
33 count = 0
34 else:
cd9548c0
JM
35 count += 1
36 if count == 5:
37 break
38 except Exception, e:
39 logger.info("Iteration %d - %s" % (i, str(e)))
40
41def test_hostapd_oom_open(dev, apdev):
42 """hostapd failing to setup open mode due to OOM"""
43 params = { "ssid": "open" }
44 hostapd_oom_loop(apdev, params)
45
46def test_hostapd_oom_wpa2_psk(dev, apdev):
47 """hostapd failing to setup WPA2-PSK mode due to OOM"""
48 params = hostapd.wpa2_params(ssid="test", passphrase="12345678")
059bcc47 49 params['wpa_psk_file'] = 'hostapd.wpa_psk'
cd9548c0
JM
50 hostapd_oom_loop(apdev, params)
51
52def test_hostapd_oom_wpa2_eap(dev, apdev):
53 """hostapd failing to setup WPA2-EAP mode due to OOM"""
54 params = hostapd.wpa2_eap_params(ssid="test")
059bcc47
JM
55 params['acct_server_addr'] = "127.0.0.1"
56 params['acct_server_port'] = "1813"
57 params['acct_server_shared_secret'] = "radius"
cd9548c0 58 hostapd_oom_loop(apdev, params)
496a7a6f
JM
59
60def test_hostapd_oom_wpa2_eap_radius(dev, apdev):
61 """hostapd failing to setup WPA2-EAP mode due to OOM in RADIUS"""
62 params = hostapd.wpa2_eap_params(ssid="test")
63 params['acct_server_addr'] = "127.0.0.1"
64 params['acct_server_port'] = "1813"
65 params['acct_server_shared_secret'] = "radius"
66 hostapd_oom_loop(apdev, params, start_func="accounting_init")
915135e0
JM
67
68def test_hostapd_oom_wpa2_psk_connect(dev, apdev):
69 """hostapd failing during WPA2-PSK mode connection due to OOM"""
70 params = hostapd.wpa2_params(ssid="test-wpa2-psk", passphrase="12345678")
8b8a1864 71 hapd = hostapd.add_ap(apdev[0], params)
915135e0
JM
72
73 dev[0].request("SCAN_INTERVAL 1")
74 count = 0
75 for i in range(1, 1000):
76 logger.info("Iteration %d" % i)
77 if "OK" not in hapd.request("TEST_ALLOC_FAIL %d:main" % i):
78 raise HwsimSkip("TEST_ALLOC_FAIL not supported")
79 id = dev[0].connect("test-wpa2-psk", psk="12345678",
80 scan_freq="2412", wait_connect=False)
81 ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED",
82 "CTRL-EVENT-SSID-TEMP-DISABLED"], timeout=5)
83 if ev is None:
84 logger.info("Timeout while waiting for connection in iteration %d" % i)
85 dev[0].request("REMOVE_NETWORK all")
86 time.sleep(0.1)
87 else:
88 if "CTRL-EVENT-SSID-TEMP-DISABLED" in ev:
89 logger.info("Re-select to avoid long wait for temp disavle")
90 dev[0].select_network(id)
91 dev[0].wait_connected()
92 dev[0].request("REMOVE_NETWORK all")
93 dev[0].wait_disconnected()
94 for i in range(3):
95 dev[i].dump_monitor()
96 hapd.dump_monitor()
97
98 state = hapd.request('GET_ALLOC_FAIL')
99 logger.info("GET_ALLOC_FAIL: " + state)
100 hapd.request("TEST_ALLOC_FAIL 0:")
101 if state.startswith('0:'):
102 count = 0
103 else:
104 count += 1
105 if count == 5:
106 break
107 dev[0].request("SCAN_INTERVAL 5")
108
109def test_hostapd_oom_wpa2_eap_connect(dev, apdev, params):
110 """hostapd failing during WPA2-EAP mode connection due to OOM"""
111 if not params['long']:
112 raise HwsimSkip("Skip test case with long duration due to --long not specified")
113 params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
114 params['acct_server_addr'] = "127.0.0.1"
115 params['acct_server_port'] = "1813"
116 params['acct_server_shared_secret'] = "radius"
8b8a1864 117 hapd = hostapd.add_ap(apdev[0], params)
915135e0
JM
118
119 dev[0].request("SCAN_INTERVAL 1")
120 count = 0
121 for i in range(1, 1000):
122 logger.info("Iteration %d" % i)
123 if "OK" not in hapd.request("TEST_ALLOC_FAIL %d:main" % i):
124 raise HwsimSkip("TEST_ALLOC_FAIL not supported")
125 id = dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP",
126 eap="GPSK", identity="gpsk user",
127 password="abcdefghijklmnop0123456789abcdef",
128 scan_freq="2412", wait_connect=False)
129 ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED",
130 "CTRL-EVENT-SSID-TEMP-DISABLED"], timeout=5)
131 if ev is None:
132 logger.info("Timeout while waiting for connection in iteration %d" % i)
133 dev[0].request("REMOVE_NETWORK all")
134 time.sleep(0.1)
135 else:
136 if "CTRL-EVENT-SSID-TEMP-DISABLED" in ev:
137 logger.info("Re-select to avoid long wait for temp disavle")
138 dev[0].select_network(id)
139 dev[0].wait_connected()
140 dev[0].request("REMOVE_NETWORK all")
141 dev[0].wait_disconnected()
142 for i in range(3):
143 dev[i].dump_monitor()
144 hapd.dump_monitor()
145
146 state = hapd.request('GET_ALLOC_FAIL')
147 logger.info("GET_ALLOC_FAIL: " + state)
148 hapd.request("TEST_ALLOC_FAIL 0:")
149 if state.startswith('0:'):
150 count = 0
151 else:
152 count += 1
153 if count == 5:
154 break
155 dev[0].request("SCAN_INTERVAL 5")