tests: Make TDLS test case scan clearing more robust
There was a race condition on starting the flush_scan_cache() operations if a scan happened to be in progress when the test case ended since the ABORT_SCAN success case did not wait for the pending scan operation to be completed. Wait for the scan completion event in addition to the disconnection event if the ABORT_SCAN command is accepted. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
32e4ad4433
commit
64766a7783
2 changed files with 12 additions and 6 deletions
|
@ -363,12 +363,16 @@ def tdls_clear_reg(hapd, dev):
|
||||||
if hapd:
|
if hapd:
|
||||||
hapd.request("DISABLE")
|
hapd.request("DISABLE")
|
||||||
dev[0].request("DISCONNECT")
|
dev[0].request("DISCONNECT")
|
||||||
dev[0].request("ABORT_SCAN")
|
res0 = dev[0].request("ABORT_SCAN")
|
||||||
dev[1].request("DISCONNECT")
|
dev[1].request("DISCONNECT")
|
||||||
dev[1].request("ABORT_SCAN")
|
res1 = dev[1].request("ABORT_SCAN")
|
||||||
dev[0].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=0.5)
|
for i in range(2 if "OK" in res0 else 1):
|
||||||
|
dev[0].wait_event(["CTRL-EVENT-DISCONNECTED",
|
||||||
|
"CTRL-EVENT-SCAN-RESULTS"], timeout=0.5)
|
||||||
dev[0].dump_monitor()
|
dev[0].dump_monitor()
|
||||||
dev[1].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=0.5)
|
for i in range(2 if "OK" in res1 else 1):
|
||||||
|
dev[1].wait_event(["CTRL-EVENT-DISCONNECTED",
|
||||||
|
"CTRL-EVENT-SCAN-RESULTS"], timeout=0.5)
|
||||||
dev[1].dump_monitor()
|
dev[1].dump_monitor()
|
||||||
subprocess.call(['iw', 'reg', 'set', '00'])
|
subprocess.call(['iw', 'reg', 'set', '00'])
|
||||||
dev[0].wait_event(["CTRL-EVENT-REGDOM-CHANGE"], timeout=0.5)
|
dev[0].wait_event(["CTRL-EVENT-REGDOM-CHANGE"], timeout=0.5)
|
||||||
|
|
|
@ -1062,8 +1062,9 @@ class WpaSupplicant:
|
||||||
cmd += " passive=1"
|
cmd += " passive=1"
|
||||||
if not no_wait:
|
if not no_wait:
|
||||||
self.dump_monitor()
|
self.dump_monitor()
|
||||||
if not "OK" in self.request(cmd):
|
res = self.request(cmd)
|
||||||
raise Exception("Failed to trigger scan")
|
if not "OK" in res:
|
||||||
|
raise Exception("Failed to trigger scan: " + str(res))
|
||||||
if no_wait:
|
if no_wait:
|
||||||
return
|
return
|
||||||
ev = self.wait_event(["CTRL-EVENT-SCAN-RESULTS",
|
ev = self.wait_event(["CTRL-EVENT-SCAN-RESULTS",
|
||||||
|
@ -1089,6 +1090,7 @@ class WpaSupplicant:
|
||||||
self.scan(freq=freq, only_new=True)
|
self.scan(freq=freq, only_new=True)
|
||||||
res = self.request("SCAN_RESULTS")
|
res = self.request("SCAN_RESULTS")
|
||||||
if len(res.splitlines()) > 1:
|
if len(res.splitlines()) > 1:
|
||||||
|
logger.debug("Scan results remaining after first attempt to flush the results:\n" + res)
|
||||||
self.request("BSS_FLUSH 0")
|
self.request("BSS_FLUSH 0")
|
||||||
self.scan(freq=2422, only_new=True)
|
self.scan(freq=2422, only_new=True)
|
||||||
res = self.request("SCAN_RESULTS")
|
res = self.request("SCAN_RESULTS")
|
||||||
|
|
Loading…
Reference in a new issue