From 836e6ed284b9f62c49b06db944db83d508d4a054 Mon Sep 17 00:00:00 2001 From: Tom Krizek Date: Thu, 6 Apr 2023 14:05:30 +0200 Subject: [PATCH] Ensure named always terminates in the shutdown test Previously, if an exception would happen inside the `with` block, the error handler would wait indefinitely for the process to end. That would never happen, since the termination signal was never sent to named and the test would get stuck. Using the try-finally block ensures that the named process is always killed and any exception or errors will be handled gracefully. --- bin/tests/system/shutdown/tests_shutdown.py | 27 ++++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/bin/tests/system/shutdown/tests_shutdown.py b/bin/tests/system/shutdown/tests_shutdown.py index 8a099067d1..dee0fb3cf8 100755 --- a/bin/tests/system/shutdown/tests_shutdown.py +++ b/bin/tests/system/shutdown/tests_shutdown.py @@ -189,15 +189,18 @@ def test_named_shutdown(named_port, control_port): for kill_method in ("rndc", "sigterm"): named_cmdline = [named, "-c", cfg_file, "-f"] with subprocess.Popen(named_cmdline, cwd=cfg_dir) as named_proc: - assert named_proc.poll() is None, "named isn't running" - assert wait_for_named_loaded(resolver) - do_work( - named_proc, - resolver, - rndc_cmd, - kill_method, - n_workers=12, - n_queries=16, - ) - assert wait_for_proc_termination(named_proc) - assert named_proc.returncode == 0, "named crashed" + try: + assert named_proc.poll() is None, "named isn't running" + assert wait_for_named_loaded(resolver) + do_work( + named_proc, + resolver, + rndc_cmd, + kill_method, + n_workers=12, + n_queries=16, + ) + assert wait_for_proc_termination(named_proc) + assert named_proc.returncode == 0, "named crashed" + finally: # Ensure named is terminated in case of an exception + named_proc.kill()