tests: Wait for AP-ENABLED

It takes some time for hostapd to complete AP startup. In some cases,
this could potentially result in station starting a scan before the AP
is beaconing or ready to reply to probes. To avoid such race conditions,
wait for AP-ENABLED before going ahead with the test cases.

Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2013-12-27 08:27:44 +02:00
parent 629edfef81
commit 629dbdd36a
3 changed files with 8 additions and 4 deletions

View file

@ -179,7 +179,7 @@ class Hostapd:
hdr = struct.pack('<HH6B6B6BH', *t)
self.request("MGMT_TX " + binascii.hexlify(hdr + msg['payload']))
def add_ap(ifname, params):
def add_ap(ifname, params, wait_enabled=True):
logger.info("Starting AP " + ifname)
hapd_global = HostapdGlobal()
hapd_global.remove(ifname)
@ -203,6 +203,10 @@ def add_ap(ifname, params):
else:
hapd.set(f, v)
hapd.enable()
if wait_enabled:
ev = hapd.wait_event(["AP-ENABLED"], timeout=30)
if ev is None:
raise Exception("AP startup timed out")
return hapd
def add_bss(phy, ifname, confname, ignore_error=False):

View file

@ -42,7 +42,7 @@ def test_ap_acs(dev, apdev):
"""Automatic channel selection"""
params = hostapd.wpa2_params(ssid="test-acs", passphrase="12345678")
params['channel'] = '0'
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
hapd = hostapd.add_ap(apdev[0]['ifname'], params, wait_enabled=False)
wait_acs(hapd)
freq = hapd.get_status_field("freq")

View file

@ -17,11 +17,11 @@ def test_ap_ht40_scan(dev, apdev):
params = { "ssid": "test-ht40",
"channel": "5",
"ht_capab": "[HT40-]"}
hapd = hostapd.add_ap(apdev[0]['ifname'], params)
hapd = hostapd.add_ap(apdev[0]['ifname'], params, wait_enabled=False)
state = hapd.get_status_field("state")
if state != "HT_SCAN":
time.wait(0.1)
time.sleep(0.1)
state = hapd.get_status_field("state")
if state != "HT_SCAN":
raise Exception("Unexpected interface state - expected HT_SCAN")