From ff9bb8a210d6e0b2354401c550cbf758a58a6c2d Mon Sep 17 00:00:00 2001 From: Janusz Dziedzic Date: Fri, 29 Apr 2016 07:07:36 +0200 Subject: [PATCH] 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 --- tests/remote/test_example.py | 141 +++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 tests/remote/test_example.py diff --git a/tests/remote/test_example.py b/tests/remote/test_example.py new file mode 100644 index 000000000..f834c0a38 --- /dev/null +++ b/tests/remote/test_example.py @@ -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