[PATCH 4/5] tests/remote: add test_example.py

Janusz Dziedzic janusz.dziedzic at tieto.com
Wed Mar 30 13:29:37 PDT 2016


This is simple example how to write
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 logs/current/ directory.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
---
 tests/remote/test_example.py | 138 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 138 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 0000000..4537d51
--- /dev/null
+++ b/tests/remote/test_example.py
@@ -0,0 +1,138 @@
+#!/usr/bin/env 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 multiiface 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
-- 
1.9.1




More information about the Hostap mailing list