]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
tests: Avoid race conditions in couple of Hotspot 2.0 test cases
authorJouni Malinen <jouni@codeaurora.org>
Mon, 16 Sep 2019 15:05:44 +0000 (18:05 +0300)
committerJouni Malinen <j@w1.fi>
Mon, 16 Sep 2019 15:09:54 +0000 (18:09 +0300)
Wait hostapd to complete key setup before asking it to send a frame that
may need PMF. This is needed especially with UML time-travel.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
tests/hwsim/test_ap_hs20.py

index 7e5306602fc9e1e12883d2019095430f7715d2c2..fb12152470922714f918e24f9f10cd1eaa435456 100644 (file)
@@ -795,7 +795,7 @@ def eap_test(dev, ap, eap_params, method, user, release=0):
     params['nai_realm'] = ["0,example.com," + eap_params]
     if release > 0:
         params['hs20_release'] = str(release)
-    hostapd.add_ap(ap, params)
+    hapd = hostapd.add_ap(ap, params)
 
     dev.hs20_enable()
     dev.add_cred_values({'realm': "example.com",
@@ -804,6 +804,7 @@ def eap_test(dev, ap, eap_params, method, user, release=0):
                          'password': "password"})
     interworking_select(dev, bssid, freq="2412")
     interworking_connect(dev, bssid, method)
+    return hapd
 
 @remote_compatible
 def test_ap_hs20_eap_unknown(dev, apdev):
@@ -1469,7 +1470,7 @@ def _test_ap_hs20_gas_with_another_ap_while_using_pmf(dev, apdev):
     bssid = apdev[0]['bssid']
     params = hs20_ap_params()
     params['hessid'] = bssid
-    hostapd.add_ap(apdev[0], params)
+    hapd = hostapd.add_ap(apdev[0], params)
 
     bssid2 = apdev[1]['bssid']
     params = hs20_ap_params()
@@ -1487,6 +1488,7 @@ def _test_ap_hs20_gas_with_another_ap_while_using_pmf(dev, apdev):
     interworking_select(dev[0], bssid, "home", freq="2412")
     interworking_connect(dev[0], bssid, "TTLS")
     dev[0].dump_monitor()
+    hapd.wait_sta()
 
     logger.info("Verifying GAS query with same AP while associated")
     dev[0].request("ANQP_GET " + bssid + " 263")
@@ -1519,6 +1521,7 @@ def test_ap_hs20_gas_frag_while_associated(dev, apdev):
                                  'domain': "example.com"})
     interworking_select(dev[0], bssid, "home", freq="2412")
     interworking_connect(dev[0], bssid, "TTLS")
+    hapd.wait_sta()
 
     logger.info("Verifying GAS query while associated")
     dev[0].request("FETCH_ANQP")
@@ -2433,10 +2436,10 @@ def test_ap_hs20_deauth_req_ess(dev, apdev):
 
 def _test_ap_hs20_deauth_req_ess(dev, apdev):
     dev[0].request("SET pmf 2")
-    eap_test(dev[0], apdev[0], "21[3:26]", "TTLS", "user")
+    hapd = eap_test(dev[0], apdev[0], "21[3:26]", "TTLS", "user")
     dev[0].dump_monitor()
     addr = dev[0].p2p_interface_addr()
-    hapd = hostapd.Hostapd(apdev[0]['ifname'])
+    hapd.wait_sta()
     hapd.request("HS20_DEAUTH_REQ " + addr + " 1 120 http://example.com/")
     ev = dev[0].wait_event(["HS20-DEAUTH-IMMINENT-NOTICE"])
     if ev is None:
@@ -2463,10 +2466,10 @@ def test_ap_hs20_deauth_req_bss(dev, apdev):
 
 def _test_ap_hs20_deauth_req_bss(dev, apdev):
     dev[0].request("SET pmf 2")
-    eap_test(dev[0], apdev[0], "21[3:26]", "TTLS", "user")
+    hapd = eap_test(dev[0], apdev[0], "21[3:26]", "TTLS", "user")
     dev[0].dump_monitor()
     addr = dev[0].p2p_interface_addr()
-    hapd = hostapd.Hostapd(apdev[0]['ifname'])
+    hapd.wait_sta()
     hapd.request("HS20_DEAUTH_REQ " + addr + " 0 120 http://example.com/")
     ev = dev[0].wait_event(["HS20-DEAUTH-IMMINENT-NOTICE"])
     if ev is None:
@@ -2518,7 +2521,7 @@ def test_ap_hs20_deauth_req_without_pmf(dev, apdev):
     """Hotspot 2.0 connection and deauthentication request without PMF"""
     check_eap_capa(dev[0], "MSCHAPV2")
     dev[0].request("SET pmf 0")
-    eap_test(dev[0], apdev[0], "21[3:26]", "TTLS", "user", release=1)
+    hapd = eap_test(dev[0], apdev[0], "21[3:26]", "TTLS", "user", release=1)
     dev[0].dump_monitor()
     id = int(dev[0].get_status_field("id"))
     dev[0].set_network(id, "ieee80211w", "0")
@@ -2527,7 +2530,7 @@ def test_ap_hs20_deauth_req_without_pmf(dev, apdev):
     dev[0].select_network(id, freq=2412)
     dev[0].wait_connected()
     addr = dev[0].own_addr()
-    hapd = hostapd.Hostapd(apdev[0]['ifname'])
+    hapd.wait_sta()
     hapd.request("HS20_DEAUTH_REQ " + addr + " 1 120 http://example.com/")
     ev = dev[0].wait_event(["HS20-DEAUTH-IMMINENT-NOTICE"], timeout=0.2)
     if ev is not None: