aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJanusz Dziedzic <janusz.dziedzic@tieto.com>2016-04-29 05:07:36 (GMT)
committerJouni Malinen <j@w1.fi>2016-05-14 14:56:37 (GMT)
commitff9bb8a210d6e0b2354401c550cbf758a58a6c2d (patch)
tree33a9dc38130f8381f3fd277826d4661b7de46b36 /tests
parenta73fa13be2ee076f5096fb1bcfa646b0e1a407e3 (diff)
downloadhostap-ff9bb8a210d6e0b2354401c550cbf758a58a6c2d.zip
hostap-ff9bb8a210d6e0b2354401c550cbf758a58a6c2d.tar.gz
hostap-ff9bb8a210d6e0b2354401c550cbf758a58a6c2d.tar.bz2
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>
Diffstat (limited to 'tests')
-rw-r--r--tests/remote/test_example.py141
1 files changed, 141 insertions, 0 deletions
diff --git a/tests/remote/test_example.py b/tests/remote/test_example.py
new file mode 100644
index 0000000..f834c0a
--- /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