04fd8ea1ba
Instead of accessing the logs list member of the remote host directly, use a function to add logs to the remote host to be collected after the test. This enables us to later have different implementation of remote hosts or logs collection without requiring to have this list as the implementation. Signed-off-by: Jonathan Afek <jonathanx.afek@intel.com>
141 lines
4.3 KiB
Python
141 lines
4.3 KiB
Python
# Example test case
|
|
# Copyright (c) 2016, Tieto Corporation
|
|
#
|
|
# This software may be distributed under the terms of the BSD license.
|
|
# See README for more details.
|
|
|
|
import remotehost
|
|
from wpasupplicant import WpaSupplicant
|
|
import hostapd
|
|
import config
|
|
import rutils
|
|
import monitor
|
|
|
|
import logging
|
|
logger = logging.getLogger()
|
|
|
|
def test_example(devices, setup_params, refs, duts, monitors):
|
|
"""TC example - simple connect and ping test"""
|
|
try:
|
|
sta = None
|
|
ap = None
|
|
hapd = None
|
|
wpas = None
|
|
mon = None
|
|
|
|
# get hosts based on name
|
|
sta = rutils.get_host(devices, duts[0])
|
|
ap = rutils.get_host(devices, refs[0])
|
|
|
|
# setup log dir
|
|
local_log_dir = setup_params['local_log_dir']
|
|
|
|
# setup hw before test
|
|
rutils.setup_hw([sta, ap], setup_params)
|
|
|
|
# run traces if requested
|
|
rutils.trace_start([sta], setup_params)
|
|
|
|
# run perf if requested
|
|
rutils.perf_start([sta], setup_params)
|
|
|
|
# run hostapd/wpa_supplicant
|
|
rutils.run_wpasupplicant(sta, setup_params)
|
|
rutils.run_hostapd(ap, setup_params)
|
|
|
|
# get ap_params
|
|
ap_params = rutils.get_ap_params(channel="1", bw="HT20", country="US",
|
|
security="open")
|
|
|
|
# Add monitors if requested
|
|
monitor_hosts = monitor.create(devices, setup_params, refs, duts,
|
|
monitors)
|
|
if len(monitor_hosts) > 0:
|
|
mon = monitor_hosts[0]
|
|
monitor.add(sta, monitors)
|
|
monitor.add(ap, monitors)
|
|
|
|
# connect to hostapd/wpa_supplicant UDP CTRL iface
|
|
hapd = hostapd.add_ap(ap.dev, ap_params)
|
|
freq = hapd.get_status_field("freq")
|
|
wpas = WpaSupplicant(hostname = sta.host, global_iface="udp",
|
|
global_port = sta.port)
|
|
wpas.interface_add(sta.ifname)
|
|
|
|
# setup standalone monitor based on hapd; could be multi interface
|
|
# monitor
|
|
monitor_param = monitor.get_monitor_params(hapd)
|
|
monitor.setup(mon, [monitor_param])
|
|
|
|
# run monitors
|
|
monitor.run(sta, setup_params)
|
|
monitor.run(ap, setup_params)
|
|
monitor.run(mon, setup_params)
|
|
|
|
# connect wpa_supplicant to hostapd
|
|
wpas.connect(ap_params['ssid'], key_mgmt="NONE", scan_freq=freq)
|
|
|
|
# run ping test
|
|
ap_sta, sta_ap = rutils.check_connectivity(ap, sta, "ipv6")
|
|
|
|
# remove/destroy monitors
|
|
monitor.remove(sta)
|
|
monitor.remove(ap)
|
|
monitor.destroy(devices, monitor_hosts)
|
|
|
|
# hostapd/wpa_supplicant cleanup
|
|
wpas.interface_remove(sta.ifname)
|
|
wpas.terminate()
|
|
|
|
hapd.close_ctrl()
|
|
hostapd.remove_bss(ap.dev)
|
|
hostapd.terminate(ap.dev)
|
|
|
|
# stop perf
|
|
rutils.perf_stop([sta], setup_params)
|
|
|
|
# stop traces
|
|
rutils.trace_stop([sta], setup_params)
|
|
|
|
# get wpa_supplicant/hostapd/tshark logs
|
|
sta.get_logs(local_log_dir)
|
|
ap.get_logs(local_log_dir)
|
|
if mon:
|
|
mon.get_logs(local_log_dir)
|
|
|
|
return "packet_loss: " + ap_sta + ", " + sta_ap
|
|
except:
|
|
rutils.perf_stop([sta], setup_params)
|
|
rutils.trace_stop([sta], setup_params)
|
|
if wpas:
|
|
try:
|
|
wpas.interface_remove(sta.ifname)
|
|
wpas.terminate()
|
|
except:
|
|
pass
|
|
if hapd:
|
|
try:
|
|
hapd.close_ctrl()
|
|
hostapd.remove_bss(ap.dev)
|
|
hostapd.terminate(ap.dev)
|
|
except:
|
|
pass
|
|
if mon:
|
|
monitor.destroy(devices, monitor_hosts)
|
|
mon.get_logs(local_log_dir)
|
|
|
|
if sta:
|
|
monitor.remove(sta)
|
|
dmesg = setup_params['log_dir'] + setup_params['tc_name'] + "_" + sta.name + "_" + sta.ifname + ".dmesg"
|
|
sta.execute(["dmesg", "-c", ">", dmesg])
|
|
sta.add_log(dmesg)
|
|
sta.get_logs(local_log_dir)
|
|
sta.execute(["ifconfig", sta.ifname, "down"])
|
|
if ap:
|
|
monitor.remove(ap)
|
|
dmesg = setup_params['log_dir'] + setup_params['tc_name'] + "_" + ap.name + "_" + ap.ifname + ".dmesg"
|
|
ap.execute(["dmesg", "-c", ">", dmesg])
|
|
ap.add_log(dmesg)
|
|
ap.get_logs(local_log_dir)
|
|
ap.execute(["ifconfig", ap.ifname, " down"])
|
|
raise
|