mirror of
https://github.com/ivan-usov-org/bec.git
synced 2025-04-22 02:20:02 +02:00
fix: changed progress update from devicestatus to progress message
This commit is contained in:
parent
d05e91b8bb
commit
03595b42f7
@ -1,8 +1,7 @@
|
||||
import asyncio
|
||||
|
||||
from bec_lib.core import BECMessage, MessageEndpoints, bec_logger
|
||||
|
||||
from bec_client.progressbar import ScanProgressBar
|
||||
from bec_lib.core import BECMessage, MessageEndpoints, bec_logger
|
||||
|
||||
from .live_table import LiveUpdatesTable
|
||||
|
||||
@ -32,19 +31,19 @@ class LiveUpdatesScanProgress(LiveUpdatesTable):
|
||||
logger.debug("waiting for new data point")
|
||||
await asyncio.sleep(0.1)
|
||||
return False
|
||||
status = BECMessage.DeviceStatusMessage.loads(status)
|
||||
status = BECMessage.ProgressMessage.loads(status)
|
||||
if status.metadata.get("scanID") != self.scan_item.scanID:
|
||||
logger.debug("waiting for new data point")
|
||||
await asyncio.sleep(0.1)
|
||||
return False
|
||||
|
||||
point_id = status.content["status"].get("value")
|
||||
point_id = status.content.get("value")
|
||||
if point_id is None:
|
||||
logger.debug("waiting for new data point")
|
||||
await asyncio.sleep(0.1)
|
||||
return False
|
||||
|
||||
max_value = status.content["status"].get("max_value")
|
||||
max_value = status.content.get("max_value")
|
||||
if max_value and max_value != progressbar.max_points:
|
||||
progressbar.max_points = max_value
|
||||
|
||||
|
@ -235,7 +235,7 @@ class DeviceManagerDS(DeviceManagerBase):
|
||||
if "flyer" in obj.event_types:
|
||||
obj.subscribe(self._obj_flyer_callback, event_type="flyer", run=False)
|
||||
if "progress" in obj.event_types:
|
||||
obj.subscribe(self._obj_callback_progress, event_type="progress", run=False)
|
||||
obj.subscribe(self._obj_progress_callback, event_type="progress", run=False)
|
||||
if hasattr(obj, "motor_is_moving"):
|
||||
obj.motor_is_moving.subscribe(self._obj_callback_is_moving, run=opaas_obj.enabled)
|
||||
|
||||
@ -369,11 +369,12 @@ class DeviceManagerDS(DeviceManagerBase):
|
||||
)
|
||||
pipe.execute()
|
||||
|
||||
def _obj_callback_progress(self, *_args, obj, value, max_value, done, **kwargs):
|
||||
def _obj_progress_callback(self, *_args, obj, value, max_value, done, **kwargs):
|
||||
metadata = self.devices[obj.root.name].metadata
|
||||
msg = BECMessage.DeviceStatusMessage(
|
||||
device=obj.root.name,
|
||||
status={"value": value, "max_value": max_value, "done": done},
|
||||
msg = BECMessage.ProgressMessage(
|
||||
value=value,
|
||||
max_value=max_value,
|
||||
done=done,
|
||||
metadata=metadata,
|
||||
)
|
||||
self.producer.set_and_publish(MessageEndpoints.device_progress(obj.root.name), msg.dumps())
|
||||
|
@ -143,3 +143,21 @@ def test_flyer_event_callback():
|
||||
|
||||
progress_msg = BECMessage.DeviceStatusMessage.loads(progress[1][1])
|
||||
assert progress_msg.content["status"] == 20
|
||||
|
||||
|
||||
def test_obj_progress_callback():
|
||||
device_manager = load_device_manager()
|
||||
samx = device_manager.devices.samx
|
||||
samx.metadata = {"scanID": "12345"}
|
||||
|
||||
with mock.patch.object(device_manager, "producer") as mock_producer:
|
||||
device_manager._obj_progress_callback(obj=samx.obj, value=1, max_value=2, done=False)
|
||||
mock_producer.set_and_publish.assert_called_once_with(
|
||||
MessageEndpoints.device_progress("samx"),
|
||||
BECMessage.ProgressMessage(
|
||||
value=1,
|
||||
max_value=2,
|
||||
done=False,
|
||||
metadata={"scanID": "12345"},
|
||||
).dumps(),
|
||||
)
|
||||
|
@ -147,12 +147,12 @@ class OwisGrid(FlyScanBase):
|
||||
if not raw_msg:
|
||||
self.timeout_progress += 1
|
||||
return self.timeout_progress
|
||||
msg = BECMessage.DeviceStatusMessage.loads(raw_msg)
|
||||
msg = BECMessage.ProgressMessage.loads(raw_msg)
|
||||
if not msg:
|
||||
self.timeout_progress += 1
|
||||
return self.timeout_progress
|
||||
# TODO which update is that!
|
||||
updated_progress = int(msg.content["status"]["value"])
|
||||
updated_progress = int(msg.content["value"])
|
||||
if updated_progress == int(self.progress_point):
|
||||
self.timeout_progress += 1
|
||||
return self.timeout_progress
|
||||
|
@ -110,12 +110,12 @@ class SgalilGrid(FlyScanBase):
|
||||
if not raw_msg:
|
||||
self.timeout_progress += 1
|
||||
return self.timeout_progress
|
||||
msg = BECMessage.DeviceStatusMessage.loads(raw_msg)
|
||||
msg = BECMessage.ProgressMessage.loads(raw_msg)
|
||||
if not msg:
|
||||
self.timeout_progress += 1
|
||||
return self.timeout_progress
|
||||
# TODO which update is that!
|
||||
updated_progress = int(msg.content["status"]["value"])
|
||||
updated_progress = int(msg.content["value"])
|
||||
if updated_progress == int(self.progress_point):
|
||||
self.timeout_progress += 1
|
||||
return self.timeout_progress
|
||||
|
Loading…
x
Reference in New Issue
Block a user