From f8040c0190b125a36e1b357df4eba9b4f1d9ea8a Mon Sep 17 00:00:00 2001 From: George Ryall Date: Mon, 9 Jun 2025 16:12:00 +0100 Subject: [PATCH 1/7] Test run number length --- run_tests.py | 2 ++ tests/dae_tests.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 tests/dae_tests.py diff --git a/run_tests.py b/run_tests.py index 06dbcf4..fea02ab 100644 --- a/run_tests.py +++ b/run_tests.py @@ -13,6 +13,7 @@ from tests.component_tests import ComponentsSingleTests, ComponentsTests from tests.configuration_tests import ConfigurationsSingleTests, ConfigurationsTests +from tests.dae_tests import DaeTests from tests.globals_tests import GlobalsTests from tests.motor_tests import MotorTests from tests.scripting_directory_tests import ScriptingDirectoryTests @@ -45,6 +46,7 @@ def run_instrument_tests(inst_name, reports_path): ConfigurationsSingleTests, ComponentsSingleTests, MotorTests, + DaeTests, ]: suite.addTests(loader.loadTestsFromTestCase(case)) diff --git a/tests/dae_tests.py b/tests/dae_tests.py new file mode 100644 index 0000000..d46365e --- /dev/null +++ b/tests/dae_tests.py @@ -0,0 +1,31 @@ +import concurrent.futures +import unittest + +from tests.settings import Settings +from util.channel_access import ChannelAccessUtils + + +class DaeTests(unittest.TestCase): + def setUp(self) -> None: + self.ca = ChannelAccessUtils(Settings.pv_prefix) + + def test_dae_run_number_digits_suffecient(self) -> None: + """ + Check if the current run number is close to exceeding the available number of digits. + + We define the number of digits in the run number in C:\Instrument\Settings\labview modules\dae\icp_config.xml + It is easier to simply access the current run number and check the nuber of digits in against the current number + than to check this xml. + """ + failure_threshold_percent = 90 + current_run_number = self.ca.get_value("DAE:RUNNUMBER") + + # current_run_number will be none if instrument off + if current_run_number is None: + self.skipTest("No run number, likely instrument is off") + + with self.subTest(): + self.assertGreater( + failure_threshold_percent/100*(10**len(current_run_number)), + int(current_run_number), + f"The current run number is within {failure_threshold_percent}% ({100*int(current_run_number)/(10**len(current_run_number)):.1f}%)of the maximum run number") From b0ac4fb611b4556b19cd25e01ae36d972b713e71 Mon Sep 17 00:00:00 2001 From: George Ryall Date: Mon, 9 Jun 2025 16:38:16 +0100 Subject: [PATCH 2/7] remove unused include (copy/paste error) --- tests/dae_tests.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/dae_tests.py b/tests/dae_tests.py index d46365e..451550f 100644 --- a/tests/dae_tests.py +++ b/tests/dae_tests.py @@ -1,4 +1,3 @@ -import concurrent.futures import unittest from tests.settings import Settings From d891a470b95101acc10054818357a68fb1e1f7fc Mon Sep 17 00:00:00 2001 From: George Ryall Date: Mon, 9 Jun 2025 16:41:42 +0100 Subject: [PATCH 3/7] ruff format --- tests/dae_tests.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/dae_tests.py b/tests/dae_tests.py index 451550f..ca5d5a0 100644 --- a/tests/dae_tests.py +++ b/tests/dae_tests.py @@ -25,6 +25,7 @@ def test_dae_run_number_digits_suffecient(self) -> None: with self.subTest(): self.assertGreater( - failure_threshold_percent/100*(10**len(current_run_number)), + failure_threshold_percent / 100 * (10 ** len(current_run_number)), int(current_run_number), - f"The current run number is within {failure_threshold_percent}% ({100*int(current_run_number)/(10**len(current_run_number)):.1f}%)of the maximum run number") + f"The current run number is within {failure_threshold_percent}% ({100*int(current_run_number)/(10**len(current_run_number)):.1f}%)of the maximum run number", + ) From 2dab8b21be646d589399e46dc62e2b82b7b561c5 Mon Sep 17 00:00:00 2001 From: George Ryall Date: Mon, 9 Jun 2025 17:04:19 +0100 Subject: [PATCH 4/7] ruff --- tests/dae_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/dae_tests.py b/tests/dae_tests.py index ca5d5a0..d07ca54 100644 --- a/tests/dae_tests.py +++ b/tests/dae_tests.py @@ -27,5 +27,5 @@ def test_dae_run_number_digits_suffecient(self) -> None: self.assertGreater( failure_threshold_percent / 100 * (10 ** len(current_run_number)), int(current_run_number), - f"The current run number is within {failure_threshold_percent}% ({100*int(current_run_number)/(10**len(current_run_number)):.1f}%)of the maximum run number", + f"The current run number is within {failure_threshold_percent}% ({100 * int(current_run_number) / (10 ** len(current_run_number)):.1f}%)of the maximum run number", ) From f9667f79136ca430f1d32de4b8a0ea18afe1d367 Mon Sep 17 00:00:00 2001 From: George Ryall Date: Mon, 9 Jun 2025 17:08:00 +0100 Subject: [PATCH 5/7] pyright --- tests/dae_tests.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/dae_tests.py b/tests/dae_tests.py index d07ca54..c8aa2a7 100644 --- a/tests/dae_tests.py +++ b/tests/dae_tests.py @@ -18,6 +18,7 @@ def test_dae_run_number_digits_suffecient(self) -> None: """ failure_threshold_percent = 90 current_run_number = self.ca.get_value("DAE:RUNNUMBER") + assert isinstance(current_run_number, str) # current_run_number will be none if instrument off if current_run_number is None: From 260d92949f9fff9a580c63a303ee3f2b7ba73ef1 Mon Sep 17 00:00:00 2001 From: George Ryall Date: Tue, 10 Jun 2025 09:17:43 +0100 Subject: [PATCH 6/7] Update tests/dae_tests.py sp Co-authored-by: Tom Willemsen --- tests/dae_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/dae_tests.py b/tests/dae_tests.py index c8aa2a7..9a1759a 100644 --- a/tests/dae_tests.py +++ b/tests/dae_tests.py @@ -8,7 +8,7 @@ class DaeTests(unittest.TestCase): def setUp(self) -> None: self.ca = ChannelAccessUtils(Settings.pv_prefix) - def test_dae_run_number_digits_suffecient(self) -> None: + def test_dae_run_number_digits_sufficient(self) -> None: """ Check if the current run number is close to exceeding the available number of digits. From 1bc331ec0eab7d4186e402788b9536ef58d2db4e Mon Sep 17 00:00:00 2001 From: George Ryall Date: Tue, 10 Jun 2025 09:18:26 +0100 Subject: [PATCH 7/7] Update tests/dae_tests.py Co-authored-by: Tom Willemsen --- tests/dae_tests.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tests/dae_tests.py b/tests/dae_tests.py index 9a1759a..3d74698 100644 --- a/tests/dae_tests.py +++ b/tests/dae_tests.py @@ -24,9 +24,8 @@ def test_dae_run_number_digits_sufficient(self) -> None: if current_run_number is None: self.skipTest("No run number, likely instrument is off") - with self.subTest(): - self.assertGreater( - failure_threshold_percent / 100 * (10 ** len(current_run_number)), - int(current_run_number), - f"The current run number is within {failure_threshold_percent}% ({100 * int(current_run_number) / (10 ** len(current_run_number)):.1f}%)of the maximum run number", - ) + self.assertGreater( + failure_threshold_percent / 100 * (10 ** len(current_run_number)), + int(current_run_number), + f"The current run number is within {failure_threshold_percent}% ({100 * int(current_run_number) / (10 ** len(current_run_number)):.1f}%)of the maximum run number", + )