[PATCH v3 2/2] tests: Add mesh path test
Masashi Honma
masashi.honma at gmail.com
Sun Feb 26 17:41:56 PST 2017
Signed-off-by: Masashi Honma <masashi.honma at gmail.com>
---
tests/hwsim/test_wmediumd.py | 72 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 71 insertions(+), 1 deletion(-)
diff --git a/tests/hwsim/test_wmediumd.py b/tests/hwsim/test_wmediumd.py
index bdce59c..c775191 100644
--- a/tests/hwsim/test_wmediumd.py
+++ b/tests/hwsim/test_wmediumd.py
@@ -4,9 +4,12 @@
# This software may be distributed under the terms of the BSD license.
# See README for more details.
-import tempfile, os, subprocess, errno
+import tempfile, os, subprocess, errno, hwsim_utils
from utils import HwsimSkip
from test_ap_open import _test_ap_open
+from test_wpas_mesh import check_mesh_support, check_mesh_group_added
+from test_wpas_mesh import check_mesh_peer_connected, add_open_mesh_network
+from test_wpas_mesh import check_mesh_group_removed
CFG = """
ifaces :
@@ -18,6 +21,19 @@ ifaces :
};
"""
+CFG2 = """
+ifaces :
+{
+ ids = ["%s", "%s", "%s"];
+
+ links = (
+ (0, 1, 50),
+ (0, 2, 50),
+ (1, 2, -10)
+ );
+};
+"""
+
def start_wmediumd(fn):
try:
p = subprocess.Popen(['wmediumd', '-l', '6', '-c', fn],
@@ -62,3 +78,57 @@ def test_wmediumd_simple(dev, apdev, params):
_test_ap_open(dev, apdev)
finally:
os.unlink(fn)
+
+def test_wmediumd_path_simple(dev, apdev, params):
+ """test a mesh path"""
+ # 0 and 1 is connected
+ # 0 and 2 is connected
+ # 1 and 2 is not connected
+ # 1 --- 0 --- 2
+ # | |
+ # +-----X-----+
+ # This tests if 1 and 2 can communicate each other via 0.
+ fd, fn = tempfile.mkstemp()
+ try:
+ f = os.fdopen(fd, 'w')
+ f.write(CFG2 % (dev[0].own_addr(), dev[1].own_addr(), dev[2].own_addr()))
+ f.close()
+ p = start_wmediumd(fn)
+ try:
+ _test_wmediumd_path_simple(dev, apdev)
+ finally:
+ stop_wmediumd(p, params['logdir'])
+ finally:
+ os.unlink(fn)
+
+def _test_wmediumd_path_simple(dev, apdev):
+ for i in range(0, 3):
+ check_mesh_support(dev[i])
+ add_open_mesh_network(dev[i], freq="2462", basic_rates="60 120 240")
+
+ # Check for mesh joined
+ for i in range(0, 3):
+ check_mesh_group_added(dev[i])
+
+ state = dev[i].get_status_field("wpa_state")
+ if state != "COMPLETED":
+ raise Exception("Unexpected wpa_state on dev" + str(i) + ": " + state)
+
+ mode = dev[i].get_status_field("mode")
+ if mode != "mesh":
+ raise Exception("Unexpected mode: " + mode)
+
+ # Check for peer connected
+ check_mesh_peer_connected(dev[0])
+ check_mesh_peer_connected(dev[0])
+ check_mesh_peer_connected(dev[1])
+ check_mesh_peer_connected(dev[2])
+
+ # Test connectivity 1->2 and 2->1
+ hwsim_utils.test_connectivity(dev[1], dev[2])
+
+ # remove mesh groups
+ for i in range(0, 3):
+ dev[i].mesh_group_remove()
+ check_mesh_group_removed(dev[i])
+ dev[i].dump_monitor()
--
2.7.4
More information about the Hostap
mailing list