File tree Expand file tree Collapse file tree 2 files changed +7
-19
lines changed
src/dodal/devices/beamlines/i04
tests/devices/beamlines/i04 Expand file tree Collapse file tree 2 files changed +7
-19
lines changed Original file line number Diff line number Diff line change 33from ophyd_async .core import (
44 AsyncStatus ,
55 StandardReadable ,
6- observe_value ,
76 wait_for_value ,
87)
98from ophyd_async .epics .core import epics_signal_r , epics_signal_rw
@@ -57,16 +56,12 @@ async def set(self, value: float):
5756 """
5857 LOGGER .info (f"Transfocator setting { value } beamsize" )
5958
60- # Logic in the IOC calculates _num_lenses_calc_rbv when _vert_size_calc_sp changes
61-
62- # Register an observer before setting _vert_size_calc_sp to ensure we don't miss changes
63- num_lenses_calc_iterator = observe_value (
64- self ._num_lenses_calc_rbv , timeout = self .TIMEOUT
65- )
66-
67- await anext (num_lenses_calc_iterator )
6859 await self ._vert_size_calc_sp .set (value )
69- calc_lenses = await anext (num_lenses_calc_iterator )
60+ # Logic in the IOC calculates _num_lenses_calc_rbv when _vert_size_calc_sp changes,
61+ # but this isn't instant so we need a short sleep until
62+ # https://jira.diamond.ac.uk/browse/I04-1100
63+ await asyncio .sleep (0.1 )
64+ calc_lenses = await self ._num_lenses_calc_rbv .get_value ()
7065
7166 async with periodic_reminder (
7267 f"Waiting for transfocator to insert { calc_lenses } into beam"
Original file line number Diff line number Diff line change @@ -18,16 +18,9 @@ def lens_number_is_half_beamsize(
1818 transfocator ._vert_size_calc_sp .subscribe_reading (lens_number_is_half_beamsize )
1919
2020
21- async def set_beamsize_to_same_value_as_mock_signal (
22- transfocator : Transfocator , value : float
23- ):
24- set_mock_value (transfocator ._num_lenses_calc_rbv , value )
25- await transfocator .set (value )
26-
27-
28- @patch ("dodal.devices.beamlines.i04.transfocator.wait_for_value" )
21+ @patch ("dodal.devices.beamlines.i04.transfocator.asyncio.sleep" , new = AsyncMock ())
22+ @patch ("dodal.devices.beamlines.i04.transfocator.wait_for_value" , new = AsyncMock ())
2923async def test_when_beamsize_set_then_set_correctly_on_device_and_waited_on (
30- mock_wait_for_value ,
3124 fake_transfocator : Transfocator ,
3225):
3326 given_predicted_lenses_is_half_of_beamsize (fake_transfocator )
You can’t perform that action at this time.
0 commit comments