]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
tests: remote: Add run_monitor test case
authorJanusz Dziedzic <janusz.dziedzic@gmail.com>
Sat, 26 Sep 2020 11:27:00 +0000 (13:27 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 9 Oct 2020 08:24:00 +0000 (11:24 +0300)
This is useful to run monitor quickly:
./run-tests.py -t run_monitor -m mon:36,20,36,0:1,20,1,0

In such example we will get one PCAP for 36/20 and 1/20.
After execution, PCAP file is in the log directory, e.g.:
./logs/2019_11_11_13_36_24/run_monitor_mon_wlp3s0_wlp5s0.pcap

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
tests/remote/test_monitor.py [new file with mode: 0644]

diff --git a/tests/remote/test_monitor.py b/tests/remote/test_monitor.py
new file mode 100644 (file)
index 0000000..c8b88d4
--- /dev/null
@@ -0,0 +1,52 @@
+# Monitor support
+#
+# This software may be distributed under the terms of the BSD license.
+# See README for more details.
+
+import remotehost
+import config
+import rutils
+import monitor
+import time
+import os
+
+import logging
+logger = logging.getLogger()
+
+def run_monitor(devices, setup_params, refs, duts, monitors, seconds=None):
+    try:
+        air_monitor = []
+        output = "\n\tPCAP files:\n"
+        # setup log dir
+        local_log_dir = setup_params['local_log_dir']
+
+        # add/run monitors if requested
+        air_monitors = monitor.create(devices, setup_params, refs, duts,
+                                      monitors)
+        for air_monitor in air_monitors:
+            monitor.setup(air_monitor)
+            monitor.run(air_monitor, setup_params)
+            logger.warning(air_monitor.name + " - monitor started ...")
+
+        if seconds != None:
+            time.sleep(int(seconds))
+        else:
+            input("\tPress Enter to end capturing...")
+
+        # destroy monitor / get pcap
+        monitor.destroy(devices, air_monitors)
+        for air_monitor in air_monitors:
+            for log in air_monitor.logs:
+                head, tail = os.path.split(log)
+                output = output + "\t" + local_log_dir + "/" + tail + "\n"
+            air_monitor.get_logs(local_log_dir)
+        return output
+    except:
+        for air_monitor in air_monitors:
+            monitor.destroy(devices, air_monitors)
+            air_monitor.get_logs(local_log_dir)
+        raise
+
+def test_run_monitor(devices, setup_params, refs, duts, monitors):
+    """TC run standalone monitor"""
+    return run_monitor(devices, setup_params, refs, duts, monitors)