1# Monitor support 2# 3# This software may be distributed under the terms of the BSD license. 4# See README for more details. 5 6import remotehost 7import config 8import rutils 9import monitor 10import time 11import os 12 13import logging 14logger = logging.getLogger() 15 16def run_monitor(devices, setup_params, refs, duts, monitors, seconds=None): 17 try: 18 air_monitor = [] 19 output = "\n\tPCAP files:\n" 20 # setup log dir 21 local_log_dir = setup_params['local_log_dir'] 22 23 # add/run monitors if requested 24 air_monitors = monitor.create(devices, setup_params, refs, duts, 25 monitors) 26 for air_monitor in air_monitors: 27 monitor.setup(air_monitor) 28 monitor.run(air_monitor, setup_params) 29 logger.warning(air_monitor.name + " - monitor started ...") 30 31 if seconds != None: 32 time.sleep(int(seconds)) 33 else: 34 input("\tPress Enter to end capturing...") 35 36 # destroy monitor / get pcap 37 monitor.destroy(devices, air_monitors) 38 for air_monitor in air_monitors: 39 for log in air_monitor.logs: 40 head, tail = os.path.split(log) 41 output = output + "\t" + local_log_dir + "/" + tail + "\n" 42 air_monitor.get_logs(local_log_dir) 43 return output 44 except: 45 for air_monitor in air_monitors: 46 monitor.destroy(devices, air_monitors) 47 air_monitor.get_logs(local_log_dir) 48 raise 49 50def test_run_monitor(devices, setup_params, refs, duts, monitors): 51 """TC run standalone monitor""" 52 return run_monitor(devices, setup_params, refs, duts, monitors) 53