tests: Add P2P device discovery and provision discovery test case
authorJouni Malinen <j@w1.fi>
Sun, 17 Mar 2013 08:58:48 +0000 (10:58 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 17 Mar 2013 08:58:48 +0000 (10:58 +0200)
Signed-hostap: Jouni Malinen <j@w1.fi>

tests/hwsim/test_p2p_discovery.py [new file with mode: 0644]
tests/hwsim/wpasupplicant.py

diff --git a/tests/hwsim/test_p2p_discovery.py b/tests/hwsim/test_p2p_discovery.py
new file mode 100644 (file)
index 0000000..44f8aa3
--- /dev/null
@@ -0,0 +1,75 @@
+#!/usr/bin/python
+#
+# P2P device discovery test cases
+# Copyright (c) 2013, Jouni Malinen <j@w1.fi>
+#
+# This software may be distributed under the terms of the BSD license.
+# See README for more details.
+
+import logging
+logger = logging.getLogger(__name__)
+
+def test_discovery(dev):
+    addr0 = dev[0].p2p_dev_addr()
+    addr1 = dev[1].p2p_dev_addr()
+    logger.info("Start device discovery")
+    dev[0].p2p_find()
+    dev[1].p2p_find()
+    ev0 = dev[0].wait_event(["P2P-DEVICE-FOUND"], timeout=15)
+    if ev0 is None:
+        raise Exception("Device discovery timed out")
+    ev1 = dev[1].wait_event(["P2P-DEVICE-FOUND"], timeout=15)
+    if ev1 is None:
+        raise Exception("Device discovery timed out")
+    dev[0].dump_monitor()
+    dev[1].dump_monitor()
+    if addr1 not in ev0:
+        raise Exception("Dev1 not found properly")
+    if addr0 not in ev1:
+        raise Exception("Dev0 not found properly")
+
+    logger.info("Test provision discovery for display")
+    dev[0].request("P2P_PROV_DISC " + addr1 + " display")
+    ev1 = dev[1].wait_event(["P2P-PROV-DISC-SHOW-PIN"], timeout=15)
+    if ev1 is None:
+        raise Exception("Provision discovery timed out")
+    if addr0 not in ev1:
+        raise Exception("Dev0 not in provision discovery event")
+    ev0 = dev[0].wait_event(["P2P-PROV-DISC-ENTER-PIN"], timeout=15)
+    if ev0 is None:
+        raise Exception("Provision discovery timed out")
+    if addr1 not in ev0:
+        raise Exception("Dev1 not in provision discovery event")
+
+    logger.info("Test provision discovery for keypad")
+    dev[0].request("P2P_PROV_DISC " + addr1 + " keypad")
+    ev1 = dev[1].wait_event(["P2P-PROV-DISC-ENTER-PIN"], timeout=15)
+    if ev1 is None:
+        raise Exception("Provision discovery timed out")
+    if addr0 not in ev1:
+        raise Exception("Dev0 not in provision discovery event")
+    ev0 = dev[0].wait_event(["P2P-PROV-DISC-SHOW-PIN"], timeout=15)
+    if ev0 is None:
+        raise Exception("Provision discovery timed out")
+    if addr1 not in ev0:
+        raise Exception("Dev1 not in provision discovery event")
+
+    logger.info("Test provision discovery for push button")
+    dev[0].request("P2P_PROV_DISC " + addr1 + " pbc")
+    ev1 = dev[1].wait_event(["P2P-PROV-DISC-PBC-REQ"], timeout=15)
+    if ev1 is None:
+        raise Exception("Provision discovery timed out")
+    if addr0 not in ev1:
+        raise Exception("Dev0 not in provision discovery event")
+    ev0 = dev[0].wait_event(["P2P-PROV-DISC-PBC-RESP"], timeout=15)
+    if ev0 is None:
+        raise Exception("Provision discovery timed out")
+    if addr1 not in ev0:
+        raise Exception("Dev1 not in provision discovery event")
+
+    dev[0].p2p_stop_find
+    dev[1].p2p_stop_find
+
+
+def add_tests(tests):
+    tests.append(test_discovery)
index 5ca2cee..8803dd2 100644 (file)
@@ -101,6 +101,9 @@ class WpaSupplicant:
             return self.request("P2P_FIND type=social")
         return self.request("P2P_FIND")
 
+    def p2p_stop_find(self):
+        return self.request("P2P_STOP_FIND")
+
     def wps_read_pin(self):
         #TODO: make this random
         self.pin = "12345670"