tests: Additional P2P_REMOVE_CLIENT coverage
authorJouni Malinen <j@w1.fi>
Wed, 10 Dec 2014 22:03:01 +0000 (00:03 +0200)
committerJouni Malinen <j@w1.fi>
Thu, 11 Dec 2014 13:18:11 +0000 (15:18 +0200)
Signed-off-by: Jouni Malinen <j@w1.fi>
tests/hwsim/test_p2p_autogo.py
tests/hwsim/test_p2p_persistent.py

index 20f43cb..f45c78b 100644 (file)
@@ -218,8 +218,11 @@ def test_autogo_2cli(dev):
     hwsim_utils.test_connectivity_p2p(dev[1], dev[2])
     dev[0].global_request("P2P_REMOVE_CLIENT " + dev[1].p2p_dev_addr())
     dev[1].wait_go_ending_session()
-    dev[0].remove_group()
+    dev[0].global_request("P2P_REMOVE_CLIENT iface=" + dev[2].p2p_interface_addr())
     dev[2].wait_go_ending_session()
+    if "FAIL" not in dev[0].global_request("P2P_REMOVE_CLIENT foo"):
+        raise Exception("Invalid P2P_REMOVE_CLIENT command accepted")
+    dev[0].remove_group()
 
 def test_autogo_pbc(dev):
     """P2P autonomous GO and PBC"""
index 6366867..5ee3051 100644 (file)
@@ -226,6 +226,22 @@ def test_persistent_group_per_sta_psk(dev):
         raise Exception("Persistent group not restarted as persistent (cli)")
     hwsim_utils.test_connectivity_p2p(dev[1], dev[2])
 
+    logger.info("Remove one of the clients from the group without removing persistent group information for the client")
+    dev[0].global_request("P2P_REMOVE_CLIENT iface=" + dev[2].p2p_interface_addr())
+    dev[2].wait_go_ending_session()
+
+    logger.info("Try to reconnect after having been removed from group (but persistent group info still present)")
+    if not dev[2].discover_peer(addr0, social=True):
+        raise Exception("Peer " + peer + " not found")
+    dev[2].dump_monitor()
+    peer = dev[2].get_peer(addr0)
+    dev[2].global_request("P2P_GROUP_ADD persistent=" + peer['persistent'])
+    ev = dev[2].wait_global_event(["P2P-GROUP-STARTED","WPA: 4-Way Handshake failed"], timeout=30)
+    if ev is None:
+        raise Exception("Timeout on group restart (on client)")
+    if "P2P-GROUP-STARTED" not in ev:
+        raise Exception("Connection failed")
+
     logger.info("Remove one of the clients from the group")
     dev[0].global_request("P2P_REMOVE_CLIENT " + addr2)
     dev[2].wait_go_ending_session()