tests: Use social channel scan to speed up tests
[mech_eap.git] / tests / hwsim / test_p2p_discovery.py
1 #!/usr/bin/python
2 #
3 # P2P device discovery test cases
4 # Copyright (c) 2013, Jouni Malinen <j@w1.fi>
5 #
6 # This software may be distributed under the terms of the BSD license.
7 # See README for more details.
8
9 import logging
10 logger = logging.getLogger(__name__)
11
12 def test_discovery(dev):
13     """P2P device discovery and provision discovery"""
14     addr0 = dev[0].p2p_dev_addr()
15     addr1 = dev[1].p2p_dev_addr()
16     logger.info("Start device discovery")
17     dev[0].p2p_find(social=True)
18     dev[1].p2p_find(social=True)
19     ev0 = dev[0].wait_event(["P2P-DEVICE-FOUND"], timeout=15)
20     if ev0 is None:
21         raise Exception("Device discovery timed out")
22     ev1 = dev[1].wait_event(["P2P-DEVICE-FOUND"], timeout=15)
23     if ev1 is None:
24         raise Exception("Device discovery timed out")
25     dev[0].dump_monitor()
26     dev[1].dump_monitor()
27     if addr1 not in ev0:
28         raise Exception("Dev1 not found properly")
29     if addr0 not in ev1:
30         raise Exception("Dev0 not found properly")
31
32     logger.info("Test provision discovery for display")
33     dev[0].request("P2P_PROV_DISC " + addr1 + " display")
34     ev1 = dev[1].wait_event(["P2P-PROV-DISC-SHOW-PIN"], timeout=15)
35     if ev1 is None:
36         raise Exception("Provision discovery timed out")
37     if addr0 not in ev1:
38         raise Exception("Dev0 not in provision discovery event")
39     ev0 = dev[0].wait_event(["P2P-PROV-DISC-ENTER-PIN"], timeout=15)
40     if ev0 is None:
41         raise Exception("Provision discovery timed out")
42     if addr1 not in ev0:
43         raise Exception("Dev1 not in provision discovery event")
44
45     logger.info("Test provision discovery for keypad")
46     dev[0].request("P2P_PROV_DISC " + addr1 + " keypad")
47     ev1 = dev[1].wait_event(["P2P-PROV-DISC-ENTER-PIN"], timeout=15)
48     if ev1 is None:
49         raise Exception("Provision discovery timed out")
50     if addr0 not in ev1:
51         raise Exception("Dev0 not in provision discovery event")
52     ev0 = dev[0].wait_event(["P2P-PROV-DISC-SHOW-PIN"], timeout=15)
53     if ev0 is None:
54         raise Exception("Provision discovery timed out")
55     if addr1 not in ev0:
56         raise Exception("Dev1 not in provision discovery event")
57
58     logger.info("Test provision discovery for push button")
59     dev[0].request("P2P_PROV_DISC " + addr1 + " pbc")
60     ev1 = dev[1].wait_event(["P2P-PROV-DISC-PBC-REQ"], timeout=15)
61     if ev1 is None:
62         raise Exception("Provision discovery timed out")
63     if addr0 not in ev1:
64         raise Exception("Dev0 not in provision discovery event")
65     ev0 = dev[0].wait_event(["P2P-PROV-DISC-PBC-RESP"], timeout=15)
66     if ev0 is None:
67         raise Exception("Provision discovery timed out")
68     if addr1 not in ev0:
69         raise Exception("Dev1 not in provision discovery event")
70
71     dev[0].p2p_stop_find
72     dev[1].p2p_stop_find
73
74
75 def add_tests(tests):
76     tests.append(test_discovery)