diff options
Diffstat (limited to 'contrib/wpa/tests/hwsim/test_p2p_set.py')
-rw-r--r-- | contrib/wpa/tests/hwsim/test_p2p_set.py | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/contrib/wpa/tests/hwsim/test_p2p_set.py b/contrib/wpa/tests/hwsim/test_p2p_set.py new file mode 100644 index 000000000000..58577994ea5b --- /dev/null +++ b/contrib/wpa/tests/hwsim/test_p2p_set.py @@ -0,0 +1,128 @@ +# P2P_SET test cases +# Copyright (c) 2014, Jouni Malinen <j@w1.fi> +# +# This software may be distributed under the terms of the BSD license. +# See README for more details. + +from remotehost import remote_compatible + +def test_p2p_set(dev): + """P2P_SET commands""" + for cmd in ["", + "foo bar", + "noa 1", + "noa 1,2", + "noa 1,2,3", + "noa -1,0,0", + "noa 256,0,0", + "noa 0,-1,0", + "noa 0,0,-1", + "noa 0,0,1", + "noa 255,10,20", + "ps 2", + "oppps 1", + "ctwindow 1", + "conc_pref foo", + "peer_filter foo", + "client_apsd 0", + "client_apsd 0,0", + "client_apsd 0,0,0", + "disc_int 1", + "disc_int 1 2", + "disc_int 2 1 10", + "disc_int -1 0 10", + "disc_int 0 -1 10", + "ssid_postfix 123456789012345678901234"]: + if "FAIL" not in dev[0].request("P2P_SET " + cmd): + raise Exception("Invalid P2P_SET accepted: " + cmd) + dev[0].request("P2P_SET ps 1") + if "OK" not in dev[0].request("P2P_SET ps 0"): + raise Exception("P2P_SET ps 0 failed unexpectedly") + +def test_p2p_set_discoverability(dev): + """P2P_SET discoverability""" + addr0 = dev[0].p2p_dev_addr() + addr1 = dev[1].p2p_dev_addr() + + dev[0].p2p_start_go(freq="2412") + if "OK" not in dev[1].request("P2P_SET discoverability 0"): + raise Exception("P2P_SET discoverability 0 failed") + pin = dev[1].wps_read_pin() + dev[0].p2p_go_authorize_client(pin) + dev[1].p2p_connect_group(addr0, pin, timeout=20, social=True, freq="2412") + + if not dev[2].discover_peer(addr1, timeout=10): + if not dev[2].discover_peer(addr1, timeout=10): + if not dev[2].discover_peer(addr1, timeout=10): + raise Exception("Could not discover group client") + + peer = dev[2].get_peer(addr1) + if int(peer['dev_capab'], 16) & 0x02 != 0: + raise Exception("Discoverability dev_capab reported: " + peer['dev_capab']) + dev[2].p2p_stop_find() + + if "OK" not in dev[1].request("P2P_SET discoverability 1"): + raise Exception("P2P_SET discoverability 1 failed") + dev[1].dump_monitor() + dev[1].group_request("REASSOCIATE") + ev = dev[1].wait_group_event(["CTRL-EVENT-CONNECTED"], timeout=20) + if ev is None: + raise Exception("Connection timed out") + + dev[2].request("P2P_FLUSH") + if not dev[2].discover_peer(addr1, timeout=10): + if not dev[2].discover_peer(addr1, timeout=10): + if not dev[2].discover_peer(addr1, timeout=10): + raise Exception("Could not discover group client") + + peer = dev[2].get_peer(addr1) + if int(peer['dev_capab'], 16) & 0x02 != 0x02: + raise Exception("Discoverability dev_capab reported: " + peer['dev_capab']) + dev[2].p2p_stop_find() + +def test_p2p_set_managed(dev): + """P2P_SET managed""" + addr0 = dev[0].p2p_dev_addr() + + if "OK" not in dev[0].request("P2P_SET managed 1"): + raise Exception("P2P_SET managed 1 failed") + + dev[0].p2p_listen() + if not dev[1].discover_peer(addr0): + raise Exception("Could not discover peer") + peer = dev[1].get_peer(addr0) + if int(peer['dev_capab'], 16) & 0x08 != 0x08: + raise Exception("Managed dev_capab not reported: " + peer['dev_capab']) + dev[1].p2p_stop_find() + + if "OK" not in dev[0].request("P2P_SET managed 0"): + raise Exception("P2P_SET managed 0 failed") + + if not dev[2].discover_peer(addr0): + raise Exception("Could not discover peer") + peer = dev[2].get_peer(addr0) + if int(peer['dev_capab'], 16) & 0x08 != 0: + raise Exception("Managed dev_capab reported: " + peer['dev_capab']) + dev[2].p2p_stop_find() + dev[0].p2p_stop_find() + +@remote_compatible +def test_p2p_set_ssid_postfix(dev): + """P2P_SET ssid_postfix""" + addr0 = dev[0].p2p_dev_addr() + addr1 = dev[1].p2p_dev_addr() + postfix = "12345678901234567890123" + + try: + if "OK" not in dev[0].request("P2P_SET ssid_postfix " + postfix): + raise Exception("P2P_SET ssid_postfix failed") + dev[0].p2p_start_go(freq="2412") + pin = dev[1].wps_read_pin() + dev[0].p2p_go_authorize_client(pin) + dev[1].p2p_connect_group(addr0, pin, timeout=20, social=True, freq="2412") + if postfix not in dev[1].get_group_status_field("ssid"): + raise Exception("SSID postfix missing from status") + if postfix not in dev[1].group_request("SCAN_RESULTS"): + raise Exception("SSID postfix missing from scan results") + finally: + dev[0].request("P2P_SET ssid_postfix ") |