[PATCH 9/9] tests: Fix execution of setup_hw for remote tests

Jonathan Afek jonathan at wizery.com
Thu May 19 06:06:50 PDT 2016


The code contained some places that used an additional
argument for setup_hw after -R and also contained places
where setup_hw cmdline was passed as a string isntead of an
argument list. It also contained places where the ifname was only
treated as a single interface and disregarded the possiblity of
multiple interfaces.
This patch fixes these issues and executes setup_hw from a signle
function for all cases.

Signed-off-by: Jonathan Afek <jonathanx.afek at intel.com>
---
 tests/remote/monitor.py      |  6 ++----
 tests/remote/rutils.py       | 24 +++++++++++++++++-------
 tests/remote/test_devices.py | 41 +++++++++++++----------------------------
 3 files changed, 32 insertions(+), 39 deletions(-)

diff --git a/tests/remote/monitor.py b/tests/remote/monitor.py
index fefc97f..bfb6599 100644
--- a/tests/remote/monitor.py
+++ b/tests/remote/monitor.py
@@ -7,6 +7,7 @@
 import time
 from remotehost import Host
 import config
+import rutils
 import re
 import traceback
 import logging
@@ -36,10 +37,7 @@ def create(devices, setup_params, refs, duts, monitors):
 
         try:
             host.execute(["iw", "reg", "set", setup_params['country']])
-            setup_hw = setup_params['setup_hw']
-            ifaces = re.split('; | |, ', host.ifname)
-            for iface in ifaces:
-                host.execute(setup_hw + " -I " + iface + " -R 1")
+            rutils.setup_hw_host(host, setup_params, True)
         except:
             pass
         mhosts.append(host)
diff --git a/tests/remote/rutils.py b/tests/remote/rutils.py
index fd6127b..7836be7 100644
--- a/tests/remote/rutils.py
+++ b/tests/remote/rutils.py
@@ -4,6 +4,7 @@
 # This software may be distributed under the terms of the BSD license.
 # See README for more details.
 
+import re
 import time
 from remotehost import Host
 import hostapd
@@ -26,23 +27,32 @@ def get_host(devices, dev_name):
     return host
 
 # run setup_hw - hw specyfic
-def setup_hw(hosts, setup_params):
-    for host in hosts:
-        setup_hw_host(host, setup_params)
-
-def setup_hw_host(host, setup_params):
+def setup_hw_host_iface(host, iface, setup_params, force_restart=False):
     try:
         setup_hw = setup_params['setup_hw']
         restart = ""
         try:
             if setup_params['restart_device'] == True:
-                restart = " -R "
+                restart = "-R"
         except:
             pass
-        host.execute([setup_hw, "-I", host.ifname, restart])
+
+        if force_restart:
+            restart = "-R"
+
+        host.execute([setup_hw, "-I", iface, restart])
     except:
         pass
 
+def setup_hw_host(host, setup_params, force_restart=False):
+    ifaces = re.split('; | |, ', host.ifname)
+    for iface in ifaces:
+        setup_hw_host_iface(host, iface, setup_params, force_restart)
+
+def setup_hw(hosts, setup_params, force_restart=False):
+    for host in hosts:
+        setup_hw_host(host, setup_params, force_restart)
+
 # get traces - hw specific
 def trace_start(hosts, setup_params):
     for host in hosts:
diff --git a/tests/remote/test_devices.py b/tests/remote/test_devices.py
index 97484f5..6d84d11 100644
--- a/tests/remote/test_devices.py
+++ b/tests/remote/test_devices.py
@@ -35,26 +35,21 @@ def show_devices(devices, setup_params):
         else:
             print "[" + host.name + "] - ssh communication: OK"
         # check setup_hw works correctly
-        try:
-            setup_hw = setup_params['setup_hw']
-            try:
-                restart_device = setup_params['restart_device']
-            except:
-                restart_device = "0"
-            host.execute([setup_hw, "-I", host.ifname, "-R", restart_device])
-        except:
-            pass
+        rutils.setup_hw_host(host, setup_params)
+
         # show uname
         status, buf = host.execute(["uname", "-s", "-n", "-r", "-m", "-o"])
         print "\t" + buf
         # show ifconfig
-        status, buf = host.execute(["ifconfig", host.ifname])
-        if status != 0:
-            print "\t" + host.ifname + " failed\n"
-            continue
-        lines = buf.splitlines()
-        for line in lines:
-            print "\t" + line
+        ifaces = re.split('; | |, ', host.ifname)
+        for iface in ifaces:
+            status, buf = host.execute(["ifconfig", iface])
+            if status != 0:
+                print "\t" + iface + " failed\n"
+                continue
+            lines = buf.splitlines()
+            for line in lines:
+                print "\t" + line
         # check hostapd, wpa_supplicant, iperf exist
         status, buf = host.execute([setup_params['wpa_supplicant'], "-v"])
         if status != 0:
@@ -88,19 +83,9 @@ def check_device(devices, setup_params, dev_name, monitor=False):
     if status != 0:
         raise Exception(dev_name + " - ssh communication FAILED: " + buf)
 
-    ifaces = re.split('; | |, ', host.ifname)
-    # try to setup host/ifaces
-    for iface in ifaces:
-        try:
-            setup_hw = setup_params['setup_hw']
-            try:
-                restart_device = setup_params['restart_device']
-            except:
-                restart_device = "0"
-            host.execute(setup_hw + " -I " + iface + " -R " + restart_device)
-        except:
-            pass
+    rutils.setup_hw_host(host, setup_params)
 
+    ifaces = re.split('; | |, ', host.ifname)
     # check interfaces (multi for monitor)
     for iface in ifaces:
         status, buf = host.execute(["ifconfig", iface])
-- 
1.9.1




More information about the Hostap mailing list