0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 11:41:49 +02:00

test: test_bec_monitor.py fixed

This commit is contained in:
wyzula-jan
2023-12-15 18:28:29 +01:00
parent 1128ca5252
commit 457567ef74
5 changed files with 175 additions and 129 deletions

View File

@ -187,14 +187,6 @@ CONFIG_SIMPLE = {
"y": [{"name": "bpm4i", "entry": "bpm4i"}], "y": [{"name": "bpm4i", "entry": "bpm4i"}],
}, },
}, },
# {
# "type": "history",
# "scanID": "<scanID>",
# "signals": {
# "x": [{"name": "samx"}],
# "y": [{"name": "bpm4i", "entry": "bpm4i"}],
# },
# },
], ],
}, },
{ {

View File

@ -165,6 +165,13 @@ def mock_getitem(dev_name):
return mock_instance return mock_instance
def mock_get_scan_storage(scan_id, data):
"""Helper function to mock the __getitem__ method of the 'dev'."""
mock_instance = MagicMock()
mock_instance.get_scan_storage.return_value = data
return mock_instance
# mocked messages and metadata # mocked messages and metadata
msg_1 = { msg_1 = {
"data": { "data": {
@ -183,17 +190,32 @@ metadata_line = {"scan_name": "line_scan"}
@pytest.mark.parametrize( @pytest.mark.parametrize(
"config_name, msg, metadata, expected_data", "config_name, msg, metadata, expected_data",
[ [
# case: msg does not have 'scanid' # case: msg does not have 'scanID'
("config_device", {"data": {}}, {}, {}), (
"config_device",
{"data": {}},
{},
{
"scan_segment": {
"bpm4i": {"bpm4i": []},
"gauss_adc1": {"gauss_adc1": []},
"gauss_adc2": {"gauss_adc2": []},
"samx": {"samx": []},
}
},
),
# case: scan_types is false, msg contains all valid fields, and entry is present in config # case: scan_types is false, msg contains all valid fields, and entry is present in config
( (
"config_device", "config_device",
msg_1, msg_1,
{}, {},
{ {
("samx", "samx", "bpm4i", "bpm4i"): {"x": [10], "y": [5]}, "scan_segment": {
("samx", "samx", "gauss_adc1", "gauss_adc1"): {"x": [10], "y": [8]}, "bpm4i": {"bpm4i": [5]},
("samx", "samx", "gauss_adc2", "gauss_adc2"): {"x": [10], "y": [9]}, "gauss_adc1": {"gauss_adc1": [8]},
"gauss_adc2": {"gauss_adc2": [9]},
"samx": {"samx": [10]},
}
}, },
), ),
# case: scan_types is false, msg contains all valid fields and entry is missing in config, should use hints # case: scan_types is false, msg contains all valid fields and entry is missing in config, should use hints
@ -202,8 +224,11 @@ metadata_line = {"scan_name": "line_scan"}
msg_1, msg_1,
{}, {},
{ {
("samx", "samx", "bpm4i", "bpm4i"): {"x": [10], "y": [5]}, "scan_segment": {
("samx", "samx", "gauss_bpm", "gauss_bpm"): {"x": [10], "y": [6]}, "bpm4i": {"bpm4i": [5]},
"gauss_bpm": {"gauss_bpm": [6]},
"samx": {"samx": [10]},
}
}, },
), ),
# case: scan_types is true, msg contains all valid fields, metadata contains scan "line_scan:" # case: scan_types is true, msg contains all valid fields, metadata contains scan "line_scan:"
@ -212,10 +237,13 @@ metadata_line = {"scan_name": "line_scan"}
msg_1, msg_1,
metadata_line, metadata_line,
{ {
("samx", "samx", "bpm4i", "bpm4i"): {"x": [10], "y": [5]}, "scan_segment": {
("samx", "samx", "gauss_bpm", "gauss_bpm"): {"x": [10], "y": [6]}, "bpm4i": {"bpm4i": [5]},
("samx", "samx", "gauss_adc1", "gauss_adc1"): {"x": [10], "y": [8]}, "gauss_adc1": {"gauss_adc1": [8]},
("samx", "samx", "gauss_adc2", "gauss_adc2"): {"x": [10], "y": [9]}, "gauss_adc2": {"gauss_adc2": [9]},
"gauss_bpm": {"gauss_bpm": [6]},
"samx": {"samx": [10]},
}
}, },
), ),
( (
@ -223,10 +251,13 @@ metadata_line = {"scan_name": "line_scan"}
msg_1, msg_1,
metadata_grid, metadata_grid,
{ {
("samx", "samx", "bpm4i", "bpm4i"): {"x": [10], "y": [5]}, "scan_segment": {
("samx", "samx", "gauss_adc1", "gauss_adc1"): {"x": [10], "y": [8]}, "bpm4i": {"bpm4i": [5]},
("samx", "samx", "gauss_adc2", "gauss_adc2"): {"x": [10], "y": [9]}, "gauss_adc1": {"gauss_adc1": [8]},
("samx", "samx", "gauss_bpm", "gauss_bpm"): {"x": [10], "y": [6]}, "gauss_adc2": {"gauss_adc2": [9]},
"gauss_bpm": {"gauss_bpm": [6]},
"samx": {"samx": [10]},
}
}, },
), ),
], ],
@ -234,8 +265,20 @@ metadata_line = {"scan_name": "line_scan"}
def test_on_scan_segment(monitor, config_name, msg, metadata, expected_data): def test_on_scan_segment(monitor, config_name, msg, metadata, expected_data):
config = load_test_config(config_name) config = load_test_config(config_name)
monitor.on_config_update(config) monitor.on_config_update(config)
# Get hints # Get hints
monitor.dev.__getitem__.side_effect = mock_getitem monitor.dev.__getitem__.side_effect = mock_getitem
# Mock scan_storage.find_scan_by_ID
mock_scan_data = MagicMock()
mock_scan_data.data = {
device_name: {
entry: MagicMock(val=[msg["data"][device_name][entry]["value"]])
for entry in msg["data"][device_name]
}
for device_name in msg["data"]
}
monitor.queue.scan_storage.find_scan_by_ID.return_value = mock_scan_data
monitor.on_scan_segment(msg, metadata) monitor.on_scan_segment(msg, metadata)
assert monitor.data == expected_data assert monitor.database == expected_data

View File

@ -5,26 +5,29 @@ plot_settings:
scan_types: false scan_types: false
plot_data: plot_data:
- plot_name: "BPM4i plots vs samx" - plot_name: "BPM4i plots vs samx"
x: x_label: "Motor X"
label: "Motor Y" y_label: "bpm4i"
signals: sources:
- name: "samx" - type: "scan_segment"
entry: "samx" signals:
y: x:
label: "bpm4i" - name : "samx"
signals: entry: "samx"
- name: "bpm4i" y:
entry: "bpm4i" - name : "bpm4i"
entry: "bpm4i"
- plot_name: "Gauss plots vs samx" - plot_name: "Gauss plots vs samx"
x: x_label: "Motor X"
label: "Motor X" y_label: "Gauss"
signals: sources:
- name: "samx" - type: "scan_segment"
entry: "samx" signals:
y: x:
label: "Gauss" - name: "samx"
signals: entry: "samx"
- name: "gauss_adc1" y:
entry: "gauss_adc1" - name: "gauss_adc1"
- name: "gauss_adc2" entry: "gauss_adc1"
entry: "gauss_adc2" - name: "gauss_adc2"
entry: "gauss_adc2"

View File

@ -1,24 +1,27 @@
plot_settings: plot_settings:
background_color: "white" background_color: "black"
num_columns: 5 num_columns: 1
colormap: "plasma" colormap: "plasma"
scan_types: false scan_types: false
plot_data: plot_data:
- plot_name: "BPM4i plots vs samx" - plot_name: "BPM4i plots vs samx"
x: x_label: "Motor X"
label: "Motor Y" y_label: "bpm4i"
signals: sources:
- name: "samx" - type: "scan_segment"
y: signals:
label: "bpm4i" x:
signals: - name : "samx"
- name: "bpm4i" y:
- name : "bpm4i"
- plot_name: "Gauss plots vs samx" - plot_name: "Gauss plots vs samx"
x: x_label: "Motor X"
label: "Motor X" y_label: "Gauss"
signals: sources:
- name: "samx" - type: "scan_segment"
y: signals:
label: "Gauss" x:
signals: - name: "samx"
- name: "gauss_bpm" y:
- name: "gauss_bpm"

View File

@ -6,72 +6,77 @@ plot_settings:
plot_data: plot_data:
grid_scan: grid_scan:
- plot_name: "Grid plot 1" - plot_name: "Grid plot 1"
x: x_label: "Motor X"
label: "Motor X" y_label: "BPM"
signals: sources:
- name: "samx" - type: "scan_segment"
entry: "samx" signals:
y: x:
label: "BPM" - name: "samx"
signals: entry: "samx"
- name: "gauss_bpm" y:
entry: "gauss_bpm" - name: "gauss_bpm"
entry: "gauss_bpm"
- plot_name: "Grid plot 2" - plot_name: "Grid plot 2"
x: x_label: "Motor X"
label: "Motor X" y_label: "BPM"
signals: sources:
- name: "samx" - type: "scan_segment"
entry: "samx" signals:
y: x:
label: "BPM" - name: "samx"
signals: entry: "samx"
- name: "gauss_adc1" y:
entry: "gauss_adc1" - name: "gauss_adc1"
entry: "gauss_adc1"
- plot_name: "Grid plot 3" - plot_name: "Grid plot 3"
x: x_label: "Motor X"
label: "Motor Y" y_label: "BPM"
signals: sources:
- name: "samx" - type: "scan_segment"
entry: "samx" signals:
y: x:
label: "BPM" - name: "samx"
signals: entry: "samx"
- name: "gauss_adc2" y:
entry: "gauss_adc2" - name: "gauss_adc2"
entry: "gauss_adc2"
- plot_name: "Grid plot 4" - plot_name: "Grid plot 4"
x: x_label: "Motor X"
label: "Motor Y" y_label: "BPM"
signals: sources:
- name: "samx" - type: "scan_segment"
entry: "samx" signals:
y: x:
label: "BPM" - name: "samx"
signals: entry: "samx"
- name: "bpm4i" y:
entry: "bpm4i" - name: "bpm4i"
entry: "bpm4i"
line_scan: line_scan:
- plot_name: "Multiple Gauss Plot" - plot_name: "Multiple Gauss Plot"
x: x_label: "Motor X"
label: "Motor X" y_label: "BPM"
signals: sources:
- name: "samx" - type: "scan_segment"
y: signals:
label: "BPM" x:
signals: - name: "samx"
- name: "gauss_bpm" y:
entry: "gauss_bpm" - name: "gauss_bpm"
- name: "gauss_adc1" entry: "gauss_bpm"
entry: "gauss_adc1" - name: "gauss_adc1"
- name: "gauss_adc2" entry: "gauss_adc1"
entry: "gauss_adc2" - name: "gauss_adc2"
- plot_name: "BPM Plot" entry: "gauss_adc2"
x: - plot_name: "BPM Plot"
label: "Motor X" x_label: "Motor X"
signals: y_label: "BPM"
- name: "samx" sources:
entry: "samx" - type: "scan_segment"
y: signals:
label: "Multi" x:
signals: - name: "samx"
- name: "bpm4i" y:
entry: "bpm4i" - name: "bpm4i"
entry: "bpm4i"