From c7b0ac0367f7bb947f374eefbf06d0adc92d5817 Mon Sep 17 00:00:00 2001 From: Tom Krizek Date: Mon, 26 Jun 2023 15:18:45 +0200 Subject: [PATCH] Split shutdown test into separate test cases The shutdown test attempts to shut down the server using two different methods - rndc and sigterm. Use pytest.mark.parametrize to run these as separate test cases for easier identification of failures. (cherry picked from commit 603c58ee286ae88884d912f0d963c7e9732d8125) --- bin/tests/system/shutdown/tests_shutdown.py | 46 ++++++++++----------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/bin/tests/system/shutdown/tests_shutdown.py b/bin/tests/system/shutdown/tests_shutdown.py index c9f73a2ec4..c8b4d625d7 100755 --- a/bin/tests/system/shutdown/tests_shutdown.py +++ b/bin/tests/system/shutdown/tests_shutdown.py @@ -156,7 +156,12 @@ def wait_for_proc_termination(proc, max_timeout=10): return False -def test_named_shutdown(named_port, control_port): +# We test named shutting down using two methods: +# Method 1: using rndc ctop +# Method 2: killing with SIGTERM +# In both methods named should exit gracefully. +@pytest.mark.parametrize("kill_method", ["rndc", "sigtem"]) +def test_named_shutdown(named_port, control_port, kill_method): # pylint: disable-msg=too-many-locals cfg_dir = os.path.join(os.getcwd(), "resolver") assert os.path.isdir(cfg_dir) @@ -182,25 +187,20 @@ def test_named_shutdown(named_port, control_port): resolver.nameservers = ["10.53.0.3"] resolver.port = named_port - # We test named shutting down using two methods: - # Method 1: using rndc ctop - # Method 2: killing with SIGTERM - # In both methods named should exit gracefully. - for kill_method in ("rndc", "sigterm"): - named_cmdline = [named, "-c", cfg_file, "-f"] - with subprocess.Popen(named_cmdline, cwd=cfg_dir) as named_proc: - 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() + named_cmdline = [named, "-c", cfg_file, "-f"] + with subprocess.Popen(named_cmdline, cwd=cfg_dir) as named_proc: + 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()