aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2013-11-24 13:32:52 (GMT)
committerJouni Malinen <j@w1.fi>2013-11-24 13:32:52 (GMT)
commit19ae1d0788cd004384df7f30b03c1de74e370bba (patch)
treeda6a7f72751a436b418d7e8c8169f73cfeef4286
parent158b090cda6f97e947f7fe83c7baa85da7bcd281 (diff)
downloadhostap-19ae1d0788cd004384df7f30b03c1de74e370bba.zip
hostap-19ae1d0788cd004384df7f30b03c1de74e370bba.tar.gz
hostap-19ae1d0788cd004384df7f30b03c1de74e370bba.tar.bz2
tests: Verify P2P operations with a separate group interface
This extends P2P test coverage to include the case of separate group interface use with autonomous GO and group formation through GO negotiation. Signed-hostap: Jouni Malinen <j@w1.fi>
-rw-r--r--tests/hwsim/test_p2p_autogo.py63
-rw-r--r--tests/hwsim/test_p2p_grpform.py65
-rw-r--r--tests/hwsim/utils.py17
-rw-r--r--tests/hwsim/wpasupplicant.py1
4 files changed, 144 insertions, 2 deletions
diff --git a/tests/hwsim/test_p2p_autogo.py b/tests/hwsim/test_p2p_autogo.py
index 11d597a..04831cb 100644
--- a/tests/hwsim/test_p2p_autogo.py
+++ b/tests/hwsim/test_p2p_autogo.py
@@ -12,6 +12,7 @@ import logging
logger = logging.getLogger()
import hwsim_utils
+import utils
from wlantest import Wlantest
def autogo(go, freq=None):
@@ -24,16 +25,74 @@ def connect_cli(go, client):
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)
+ res = client.p2p_connect_group(go.p2p_dev_addr(), pin, timeout=60)
logger.info("Client connected")
hwsim_utils.test_connectivity_p2p(go, client)
+ return res
def test_autogo(dev):
"""P2P autonomous GO and client joining group"""
- autogo(dev[0])
+ res = autogo(dev[0])
+ if "p2p-wlan" in res['ifname']:
+ raise Exception("Unexpected group interface name on GO")
+ res = connect_cli(dev[0], dev[1])
+ if "p2p-wlan" in res['ifname']:
+ raise Exception("Unexpected group interface name on client")
+ dev[0].remove_group()
+ dev[1].wait_go_ending_session()
+
+def test_autogo2(dev):
+ """P2P autonomous GO with a separate group interface and client joining group"""
+ dev[0].request("SET p2p_no_group_iface 0")
+ res = autogo(dev[0])
+ if "p2p-wlan" not in res['ifname']:
+ raise Exception("Unexpected group interface name on GO")
+ if res['ifname'] not in utils.get_ifnames():
+ raise Exception("Could not find group interface netdev")
connect_cli(dev[0], dev[1])
dev[0].remove_group()
dev[1].wait_go_ending_session()
+ if res['ifname'] in utils.get_ifnames():
+ raise Exception("Group interface netdev was not removed")
+
+def test_autogo3(dev):
+ """P2P autonomous GO and client with a separate group interface joining group"""
+ dev[1].request("SET p2p_no_group_iface 0")
+ autogo(dev[0])
+ res = connect_cli(dev[0], dev[1])
+ if "p2p-wlan" not in res['ifname']:
+ raise Exception("Unexpected group interface name on client")
+ if res['ifname'] not in utils.get_ifnames():
+ raise Exception("Could not find group interface netdev")
+ dev[0].remove_group()
+ dev[1].wait_go_ending_session()
+ dev[1].ping()
+ if res['ifname'] in utils.get_ifnames():
+ raise Exception("Group interface netdev was not removed")
+
+def test_autogo4(dev):
+ """P2P autonomous GO and client joining group (both with a separate group interface)"""
+ dev[0].request("SET p2p_no_group_iface 0")
+ dev[1].request("SET p2p_no_group_iface 0")
+ res1 = autogo(dev[0])
+ res2 = connect_cli(dev[0], dev[1])
+ if "p2p-wlan" not in res1['ifname']:
+ raise Exception("Unexpected group interface name on GO")
+ if "p2p-wlan" not in res2['ifname']:
+ raise Exception("Unexpected group interface name on client")
+ ifnames = utils.get_ifnames()
+ if res1['ifname'] not in ifnames:
+ raise Exception("Could not find GO group interface netdev")
+ if res2['ifname'] not in ifnames:
+ raise Exception("Could not find client group interface netdev")
+ dev[0].remove_group()
+ dev[1].wait_go_ending_session()
+ dev[1].ping()
+ ifnames = utils.get_ifnames()
+ if res1['ifname'] in ifnames:
+ raise Exception("GO group interface netdev was not removed")
+ if res2['ifname'] in ifnames:
+ raise Exception("Client group interface netdev was not removed")
def test_autogo_2cli(dev):
"""P2P autonomous GO and two clients joining group"""
diff --git a/tests/hwsim/test_p2p_grpform.py b/tests/hwsim/test_p2p_grpform.py
index a41b891..cf24578 100644
--- a/tests/hwsim/test_p2p_grpform.py
+++ b/tests/hwsim/test_p2p_grpform.py
@@ -13,6 +13,7 @@ import threading
import Queue
import hwsim_utils
+import utils
def check_grpform_results(i_res, r_res):
if i_res['result'] != 'success' or r_res['result'] != 'success':
@@ -62,6 +63,7 @@ def go_neg_pin(i_dev, r_dev, i_intent=None, r_intent=None, i_method='enter', r_m
logger.info("Group formed")
hwsim_utils.test_connectivity_p2p(r_dev, i_dev)
i_dev.dump_monitor()
+ return [i_res, r_res]
def go_neg_pin_authorized(i_dev, r_dev, i_intent=None, r_intent=None, expect_failure=False, i_go_neg_status=None, i_method='enter', r_method='display', test_data=True, i_freq=None, r_freq=None):
r_dev.p2p_listen()
@@ -132,16 +134,79 @@ def test_grpform(dev):
check_grpform_results(i_res, r_res)
remove_group(dev[0], dev[1])
+def test_grpform_a(dev):
+ """P2P group formation using PIN and authorized connection (init -> GO) (init: group iface)"""
+ dev[0].request("SET p2p_no_group_iface 0")
+ [i_res, r_res] = go_neg_pin_authorized(i_dev=dev[0], i_intent=15,
+ r_dev=dev[1], r_intent=0)
+ if "p2p-wlan" not in i_res['ifname']:
+ raise Exception("Unexpected group interface name")
+ check_grpform_results(i_res, r_res)
+ remove_group(dev[0], dev[1])
+ if i_res['ifname'] in utils.get_ifnames():
+ raise Exception("Group interface netdev was not removed")
+
+def test_grpform_b(dev):
+ """P2P group formation using PIN and authorized connection (init -> GO) (resp: group iface)"""
+ dev[1].request("SET p2p_no_group_iface 0")
+ [i_res, r_res] = go_neg_pin_authorized(i_dev=dev[0], i_intent=15,
+ r_dev=dev[1], r_intent=0)
+ if "p2p-wlan" not in r_res['ifname']:
+ raise Exception("Unexpected group interface name")
+ check_grpform_results(i_res, r_res)
+ remove_group(dev[0], dev[1])
+ if r_res['ifname'] in utils.get_ifnames():
+ raise Exception("Group interface netdev was not removed")
+
+def test_grpform_c(dev):
+ """P2P group formation using PIN and authorized connection (init -> GO) (group iface)"""
+ dev[0].request("SET p2p_no_group_iface 0")
+ dev[1].request("SET p2p_no_group_iface 0")
+ [i_res, r_res] = go_neg_pin_authorized(i_dev=dev[0], i_intent=15,
+ r_dev=dev[1], r_intent=0)
+ if "p2p-wlan" not in i_res['ifname']:
+ raise Exception("Unexpected group interface name")
+ if "p2p-wlan" not in r_res['ifname']:
+ raise Exception("Unexpected group interface name")
+ check_grpform_results(i_res, r_res)
+ remove_group(dev[0], dev[1])
+ if i_res['ifname'] in utils.get_ifnames():
+ raise Exception("Group interface netdev was not removed")
+ if r_res['ifname'] in utils.get_ifnames():
+ raise Exception("Group interface netdev was not removed")
+
def test_grpform2(dev):
"""P2P group formation using PIN and authorized connection (resp -> GO)"""
go_neg_pin_authorized(i_dev=dev[0], i_intent=0, r_dev=dev[1], r_intent=15)
remove_group(dev[0], dev[1])
+def test_grpform2_c(dev):
+ """P2P group formation using PIN and authorized connection (resp -> GO) (group iface)"""
+ dev[0].request("SET p2p_no_group_iface 0")
+ dev[1].request("SET p2p_no_group_iface 0")
+ [i_res, r_res] = go_neg_pin_authorized(i_dev=dev[0], i_intent=0, r_dev=dev[1], r_intent=15)
+ remove_group(dev[0], dev[1])
+ if i_res['ifname'] in utils.get_ifnames():
+ raise Exception("Group interface netdev was not removed")
+ if r_res['ifname'] in utils.get_ifnames():
+ raise Exception("Group interface netdev was not removed")
+
def test_grpform3(dev):
"""P2P group formation using PIN and re-init GO Negotiation"""
go_neg_pin(i_dev=dev[0], i_intent=15, r_dev=dev[1], r_intent=0)
remove_group(dev[0], dev[1])
+def test_grpform3_c(dev):
+ """P2P group formation using PIN and re-init GO Negotiation (group iface)"""
+ dev[0].request("SET p2p_no_group_iface 0")
+ dev[1].request("SET p2p_no_group_iface 0")
+ [i_res, r_res] = go_neg_pin(i_dev=dev[0], i_intent=15, r_dev=dev[1], r_intent=0)
+ remove_group(dev[0], dev[1])
+ if i_res['ifname'] in utils.get_ifnames():
+ raise Exception("Group interface netdev was not removed")
+ if r_res['ifname'] in utils.get_ifnames():
+ raise Exception("Group interface netdev was not removed")
+
def test_grpform_pbc(dev):
"""P2P group formation using PBC and re-init GO Negotiation"""
dev[0].request("SET ignore_old_scan_res 1")
diff --git a/tests/hwsim/utils.py b/tests/hwsim/utils.py
new file mode 100644
index 0000000..27cbc4e
--- /dev/null
+++ b/tests/hwsim/utils.py
@@ -0,0 +1,17 @@
+#!/usr/bin/python
+#
+# Testing utilities
+# 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.
+
+def get_ifnames():
+ ifnames = []
+ with open("/proc/net/dev", "r") as f:
+ lines = f.readlines()
+ for l in lines:
+ val = l.split(':', 1)
+ if len(val) == 2:
+ ifnames.append(val[0].strip(' '))
+ return ifnames
diff --git a/tests/hwsim/wpasupplicant.py b/tests/hwsim/wpasupplicant.py
index 9722309..18ef0e1 100644
--- a/tests/hwsim/wpasupplicant.py
+++ b/tests/hwsim/wpasupplicant.py
@@ -61,6 +61,7 @@ class WpaSupplicant:
self.request("SET p2p_no_go_freq ")
self.request("SET p2p_pref_chan ")
self.request("SET disallow_aps ")
+ self.request("SET p2p_no_group_iface 1")
self.request("P2P_SET per_sta_psk 0")
self.request("P2P_SET disabled 0")
self.request("P2P_SERVICE_FLUSH")