tests: P2P group re-invocation with invitation response getting lost
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
ccad05a95c
commit
be43588a3c
1 changed files with 48 additions and 0 deletions
|
@ -583,3 +583,51 @@ def test_persistent_invalid_group_add(dev):
|
||||||
raise Exception("Invalid P2P_GROUP_ADD accepted")
|
raise Exception("Invalid P2P_GROUP_ADD accepted")
|
||||||
if "FAIL" not in dev[0].global_request("P2P_GROUP_ADD foo"):
|
if "FAIL" not in dev[0].global_request("P2P_GROUP_ADD foo"):
|
||||||
raise Exception("Invalid P2P_GROUP_ADD accepted")
|
raise Exception("Invalid P2P_GROUP_ADD accepted")
|
||||||
|
|
||||||
|
def test_persistent_group_missed_inv_resp(dev):
|
||||||
|
"""P2P persistent group re-invocation with invitation response getting lost"""
|
||||||
|
form(dev[0], dev[1])
|
||||||
|
addr = dev[1].p2p_dev_addr()
|
||||||
|
dev[1].global_request("SET persistent_reconnect 1")
|
||||||
|
dev[1].p2p_listen()
|
||||||
|
if not dev[0].discover_peer(addr, social=True):
|
||||||
|
raise Exception("Peer " + addr + " not found")
|
||||||
|
dev[0].dump_monitor()
|
||||||
|
peer = dev[0].get_peer(addr)
|
||||||
|
# Drop the first Invitation Response frame
|
||||||
|
if "FAIL" in dev[0].request("SET ext_mgmt_frame_handling 1"):
|
||||||
|
raise Exception("Failed to enable external management frame handling")
|
||||||
|
cmd = "P2P_INVITE persistent=" + peer['persistent'] + " peer=" + addr
|
||||||
|
dev[0].global_request(cmd)
|
||||||
|
rx_msg = dev[0].mgmt_rx()
|
||||||
|
if rx_msg is None:
|
||||||
|
raise Exception("MGMT-RX timeout (no Invitation Response)")
|
||||||
|
time.sleep(2)
|
||||||
|
# Allow following Invitation Response frame to go through
|
||||||
|
if "FAIL" in dev[0].request("SET ext_mgmt_frame_handling 0"):
|
||||||
|
raise Exception("Failed to disable external management frame handling")
|
||||||
|
time.sleep(1)
|
||||||
|
# Force the P2P Client side to be on its Listen channel for retry
|
||||||
|
dev[1].p2p_listen()
|
||||||
|
ev = dev[0].wait_global_event(["P2P-INVITATION-RESULT"], timeout=15)
|
||||||
|
if ev is None:
|
||||||
|
raise Exception("Invitation result timed out")
|
||||||
|
# Allow P2P Client side to continue connection-to-GO attempts
|
||||||
|
dev[1].p2p_stop_find()
|
||||||
|
|
||||||
|
# Verify that group re-invocation goes through
|
||||||
|
ev = dev[1].wait_global_event([ "P2P-GROUP-STARTED",
|
||||||
|
"P2P-GROUP-FORMATION-FAILURE" ],
|
||||||
|
timeout=20)
|
||||||
|
if ev is None:
|
||||||
|
raise Exception("Group start event timed out")
|
||||||
|
if "P2P-GROUP-STARTED" not in ev:
|
||||||
|
raise Exception("Group re-invocation failed")
|
||||||
|
dev[0].group_form_result(ev)
|
||||||
|
|
||||||
|
ev = dev[0].wait_global_event([ "P2P-GROUP-STARTED" ], timeout=5)
|
||||||
|
if ev is None:
|
||||||
|
raise Exception("Group start event timed out on GO")
|
||||||
|
dev[0].group_form_result(ev)
|
||||||
|
|
||||||
|
terminate_group(dev[0], dev[1])
|
||||||
|
|
Loading…
Reference in a new issue