From 905535b049c3f8809c755599bee3428dabf476c6 Mon Sep 17 00:00:00 2001 From: wakonig_k Date: Tue, 7 Jan 2025 13:51:10 +0100 Subject: [PATCH] fix(sim): fixed device for testing a describe failure --- ophyd_devices/sim/sim_test_devices.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/ophyd_devices/sim/sim_test_devices.py b/ophyd_devices/sim/sim_test_devices.py index d543d1d..9d989d0 100644 --- a/ophyd_devices/sim/sim_test_devices.py +++ b/ophyd_devices/sim/sim_test_devices.py @@ -175,11 +175,23 @@ class SimPositionerWithCommFailure(SimPositioner): class SimPositionerWithDescribeFailure(SimPositioner): - _fail = True + """ + Simulated positioner that raises a RuntimeError if the 'e2e_test__fail' endpoint is set to 1 using + a DeviceStatusMessage. This is used to test the behavior of the device when the describe method fails. + """ + + def __init__(self, *args, device_manager=None, **kwargs): + super().__init__(*args, **kwargs) + self.device_manager = device_manager + + def _get_fail_state(self): + msg = self.device_manager.connector.get(f"e2e_test_{self.name}_fail") + if not msg: + return 0 + return msg.status def describe(self): - SimPositionerWithDescribeFailure._fail = not SimPositionerWithDescribeFailure._fail - if SimPositionerWithDescribeFailure._fail: + if self._get_fail_state() == 1: raise RuntimeError("Communication failure") return super().describe()