diff options
Diffstat (limited to 'test/run.py')
-rwxr-xr-x | test/run.py | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/test/run.py b/test/run.py index 58112fd790c..93391a7e9cc 100755 --- a/test/run.py +++ b/test/run.py @@ -26,6 +26,7 @@ import sys import time import venv import datetime +import re # Required Std. Path Variables @@ -64,10 +65,15 @@ signal.signal(signal.SIGINT, handler) signal.signal(signal.SIGTERM, handler) -def show_progress(stream): +def show_progress(stream, exclude_pattern=None): """ Read lines from a subprocess stdout/stderr streams and write to sys.stdout & the logfile + + arguments: + stream - subprocess stdout or stderr data stream + exclude_pattern - lines matching this reg-ex will be excluded + from stdout. """ while True: s = stream.readline() @@ -77,7 +83,11 @@ def show_progress(stream): # Filter the annoying SIGTERM signal from the output when VPP is # terminated after a test run if "SIGTERM" not in data: - sys.stdout.write(data) + if exclude_pattern is not None: + if bool(re.search(exclude_pattern, data)) is False: + sys.stdout.write(data) + else: + sys.stdout.write(data) logging.debug(data) sys.stdout.flush() stream.close() @@ -222,10 +232,13 @@ def vm_test_runner(test_name, kernel_image, test_data_dir, cpu_mask, mem, jobs=" p = Popen( [script, test_name, kernel_image, test_data_dir, cpu_mask, mem], stdout=PIPE, - stderr=STDOUT, cwd=ws_root, ) - show_progress(p.stdout) + # Show only the test result without clobbering the stdout. + # The VM console displays VPP stderr & Linux IPv6 netdev change + # messages, which is logged by default and can be excluded. + exclude_pattern = r"vpp\[\d+\]:|ADDRCONF\(NETDEV_CHANGE\):" + show_progress(p.stdout, exclude_pattern) post_vm_test_run() @@ -304,6 +317,7 @@ def run_tests_in_venv( f"--jobs={jobs}", f"--log-dir={log_dir}", f"--tmp-dir={log_dir}", + f"--cache-vpp-output", ] if running_vpp: args = args + [f"--use-running-vpp"] |