Loading ci/run_scheduled_sanitizer_test.py +49 −10 Original line number Diff line number Diff line #!/usr/bin/env python3 import argparse from distutils.command.clean import clean import sys import subprocess import pathlib Loading @@ -10,6 +11,8 @@ DURATION = "120" CFG = "ci_linux.json" SUPPORTED_TESTS = [ "CLANG1", "CLANG2", "CLANG3", "VALGRIND" ] EP_FILE = "ep_015.g192" GENPATT_CMD = f"gen-patt -tailstat -fer -g192 -gamma 0 -rate 0.15 -tol 0.001 -reset -n {int(DURATION) * 50} {EP_FILE}" EIDXOR_CMD = "eid-xor -vbr -fer {bitstream} {ep_file} {out_file}" SCRIPT_DIR = pathlib.Path("./scripts").resolve() Loading @@ -32,30 +35,66 @@ def get_modes(in_format: str) -> list: return [m for m in output.splitlines() if in_format in m] def run_check(modes: list, out_formats: list, tests: list): cmd = [ SCRIPT_DIR.joinpath("IvasBuildAndRunChecks.py"), def run_check(modes: list, out_formats: list, tests: list, run_fec: bool = True): ### always run encoder and decoder with no frameloss cmd_no_fec = [ str(SCRIPT_DIR.joinpath("IvasBuildAndRunChecks.py")), "-U", DURATION, # DURATION, "1", "-t", "1", "-p", CFG, "--checks", *TESTS, *tests, "-m", *modes, # *modes, "stereo_b48_swb_cbr", "--oc", *out_formats *out_formats, ] proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) proc = subprocess.Popen(cmd_no_fec, stdout=subprocess.PIPE, stderr=subprocess.PIPE) for c in iter(lambda: proc.stdout.read(1), b""): sys.stdout.buffer.write(c) proc.wait() if proc.returncode not in [0, 101]: raise IvasBuildAndRunFailed() raise IvasBuildAndRunFailed("Failed at first run (no PLC)") returncode_no_fec = proc.returncode if not run_fec: return returncode_no_fec ### second run: decoder only with disturbed bitstream # generate error pattern subprocess.call(GENPATT_CMD.split()) # cleanup to avoid script errors # we want "logs" and "dec" subfolders to be empty -> delete and recreate them cleanup_folders = ["logs", "dec"] for t in tests: for fol in cleanup_folders: for fi in pathlib.Path(t).joinpath(fol).iterdir(): fi.unlink() cmd_fec = cmd_no_fec + ["--decoder_only", "-f", EP_FILE] proc = subprocess.Popen(cmd_fec, stdout=subprocess.PIPE, stderr=subprocess.PIPE) for c in iter(lambda: proc.stdout.read(1), b""): sys.stdout.buffer.write(c) proc.wait() returncode_fec = proc.returncode if returncode_fec not in [0, 101]: raise IvasBuildAndRunFailed("failed at second run (PLC)") return proc.returncode return 101 if 101 in [returncode_no_fec, returncode_fec] else 0 class IvasBuildAndRunFailed(Exception): Loading Loading
ci/run_scheduled_sanitizer_test.py +49 −10 Original line number Diff line number Diff line #!/usr/bin/env python3 import argparse from distutils.command.clean import clean import sys import subprocess import pathlib Loading @@ -10,6 +11,8 @@ DURATION = "120" CFG = "ci_linux.json" SUPPORTED_TESTS = [ "CLANG1", "CLANG2", "CLANG3", "VALGRIND" ] EP_FILE = "ep_015.g192" GENPATT_CMD = f"gen-patt -tailstat -fer -g192 -gamma 0 -rate 0.15 -tol 0.001 -reset -n {int(DURATION) * 50} {EP_FILE}" EIDXOR_CMD = "eid-xor -vbr -fer {bitstream} {ep_file} {out_file}" SCRIPT_DIR = pathlib.Path("./scripts").resolve() Loading @@ -32,30 +35,66 @@ def get_modes(in_format: str) -> list: return [m for m in output.splitlines() if in_format in m] def run_check(modes: list, out_formats: list, tests: list): cmd = [ SCRIPT_DIR.joinpath("IvasBuildAndRunChecks.py"), def run_check(modes: list, out_formats: list, tests: list, run_fec: bool = True): ### always run encoder and decoder with no frameloss cmd_no_fec = [ str(SCRIPT_DIR.joinpath("IvasBuildAndRunChecks.py")), "-U", DURATION, # DURATION, "1", "-t", "1", "-p", CFG, "--checks", *TESTS, *tests, "-m", *modes, # *modes, "stereo_b48_swb_cbr", "--oc", *out_formats *out_formats, ] proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) proc = subprocess.Popen(cmd_no_fec, stdout=subprocess.PIPE, stderr=subprocess.PIPE) for c in iter(lambda: proc.stdout.read(1), b""): sys.stdout.buffer.write(c) proc.wait() if proc.returncode not in [0, 101]: raise IvasBuildAndRunFailed() raise IvasBuildAndRunFailed("Failed at first run (no PLC)") returncode_no_fec = proc.returncode if not run_fec: return returncode_no_fec ### second run: decoder only with disturbed bitstream # generate error pattern subprocess.call(GENPATT_CMD.split()) # cleanup to avoid script errors # we want "logs" and "dec" subfolders to be empty -> delete and recreate them cleanup_folders = ["logs", "dec"] for t in tests: for fol in cleanup_folders: for fi in pathlib.Path(t).joinpath(fol).iterdir(): fi.unlink() cmd_fec = cmd_no_fec + ["--decoder_only", "-f", EP_FILE] proc = subprocess.Popen(cmd_fec, stdout=subprocess.PIPE, stderr=subprocess.PIPE) for c in iter(lambda: proc.stdout.read(1), b""): sys.stdout.buffer.write(c) proc.wait() returncode_fec = proc.returncode if returncode_fec not in [0, 101]: raise IvasBuildAndRunFailed("failed at second run (PLC)") return proc.returncode return 101 if 101 in [returncode_no_fec, returncode_fec] else 0 class IvasBuildAndRunFailed(Exception): Loading