tests: Add a test case for using TDLS in a P2P group
[mech_eap.git] / tests / hwsim / test_p2p_autogo.py
1 #!/usr/bin/python
2 #
3 # P2P autonomous GO 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 time
10 import logging
11 logger = logging.getLogger(__name__)
12
13 import hwsim_utils
14
15 def autogo(go):
16     logger.info("Start autonomous GO " + go.ifname)
17     res = go.p2p_start_go()
18     logger.debug("res: " + str(res))
19
20 def connect_cli(go, client):
21     logger.info("Try to connect the client to the GO")
22     pin = client.wps_read_pin()
23     go.p2p_go_authorize_client(pin)
24     client.p2p_connect_group(go.p2p_dev_addr(), pin, timeout=60)
25     logger.info("Client connected")
26     hwsim_utils.test_connectivity_p2p(go, client)
27
28 def test_autogo(dev):
29     autogo(dev[0])
30     connect_cli(dev[0], dev[1])
31     dev[0].remove_group()
32     try:
33         dev[1].remove_group()
34     except:
35         pass
36
37 def test_autogo_2cli(dev):
38     autogo(dev[0])
39     connect_cli(dev[0], dev[1])
40     connect_cli(dev[0], dev[2])
41     hwsim_utils.test_connectivity_p2p(dev[1], dev[2])
42     dev[2].remove_group()
43     dev[1].remove_group()
44     dev[0].remove_group()
45
46 def test_autogo_tdls(dev):
47     autogo(dev[0])
48     connect_cli(dev[0], dev[1])
49     connect_cli(dev[0], dev[2])
50     hwsim_utils.test_connectivity_p2p(dev[1], dev[2])
51     addr2 = dev[2].p2p_interface_addr()
52     dev[1].tdls_setup(addr2)
53     time.sleep(1)
54     hwsim_utils.test_connectivity_p2p(dev[1], dev[2])
55     dev[1].tdls_teardown(addr2)
56     time.sleep(1)
57     hwsim_utils.test_connectivity_p2p(dev[1], dev[2])
58     dev[2].remove_group()
59     dev[1].remove_group()
60     dev[0].remove_group()
61
62 def add_tests(tests):
63     tests.append(test_autogo)
64     tests.append(test_autogo_2cli)
65     tests.append(test_autogo_tdls)