| #!/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) |