From 75fb5b38c5baf9226e99498d948e27d762744755 Mon Sep 17 00:00:00 2001 From: Razvan Deaconescu <razvan.deaconescu@upb.ro> Date: Tue, 12 Dec 2023 10:52:31 +0200 Subject: [PATCH] asg/parallel-graph: Fix tests to use timeout Use `Popen.communicate()` to use a timeout argument in case a process blocks indefinitely because of improper synchronization. Signed-off-by: Razvan Deaconescu <razvan.deaconescu@upb.ro> --- tests/checker.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tests/checker.py b/tests/checker.py index 3bf9462..e877d7b 100644 --- a/tests/checker.py +++ b/tests/checker.py @@ -22,11 +22,23 @@ def check(testname): """ with subprocess.Popen([os.path.join(src, "serial"), testname], stdout=subprocess.PIPE) as proc_serial_res: - serial_out = str(proc_serial_res.stdout.read()).strip("\n") + try: + outs, _ = proc_serial_res.communicate(timeout=3) + serial_out = str(outs).strip("\n") + except subprocess.TimeoutExpired: + proc_serial_res.kill() + outs, _ = proc_serial_res.communicate() + serial_out = "" for _ in range(0, 100): with subprocess.Popen([os.path.join(src, "parallel"), testname], stdout=subprocess.PIPE) as proc_parallel_res: - parallel_out = str(proc_parallel_res.stdout.read()).strip("\n") + try: + outs, _ = proc_parallel_res.communicate(timeout=3) + parallel_out = str(outs).strip("\n") + except subprocess.TimeoutExpired: + proc_parallel_res.kill() + outs, _ = proc_parallel_res.communicate() + parallel_out = "" if serial_out != parallel_out: return False -- GitLab