tests: Add autonomous GO testing

Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2013-03-09 16:30:25 +02:00
parent dd34860dcd
commit 4ea8d3b5cf
3 changed files with 71 additions and 0 deletions

View file

@ -15,6 +15,7 @@ import logging
from wpasupplicant import WpaSupplicant from wpasupplicant import WpaSupplicant
import test_p2p_grpform import test_p2p_grpform
import test_p2p_autogo
def main(): def main():
idx = 1 idx = 1
@ -46,6 +47,7 @@ def main():
tests = [] tests = []
test_p2p_grpform.add_tests(tests) test_p2p_grpform.add_tests(tests)
test_p2p_autogo.add_tests(tests)
passed = [] passed = []
failed = [] failed = []

View file

@ -0,0 +1,35 @@
#!/usr/bin/python
#
# P2P autonomous GO 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__)
import hwsim_utils
def autogo(go, client):
logger.info("Start autonomous GO " + go.ifname)
res = go.p2p_start_go()
logger.debug("res: " + str(res))
logger.info("Try to connect the client to the GO")
pin = client.wps_read_pin()
go.p2p_go_authorize_client(pin)
client.p2p_connect_group(go.p2p_dev_addr(), pin, timeout=60)
logger.info("Group formed")
hwsim_utils.test_connectivity_p2p(go, client)
def test_autogo(dev):
autogo(go=dev[0], client=dev[1])
dev[0].remove_group()
try:
dev[1].remove_group()
except:
pass
def add_tests(tests):
tests.append(test_autogo)

View file

@ -180,3 +180,37 @@ class WpaSupplicant:
ifname = self.ifname ifname = self.ifname
if "OK" not in self.request("P2P_GROUP_REMOVE " + ifname): if "OK" not in self.request("P2P_GROUP_REMOVE " + ifname):
raise Exception("Group could not be removed") raise Exception("Group could not be removed")
def p2p_start_go(self):
self.dump_monitor()
cmd = "P2P_GROUP_ADD"
if "OK" in self.request(cmd):
ev = self.wait_event(["P2P-GROUP-STARTED"], timeout=5)
if ev is None:
raise Exception("GO start up timed out")
self.dump_monitor()
return self.group_form_result(ev)
raise Exception("P2P_GROUP_ADD failed")
def p2p_go_authorize_client(self, pin):
cmd = "WPS_PIN any " + pin
if "FAIL" in self.request(cmd):
raise Exception("Failed to authorize client connection on GO")
return None
def p2p_connect_group(self, go_addr, pin, timeout=0):
self.dump_monitor()
if not self.discover_peer(go_addr):
raise Exception("GO " + go_addr + " not found")
self.dump_monitor()
cmd = "P2P_CONNECT " + go_addr + " " + pin + " join"
if "OK" in self.request(cmd):
if timeout == 0:
self.dump_monitor()
return None
ev = self.wait_event(["P2P-GROUP-STARTED"], timeout)
if ev is None:
raise Exception("Joining the group timed out")
self.dump_monitor()
return self.group_form_result(ev)
raise Exception("P2P_CONNECT(join) failed")