aboutsummaryrefslogtreecommitdiffstats
path: root/tests/remote/test_devices.py
diff options
context:
space:
mode:
authorJanusz Dziedzic <janusz.dziedzic@tieto.com>2016-04-29 05:07:33 (GMT)
committerJouni Malinen <j@w1.fi>2016-05-14 14:56:35 (GMT)
commit5865186e311b626ad155123f40f837b562ea14ef (patch)
tree24138ef28b94d7eaf4c0cd14920b98eafa389660 /tests/remote/test_devices.py
parent6a003eb2a6d5a33eba3e141679abb55052542097 (diff)
downloadhostap-5865186e311b626ad155123f40f837b562ea14ef.zip
hostap-5865186e311b626ad155123f40f837b562ea14ef.tar.gz
hostap-5865186e311b626ad155123f40f837b562ea14ef.tar.bz2
tests: Add remote directory to tests
Add tests/remote directory and files: config.py - handle devices/setup_params table run-tests.py - run test cases test_devices.py - run basic configuration tests You can add own configuration file, by default this is cfg.py, and put there devices and setup_params definition in format you can find in config.py file. You can use -c option or just create cfg.py file. Print available devices/test_cases: ./run-tests.py Check devices (ssh connection, authorized_keys, interfaces): ./run-test.py -t devices Run sanity tests (test_sanity_*): ./run-test.py -d <dut_name> -t sanity Run all tests: ./run-tests.py -d <dut_name> -t all Run test_A and test_B: ./run-tests.py -d <dut_name> -t "test_A, test_B" Set reference device, and run sanity tests: ./run-tests.py -d <dut_name> -r <ref_name> -t sanity Multiple duts/refs/monitors could be setup: e.g. ./run-tests.py -d <dut_name> -r <ref1_name> -r <ref2_name> -t sanity Monitor could be set like this: ./run-tests.py -d <dut_name> -t sanity -m all -m <standalone_monitor> You can also add filters to tests you would like to run ./run-tests.py -d <dut_name> -t all -k wep -k g_only ./run-tests.py -d <dut_name> -t all -k VHT80 ./run-test.py doesn't start/terminate wpa_supplicant or hostpad, test cases are resposible for that, while we don't know test case requirements. Restart (-R) trace (-T) and perf (-P) options available. This request trace/perf logs from the hosts (if possible). As parameters each test case get: - devices - table of available devices - setup_params - duts - names of DUTs should be tested - refs - names of reference devices should be used - monitors - names of monitors list Each test could return append_text. Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Diffstat (limited to 'tests/remote/test_devices.py')
-rw-r--r--tests/remote/test_devices.py143
1 files changed, 143 insertions, 0 deletions
diff --git a/tests/remote/test_devices.py b/tests/remote/test_devices.py
new file mode 100644
index 0000000..1feef30
--- /dev/null
+++ b/tests/remote/test_devices.py
@@ -0,0 +1,143 @@
+#!/usr/bin/env python2
+#
+# Show/check devices
+# Copyright (c) 2016, Tieto Corporation
+#
+# This software may be distributed under the terms of the BSD license.
+# See README for more details.
+
+import time
+import traceback
+import config
+import os
+import sys
+import getopt
+import re
+
+import logging
+logger = logging.getLogger()
+
+import utils
+from remotehost import Host
+from wpasupplicant import WpaSupplicant
+import hostapd
+
+def show_devices(devices, setup_params):
+ """Show/check available devices"""
+ print "Devices:"
+ for device in devices:
+ dev = config.get_device(devices, device['name'])
+ host = Host(host = dev['hostname'], ifname = dev['ifname'],
+ port = dev['port'], name = dev['name'])
+ # simple check if authorized_keys works correctly
+ status, buf = host.execute(["id"])
+ if status != 0:
+ print "[" + host.name + "] - ssh communication: FAILED"
+ continue
+ 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
+ # 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
+ # check hostapd, wpa_supplicant, iperf exist
+ status, buf = host.execute([setup_params['wpa_supplicant'], "-v"])
+ if status != 0:
+ print "\t" + setup_params['wpa_supplicant'] + " not find\n"
+ continue
+ lines = buf.splitlines()
+ for line in lines:
+ print "\t" + line
+ print ""
+ status, buf = host.execute([setup_params['hostapd'], "-v"])
+ if status != 1:
+ print "\t" + setup_params['hostapd'] + " not find\n"
+ continue
+ lines = buf.splitlines()
+ for line in lines:
+ print "\t" + line
+ print ""
+ status, buf = host.execute([setup_params['iperf'], "-v"])
+ if status != 0 and status != 1:
+ print "\t" + setup_params['iperf'] + " not find\n"
+ continue
+ lines = buf.splitlines()
+ for line in lines:
+ print "\t" + line
+ print ""
+
+def check_device(devices, setup_params, dev_name, monitor=False):
+ dev = config.get_device(devices, dev_name)
+ host = Host(host = dev['hostname'], ifname = dev['ifname'],
+ port = dev['port'], name = dev['name'])
+ # simple check if authorized_keys works correctly
+ status, buf = host.execute(["id"])
+ 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
+
+ # check interfaces (multi for monitor)
+ for iface in ifaces:
+ status, buf = host.execute(["ifconfig", iface])
+ if status != 0:
+ raise Exception(dev_name + " ifconfig " + iface + " failed: " + buf)
+
+ # monitor doesn't need wpa_supplicant/hostapd ...
+ if monitor == True:
+ return
+
+ status, buf = host.execute(["ls", "-l", setup_params['wpa_supplicant']])
+ if status != 0:
+ raise Exception(dev_name + " - wpa_supplicant: " + buf)
+
+ status, buf = host.execute(["ls", "-l", setup_params['hostapd']])
+ if status != 0:
+ raise Exception(dev_name + " - hostapd: " + buf)
+
+ status, buf = host.execute(["which", setup_params['iperf']])
+ if status != 0:
+ raise Exception(dev_name + " - hostapd: " + buf)
+
+ status, buf = host.execute(["which", "tshark"])
+ if status != 0:
+ logger.debug(dev_name + " - hostapd: " + buf)
+
+def check_devices(devices, setup_params, refs, duts, monitors):
+ """Check duts/refs/monitors devices"""
+ for dut in duts:
+ check_device(devices, setup_params, dut)
+ for ref in refs:
+ check_device(devices, setup_params, ref)
+ for monitor in monitors:
+ if monitor == "all":
+ continue
+ check_device(devices, setup_params, monitor, monitor=True)