From 483053b9d8236df75b9dfb7314b4c450707a1e61 Mon Sep 17 00:00:00 2001 From: Jonathan Afek Date: Thu, 19 May 2016 16:06:50 +0300 Subject: [PATCH] tests/remote: Fix execution of setup_hw 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 instead 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 commit fixes these issues and executes setup_hw from a single function for all cases. Signed-off-by: Jonathan Afek --- 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 5071322f7..a71501006 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 fd6127bec..7836be793 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 97484f559..6d84d11cb 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])