From 17e8cd9234727e1bdc3d2a2ba2c47a9c8ec43c32 Mon Sep 17 00:00:00 2001 From: appel_c Date: Fri, 28 Jun 2024 16:57:28 +0200 Subject: [PATCH] fix: update timestamp upon reading of non computed readback signal --- ophyd_devices/sim/sim_data.py | 1 + tests/test_simulation.py | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/ophyd_devices/sim/sim_data.py b/ophyd_devices/sim/sim_data.py index 5354510..ef92cc8 100644 --- a/ophyd_devices/sim/sim_data.py +++ b/ophyd_devices/sim/sim_data.py @@ -294,6 +294,7 @@ class SimulatedPositioner(SimulatedDataBase): The position is updated by the parent device, and readback/setpoint values have a jitter/tolerance introduced directly in the parent class (SimPositioner). """ + self.sim_state[signal_name].update({"timestamp": ttime.time()}) if compute_readback: method = None value = self.execute_simulation_method(method=method, signal_name=signal_name) diff --git a/tests/test_simulation.py b/tests/test_simulation.py index 03b0507..f3d9f69 100644 --- a/tests/test_simulation.py +++ b/tests/test_simulation.py @@ -433,3 +433,15 @@ def test_async_mon_send_data_to_bec(async_monitor): ] assert mock_xadd.mock_calls == call assert async_monitor.data_buffer["value"] == [] + + +def test_positioner_updated_timestamp(positioner): + """Test the updated_timestamp method of SimPositioner.""" + positioner.sim.sim_state[positioner.name]["value"] = 1 + readback = positioner.read()[positioner.name] + timestamp = readback["timestamp"] + assert readback["value"] == 1 + positioner.sim.sim_state[positioner.name]["value"] = 5 + readback = positioner.read()[positioner.name] + assert readback["value"] == 5 + assert readback["timestamp"] > timestamp