tests/remote: Add test_example.py
This is simple example how to write a simple test case. modprobe mac80211_hwsim radios=4 run example: ./run-tests.py -d hwsim0 -r hwsim1 -t example run example with monitors: ./run-tests.py -d hwsim0 -r hwsim1 -t example -m all -m hwsim2 run example with trace record: ./run-tests.py -d hwsim0 -r hwsim1 -t example -T run example with trace and perf: ./run-tests.py -d hwsim0 -r hwsim1 -t example -T -P restart hw before test case run: ./run-tests.py -d hwsim0 -r hwsim1 -t example -R run example verbose ./run-tests.py -d hwsim0 -r hwsim1 -t example -v For perf/trace you need to write own hw specyfic scripts: trace_start.sh, trace_stop.sh perf_start.sh, perf_stop.sh In any case you will find logs in the logs/current/ directory. Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
This commit is contained in:
parent
a73fa13be2
commit
ff9bb8a210
1 changed files with 141 additions and 0 deletions
141
tests/remote/test_example.py
Normal file
141
tests/remote/test_example.py
Normal file
|
@ -0,0 +1,141 @@
|
|||
# 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.logs.append(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.logs.append(dmesg)
|
||||
ap.get_logs(local_log_dir)
|
||||
ap.execute(["ifconfig", ap.ifname, " down"])
|
||||
raise
|
Loading…
Reference in a new issue