Skip to content

Commit 3aed9d5

Browse files
committed
fix(scan): extract user metadata for direct scans in ScanAssembler
1 parent 4b663b0 commit 3aed9d5

2 files changed

Lines changed: 30 additions & 1 deletion

File tree

bec_server/bec_server/scan_server/scan_assembler.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,16 @@ def assemble_direct_scan(
129129
scan_cls, scan_info["signature"], resolved_args, resolved_kwargs
130130
)
131131

132+
metadata = msg.metadata.copy() if msg.metadata is not None else None
133+
user_metadata = metadata.pop("user_metadata", {}) if metadata is not None else {}
134+
132135
scan_instance = scan_cls(
133136
*resolved_args,
134137
device_manager=self.device_manager,
135138
redis_connector=self.connector,
136139
scan_modifier=get_scan_modifier(),
137-
metadata=msg.metadata,
140+
metadata=metadata,
141+
user_metadata=user_metadata,
138142
instruction_handler=self.parent.queue_manager.instruction_handler,
139143
scan_id=scan_id,
140144
request_inputs=request_inputs,

bec_server/tests/tests_scan_server/test_scan_assembler.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,3 +726,28 @@ class MockScanManager:
726726
"burst_at_each_point": 3,
727727
"system_config": {"file_directory": "/tmp/data"},
728728
}
729+
730+
731+
def test_scan_assembler_extracts_user_metadata_for_direct_scans(dm_with_devices):
732+
parent = mock.MagicMock()
733+
parent.device_manager = dm_with_devices
734+
parent.connector = mock.MagicMock()
735+
parent.queue_manager.instruction_handler = mock.MagicMock()
736+
assembler = ScanAssembler(parent=parent)
737+
738+
class MockScanManager:
739+
scan_dict = {"_v4_acquire": Acquire}
740+
741+
msg = messages.ScanQueueMessage(
742+
scan_type="_v4_acquire",
743+
parameter={"args": [], "kwargs": {"exp_time": 0.2, "system_config": {}}},
744+
queue="primary",
745+
metadata={"RID": "rid-123", "user_metadata": {"sample": "my_sample"}},
746+
)
747+
748+
with mock.patch.object(assembler, "scan_manager", MockScanManager()):
749+
request = assembler.assemble_direct_scan(msg, "scan_id")
750+
751+
assert request.scan_info.metadata == {"RID": "rid-123"}
752+
assert request.scan_info.user_metadata == {"sample": "my_sample"}
753+
assert msg.metadata == {"RID": "rid-123", "user_metadata": {"sample": "my_sample"}}

0 commit comments

Comments
 (0)