hostap/tests/hwsim/test_p2p_set.py

129 lines
4.7 KiB
Python
Raw Permalink Normal View History

# 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 ")