Merged the hostap_2.6 updates, and the Leap of Faith work, from the hostap_update...
[mech_eap.git] / tests / remote / test_devices.py
diff --git a/tests/remote/test_devices.py b/tests/remote/test_devices.py
new file mode 100644 (file)
index 0000000..6d84d11
--- /dev/null
@@ -0,0 +1,124 @@
+#!/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 rutils
+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:
+        host = rutils.get_host(devices, device['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
+        rutils.setup_hw_host(host, setup_params)
+
+        # show uname
+        status, buf = host.execute(["uname", "-s", "-n", "-r", "-m", "-o"])
+        print "\t" + buf
+        # show ifconfig
+        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:
+            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):
+    host = rutils.get_host(devices, 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)
+
+    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])
+        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 + " - iperf: " + buf)
+
+    status, buf = host.execute(["which", "tshark"])
+    if status != 0:
+        logger.debug(dev_name + " - tshark: " + 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)