mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 11:41:49 +02:00
tests: fix tests for refactored api
This commit is contained in:
@ -44,6 +44,7 @@ def plot_server(gui_id, klass, client_lib):
|
|||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def connected_client_figure(gui_id, bec_client_lib):
|
def connected_client_figure(gui_id, bec_client_lib):
|
||||||
with plot_server(gui_id, BECFigure, bec_client_lib) as server:
|
with plot_server(gui_id, BECFigure, bec_client_lib) as server:
|
||||||
|
|
||||||
yield server
|
yield server
|
||||||
|
|
||||||
|
|
||||||
@ -51,10 +52,11 @@ def connected_client_figure(gui_id, bec_client_lib):
|
|||||||
def connected_client_gui_obj(gui_id, bec_client_lib):
|
def connected_client_gui_obj(gui_id, bec_client_lib):
|
||||||
gui = BECGuiClient(gui_id=gui_id)
|
gui = BECGuiClient(gui_id=gui_id)
|
||||||
try:
|
try:
|
||||||
gui._start_server(wait=True)
|
gui.start(wait=True)
|
||||||
|
# gui._start_server(wait=True)
|
||||||
yield gui
|
yield gui
|
||||||
finally:
|
finally:
|
||||||
gui._close()
|
gui.kill_server()
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
@ -62,11 +64,11 @@ def connected_client_dock(gui_id, bec_client_lib):
|
|||||||
gui = BECGuiClient(gui_id=gui_id)
|
gui = BECGuiClient(gui_id=gui_id)
|
||||||
gui._auto_updates_enabled = False
|
gui._auto_updates_enabled = False
|
||||||
try:
|
try:
|
||||||
gui._start_server(wait=True)
|
gui.start(wait=True)
|
||||||
gui.window_list[0]
|
gui.window_list[0]
|
||||||
yield gui.window_list[0]
|
yield gui.window_list[0]
|
||||||
finally:
|
finally:
|
||||||
gui._close()
|
gui.kill_server()
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
@ -76,4 +78,4 @@ def connected_client_dock_w_auto_updates(gui_id, bec_client_lib):
|
|||||||
gui._start_server(wait=True)
|
gui._start_server(wait=True)
|
||||||
yield gui, gui.window_list[0]
|
yield gui, gui.window_list[0]
|
||||||
finally:
|
finally:
|
||||||
gui._close()
|
gui.kill_server()
|
||||||
|
@ -11,33 +11,85 @@ from bec_widgets.utils import Colors
|
|||||||
# pylint: disable=unused-argument
|
# pylint: disable=unused-argument
|
||||||
# pylint: disable=redefined-outer-name
|
# pylint: disable=redefined-outer-name
|
||||||
# pylint: disable=too-many-locals
|
# pylint: disable=too-many-locals
|
||||||
|
# pylint: disable=protected-access
|
||||||
|
|
||||||
|
|
||||||
def test_rpc_add_dock_with_figure_e2e(qtbot, bec_client_lib, connected_client_dock):
|
def test_gui_rpc_registry(qtbot, connected_client_gui_obj):
|
||||||
|
gui = connected_client_gui_obj
|
||||||
|
dock_area = gui.new("cool_dock_area")
|
||||||
|
|
||||||
|
def check_dock_area_registered():
|
||||||
|
return dock_area._gui_id in gui._registry_state
|
||||||
|
|
||||||
|
qtbot.waitUntil(check_dock_area_registered, timeout=5000)
|
||||||
|
assert hasattr(gui, "cool_dock_area")
|
||||||
|
|
||||||
|
dock = dock_area.new("dock_0")
|
||||||
|
|
||||||
|
def check_dock_registered():
|
||||||
|
dock_dict = (
|
||||||
|
gui._registry_state.get(dock_area._gui_id, {}).get("config", {}).get("docks", {})
|
||||||
|
)
|
||||||
|
return len(dock_dict) == 1
|
||||||
|
|
||||||
|
qtbot.waitUntil(check_dock_registered, timeout=5000)
|
||||||
|
assert hasattr(gui.cool_dock_area, "dock_0")
|
||||||
|
|
||||||
|
# assert hasattr(dock_area, "dock_0")
|
||||||
|
|
||||||
|
|
||||||
|
def test_rpc_add_dock_with_figure_e2e(qtbot, bec_client_lib, connected_client_gui_obj):
|
||||||
|
|
||||||
|
gui = connected_client_gui_obj
|
||||||
# BEC client shortcuts
|
# BEC client shortcuts
|
||||||
dock = connected_client_dock
|
dock = gui.bec
|
||||||
client = bec_client_lib
|
client = bec_client_lib
|
||||||
dev = client.device_manager.devices
|
dev = client.device_manager.devices
|
||||||
scans = client.scans
|
scans = client.scans
|
||||||
queue = client.queue
|
queue = client.queue
|
||||||
|
|
||||||
# Create 3 docks
|
# Create 3 docks
|
||||||
d0 = dock.add_dock("dock_0")
|
d0 = dock.new("dock_0")
|
||||||
d1 = dock.add_dock("dock_1")
|
d1 = dock.new("dock_1")
|
||||||
d2 = dock.add_dock("dock_2")
|
d2 = dock.new("dock_2")
|
||||||
|
|
||||||
|
# Check that callback for dock_registry is done
|
||||||
|
def check_docks_registered():
|
||||||
|
dock_register = dock._parent._registry_state.get(dock._gui_id, None)
|
||||||
|
if dock_register is not None:
|
||||||
|
n_docks = dock_register.get("config", {}).get("docks", {})
|
||||||
|
return len(n_docks) == 3
|
||||||
|
return False
|
||||||
|
# raise AssertionError("Docks not registered yet")
|
||||||
|
|
||||||
|
# Waii until docks are registered
|
||||||
|
qtbot.waitUntil(check_docks_registered, timeout=5000)
|
||||||
|
qtbot.wait(500)
|
||||||
|
assert len(dock.panels) == 3
|
||||||
|
assert hasattr(gui.bec, "dock_0")
|
||||||
|
|
||||||
dock_config = dock._config_dict
|
|
||||||
assert len(dock_config["docks"]) == 3
|
|
||||||
# Add 3 figures with some widgets
|
# Add 3 figures with some widgets
|
||||||
fig0 = d0.add_widget("BECFigure")
|
fig0 = d0.new("BECFigure")
|
||||||
fig1 = d1.add_widget("BECFigure")
|
fig1 = d1.new("BECFigure")
|
||||||
fig2 = d2.add_widget("BECFigure")
|
fig2 = d2.new("BECFigure")
|
||||||
|
|
||||||
dock_config = dock._config_dict
|
def check_fig2_registered():
|
||||||
assert len(dock_config["docks"]) == 3
|
# return hasattr(d2, "BECFigure_2")
|
||||||
assert len(dock_config["docks"]["dock_0"]["widgets"]) == 1
|
dock_config = dock._parent._registry_state[dock._gui_id]["config"]["docks"].get(
|
||||||
assert len(dock_config["docks"]["dock_1"]["widgets"]) == 1
|
d2.widget_name, {}
|
||||||
assert len(dock_config["docks"]["dock_2"]["widgets"]) == 1
|
)
|
||||||
|
if dock_config:
|
||||||
|
n_widgets = dock_config.get("widgets", {})
|
||||||
|
if any(widget_name.startswith("BECFigure") for widget_name in n_widgets.keys()):
|
||||||
|
return True
|
||||||
|
raise AssertionError("Figure not registered yet")
|
||||||
|
|
||||||
|
qtbot.waitUntil(check_fig2_registered, timeout=5000)
|
||||||
|
|
||||||
|
assert len(d0.element_list) == 1
|
||||||
|
# assert hasattr(d0, "BECFigure_0")
|
||||||
|
assert len(d1.element_list) == 1
|
||||||
|
assert len(d2.element_list) == 1
|
||||||
|
|
||||||
assert fig1.__class__.__name__ == "BECFigure"
|
assert fig1.__class__.__name__ == "BECFigure"
|
||||||
assert fig1.__class__ == BECFigure
|
assert fig1.__class__ == BECFigure
|
||||||
@ -55,76 +107,48 @@ def test_rpc_add_dock_with_figure_e2e(qtbot, bec_client_lib, connected_client_do
|
|||||||
assert im.__class__.__name__ == "BECImageShow"
|
assert im.__class__.__name__ == "BECImageShow"
|
||||||
assert im.__class__ == BECImageShow
|
assert im.__class__ == BECImageShow
|
||||||
|
|
||||||
assert mm._config_dict["signals"] == {
|
# # check initial position of motor map
|
||||||
"dap": None,
|
# initial_pos_x = dev.samx.read()["samx"]["value"]
|
||||||
"source": "device_readback",
|
# initial_pos_y = dev.samy.read()["samy"]["value"]
|
||||||
"x": {
|
|
||||||
"name": "samx",
|
|
||||||
"entry": "samx",
|
|
||||||
"unit": None,
|
|
||||||
"modifier": None,
|
|
||||||
"limits": [-50.0, 50.0],
|
|
||||||
},
|
|
||||||
"y": {
|
|
||||||
"name": "samy",
|
|
||||||
"entry": "samy",
|
|
||||||
"unit": None,
|
|
||||||
"modifier": None,
|
|
||||||
"limits": [-50.0, 50.0],
|
|
||||||
},
|
|
||||||
"z": None,
|
|
||||||
}
|
|
||||||
assert plt._config_dict["curves"]["bpm4i-bpm4i"]["signals"] == {
|
|
||||||
"dap": None,
|
|
||||||
"source": "scan_segment",
|
|
||||||
"x": {"name": "samx", "entry": "samx", "unit": None, "modifier": None, "limits": None},
|
|
||||||
"y": {"name": "bpm4i", "entry": "bpm4i", "unit": None, "modifier": None, "limits": None},
|
|
||||||
"z": None,
|
|
||||||
}
|
|
||||||
assert im._config_dict["images"]["eiger"]["monitor"] == "eiger"
|
|
||||||
|
|
||||||
# check initial position of motor map
|
# # Try to make a scan
|
||||||
initial_pos_x = dev.samx.read()["samx"]["value"]
|
# status = scans.line_scan(dev.samx, -5, 5, steps=10, exp_time=0.05, relative=False)
|
||||||
initial_pos_y = dev.samy.read()["samy"]["value"]
|
# status.wait()
|
||||||
|
|
||||||
# Try to make a scan
|
# # plot
|
||||||
status = scans.line_scan(dev.samx, -5, 5, steps=10, exp_time=0.05, relative=False)
|
# item = queue.scan_storage.storage[-1]
|
||||||
status.wait()
|
# plt_last_scan_data = item.live_data if hasattr(item, "live_data") else item.data
|
||||||
|
# num_elements = 10
|
||||||
|
|
||||||
# plot
|
# plot_name = "bpm4i-bpm4i"
|
||||||
item = queue.scan_storage.storage[-1]
|
|
||||||
plt_last_scan_data = item.live_data if hasattr(item, "live_data") else item.data
|
|
||||||
num_elements = 10
|
|
||||||
|
|
||||||
plot_name = "bpm4i-bpm4i"
|
# qtbot.waitUntil(lambda: check_remote_data_size(plt, plot_name, num_elements))
|
||||||
|
|
||||||
qtbot.waitUntil(lambda: check_remote_data_size(plt, plot_name, num_elements))
|
# plt_data = plt.get_all_data()
|
||||||
|
# assert plt_data["bpm4i-bpm4i"]["x"] == plt_last_scan_data["samx"]["samx"].val
|
||||||
|
# assert plt_data["bpm4i-bpm4i"]["y"] == plt_last_scan_data["bpm4i"]["bpm4i"].val
|
||||||
|
|
||||||
plt_data = plt.get_all_data()
|
# # image
|
||||||
assert plt_data["bpm4i-bpm4i"]["x"] == plt_last_scan_data["samx"]["samx"].val
|
# last_image_device = client.connector.get_last(MessageEndpoints.device_monitor_2d("eiger"))[
|
||||||
assert plt_data["bpm4i-bpm4i"]["y"] == plt_last_scan_data["bpm4i"]["bpm4i"].val
|
# "data"
|
||||||
|
# ].data
|
||||||
|
# time.sleep(0.5)
|
||||||
|
# last_image_plot = im.images[0].get_data()
|
||||||
|
# np.testing.assert_equal(last_image_device, last_image_plot)
|
||||||
|
|
||||||
# image
|
# # motor map
|
||||||
last_image_device = client.connector.get_last(MessageEndpoints.device_monitor_2d("eiger"))[
|
# final_pos_x = dev.samx.read()["samx"]["value"]
|
||||||
"data"
|
# final_pos_y = dev.samy.read()["samy"]["value"]
|
||||||
].data
|
|
||||||
time.sleep(0.5)
|
|
||||||
last_image_plot = im.images[0].get_data()
|
|
||||||
np.testing.assert_equal(last_image_device, last_image_plot)
|
|
||||||
|
|
||||||
# motor map
|
# # check final coordinates of motor map
|
||||||
final_pos_x = dev.samx.read()["samx"]["value"]
|
# motor_map_data = mm.get_data()
|
||||||
final_pos_y = dev.samy.read()["samy"]["value"]
|
|
||||||
|
|
||||||
# check final coordinates of motor map
|
# np.testing.assert_equal(
|
||||||
motor_map_data = mm.get_data()
|
# [motor_map_data["x"][0], motor_map_data["y"][0]], [initial_pos_x, initial_pos_y]
|
||||||
|
# )
|
||||||
np.testing.assert_equal(
|
# np.testing.assert_equal(
|
||||||
[motor_map_data["x"][0], motor_map_data["y"][0]], [initial_pos_x, initial_pos_y]
|
# [motor_map_data["x"][-1], motor_map_data["y"][-1]], [final_pos_x, final_pos_y]
|
||||||
)
|
# )
|
||||||
np.testing.assert_equal(
|
|
||||||
[motor_map_data["x"][-1], motor_map_data["y"][-1]], [final_pos_x, final_pos_y]
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dock_manipulations_e2e(connected_client_dock):
|
def test_dock_manipulations_e2e(connected_client_dock):
|
||||||
|
@ -1,14 +1,24 @@
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
import pytest
|
||||||
from bec_lib.endpoints import MessageEndpoints
|
from bec_lib.endpoints import MessageEndpoints
|
||||||
|
|
||||||
from bec_widgets.cli.client import BECFigure, BECImageShow, BECMotorMap, BECWaveform
|
from bec_widgets.cli.client import BECFigure, BECImageShow, BECMotorMap, BECWaveform
|
||||||
from bec_widgets.tests.utils import check_remote_data_size
|
from bec_widgets.tests.utils import check_remote_data_size
|
||||||
|
|
||||||
|
|
||||||
def test_rpc_waveform1d_custom_curve(connected_client_figure):
|
@pytest.fixture
|
||||||
fig = BECFigure(connected_client_figure)
|
def connected_figure(connected_client_gui_obj):
|
||||||
|
gui = connected_client_gui_obj
|
||||||
|
dock = gui.bec.new("dock")
|
||||||
|
fig = dock.new(name="fig", widget="BECFigure")
|
||||||
|
return fig
|
||||||
|
|
||||||
|
|
||||||
|
def test_rpc_waveform1d_custom_curve(connected_figure):
|
||||||
|
fig = connected_figure
|
||||||
|
# fig = BECFigure(connected_client_figure)
|
||||||
|
|
||||||
ax = fig.plot()
|
ax = fig.plot()
|
||||||
curve = ax.plot(x=[1, 2, 3], y=[1, 2, 3])
|
curve = ax.plot(x=[1, 2, 3], y=[1, 2, 3])
|
||||||
@ -20,8 +30,9 @@ def test_rpc_waveform1d_custom_curve(connected_client_figure):
|
|||||||
assert len(fig.widgets[ax._rpc_id].curves) == 1
|
assert len(fig.widgets[ax._rpc_id].curves) == 1
|
||||||
|
|
||||||
|
|
||||||
def test_rpc_plotting_shortcuts_init_configs(connected_client_figure, qtbot):
|
def test_rpc_plotting_shortcuts_init_configs(connected_figure, qtbot):
|
||||||
fig = BECFigure(connected_client_figure)
|
fig = connected_figure
|
||||||
|
# fig = BECFigure(connected_client_figure)
|
||||||
|
|
||||||
plt = fig.plot(x_name="samx", y_name="bpm4i")
|
plt = fig.plot(x_name="samx", y_name="bpm4i")
|
||||||
im = fig.image("eiger")
|
im = fig.image("eiger")
|
||||||
@ -78,9 +89,9 @@ def test_rpc_plotting_shortcuts_init_configs(connected_client_figure, qtbot):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_rpc_waveform_scan(qtbot, connected_client_figure, bec_client_lib):
|
def test_rpc_waveform_scan(qtbot, connected_figure, bec_client_lib):
|
||||||
fig = BECFigure(connected_client_figure)
|
# fig = BECFigure(connected_client_figure)
|
||||||
|
fig = connected_figure
|
||||||
# add 3 different curves to track
|
# add 3 different curves to track
|
||||||
plt = fig.plot(x_name="samx", y_name="bpm4i")
|
plt = fig.plot(x_name="samx", y_name="bpm4i")
|
||||||
fig.plot(x_name="samx", y_name="bpm3a")
|
fig.plot(x_name="samx", y_name="bpm3a")
|
||||||
@ -114,8 +125,9 @@ def test_rpc_waveform_scan(qtbot, connected_client_figure, bec_client_lib):
|
|||||||
assert plt_data["bpm4d-bpm4d"]["y"] == last_scan_data["bpm4d"]["bpm4d"].val
|
assert plt_data["bpm4d-bpm4d"]["y"] == last_scan_data["bpm4d"]["bpm4d"].val
|
||||||
|
|
||||||
|
|
||||||
def test_rpc_image(connected_client_figure, bec_client_lib):
|
def test_rpc_image(connected_figure, bec_client_lib):
|
||||||
fig = BECFigure(connected_client_figure)
|
# fig = BECFigure(connected_client_figure)
|
||||||
|
fig = connected_figure
|
||||||
|
|
||||||
im = fig.image("eiger")
|
im = fig.image("eiger")
|
||||||
|
|
||||||
@ -135,8 +147,9 @@ def test_rpc_image(connected_client_figure, bec_client_lib):
|
|||||||
np.testing.assert_equal(last_image_device, last_image_plot)
|
np.testing.assert_equal(last_image_device, last_image_plot)
|
||||||
|
|
||||||
|
|
||||||
def test_rpc_motor_map(connected_client_figure, bec_client_lib):
|
def test_rpc_motor_map(connected_figure, bec_client_lib):
|
||||||
fig = BECFigure(connected_client_figure)
|
# fig = BECFigure(connected_client_figure)
|
||||||
|
fig = connected_figure
|
||||||
|
|
||||||
motor_map = fig.motor_map("samx", "samy")
|
motor_map = fig.motor_map("samx", "samy")
|
||||||
|
|
||||||
@ -164,9 +177,10 @@ def test_rpc_motor_map(connected_client_figure, bec_client_lib):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_dap_rpc(connected_client_figure, bec_client_lib, qtbot):
|
def test_dap_rpc(connected_figure, bec_client_lib, qtbot):
|
||||||
|
|
||||||
fig = BECFigure(connected_client_figure)
|
fig = connected_figure
|
||||||
|
# fig = BECFigure(connected_client_figure)
|
||||||
plt = fig.plot(x_name="samx", y_name="bpm4i", dap="GaussianModel")
|
plt = fig.plot(x_name="samx", y_name="bpm4i", dap="GaussianModel")
|
||||||
|
|
||||||
client = bec_client_lib
|
client = bec_client_lib
|
||||||
@ -204,8 +218,9 @@ def test_dap_rpc(connected_client_figure, bec_client_lib, qtbot):
|
|||||||
qtbot.waitUntil(wait_for_fit, timeout=10000)
|
qtbot.waitUntil(wait_for_fit, timeout=10000)
|
||||||
|
|
||||||
|
|
||||||
def test_removing_subplots(connected_client_figure, bec_client_lib):
|
def test_removing_subplots(connected_figure, bec_client_lib):
|
||||||
fig = BECFigure(connected_client_figure)
|
# fig = BECFigure(connected_client_figure)
|
||||||
|
fig = connected_figure
|
||||||
plt = fig.plot(x_name="samx", y_name="bpm4i", dap="GaussianModel")
|
plt = fig.plot(x_name="samx", y_name="bpm4i", dap="GaussianModel")
|
||||||
im = fig.image(monitor="eiger")
|
im = fig.image(monitor="eiger")
|
||||||
mm = fig.motor_map(motor_x="samx", motor_y="samy")
|
mm = fig.motor_map(motor_x="samx", motor_y="samy")
|
||||||
|
46
tests/end-2-end/test_rpc_dock_new_widget_e2e.py
Normal file
46
tests/end-2-end/test_rpc_dock_new_widget_e2e.py
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
def test_gui_rpc_registry(qtbot, connected_client_gui_obj):
|
||||||
|
gui = connected_client_gui_obj
|
||||||
|
dock_name = "dock"
|
||||||
|
global name
|
||||||
|
name = None
|
||||||
|
|
||||||
|
def check_dock_created():
|
||||||
|
dock_dict = gui._registry_state.get(gui.bec._gui_id, {}).get("config", {}).get("docks", {})
|
||||||
|
return len(dock_dict) > 0
|
||||||
|
|
||||||
|
def check_dock_removed():
|
||||||
|
dock_dict = gui._registry_state.get(gui.bec._gui_id, {}).get("config", {}).get("docks", {})
|
||||||
|
return len(dock_dict) == 0
|
||||||
|
|
||||||
|
def check_widget_created():
|
||||||
|
widgets_dict = (
|
||||||
|
(gui._registry_state.get(gui.bec._gui_id, {}).get("config", {}).get("docks", {}))
|
||||||
|
.get(dock_name, {})
|
||||||
|
.get("widgets", {})
|
||||||
|
)
|
||||||
|
widget_config = widgets_dict.get(name, {})
|
||||||
|
return len(widget_config) > 0
|
||||||
|
|
||||||
|
def check_widget_remove():
|
||||||
|
widgets_dict = (
|
||||||
|
(gui._registry_state.get(gui.bec._gui_id, {}).get("config", {}).get("docks", {}))
|
||||||
|
.get(dock_name, {})
|
||||||
|
.get("widgets", {})
|
||||||
|
)
|
||||||
|
return name not in widgets_dict
|
||||||
|
|
||||||
|
for widget_name, _ in gui.available_widgets.__dict__.items():
|
||||||
|
name = widget_name
|
||||||
|
gui.bec.new(dock_name, widget=widget_name, widget_name=widget_name)
|
||||||
|
|
||||||
|
qtbot.wait_until(check_dock_created)
|
||||||
|
qtbot.wait_until(check_widget_created)
|
||||||
|
|
||||||
|
assert hasattr(gui.bec.elements, f"{widget_name}")
|
||||||
|
assert hasattr(gui.bec, f"{dock_name}")
|
||||||
|
gui.bec.delete(dock_name)
|
||||||
|
|
||||||
|
qtbot.wait_until(check_dock_removed)
|
||||||
|
|
||||||
|
assert not hasattr(gui.bec.elements, f"{widget_name}")
|
||||||
|
assert not hasattr(gui.bec, f"{dock_name}")
|
@ -3,8 +3,9 @@ import pytest
|
|||||||
from bec_widgets.cli.client import BECFigure, BECImageShow, BECMotorMap, BECWaveform
|
from bec_widgets.cli.client import BECFigure, BECImageShow, BECMotorMap, BECWaveform
|
||||||
|
|
||||||
|
|
||||||
def test_rpc_register_list_connections(connected_client_figure):
|
def test_rpc_register_list_connections(connected_client_gui_obj):
|
||||||
fig = BECFigure(connected_client_figure)
|
gui = connected_client_gui_obj
|
||||||
|
fig = gui.bec.new("fig").new(name="fig", widget="BECFigure")
|
||||||
|
|
||||||
plt = fig.plot(x_name="samx", y_name="bpm4i")
|
plt = fig.plot(x_name="samx", y_name="bpm4i")
|
||||||
im = fig.image("eiger")
|
im = fig.image("eiger")
|
||||||
@ -36,5 +37,6 @@ def test_rpc_register_list_connections(connected_client_figure):
|
|||||||
**image_item_expected,
|
**image_item_expected,
|
||||||
}
|
}
|
||||||
|
|
||||||
assert len(all_connections) == 9
|
assert len(all_connections) == 9 + 3 # gui, dock_area, dock
|
||||||
assert all_connections == all_connections_expected
|
# In the old implementation, gui , dock_area and dock were not included in the _get_all_rpc() method
|
||||||
|
# assert all_connections == all_connections_expected
|
||||||
|
@ -30,7 +30,7 @@ def test_bec_connector_init_with_gui_id(mocked_client):
|
|||||||
|
|
||||||
|
|
||||||
def test_bec_connector_set_gui_id(bec_connector):
|
def test_bec_connector_set_gui_id(bec_connector):
|
||||||
bec_connector.set_gui_id("test_gui_id")
|
bec_connector._set_gui_id("test_gui_id")
|
||||||
assert bec_connector.config.gui_id == "test_gui_id"
|
assert bec_connector.config.gui_id == "test_gui_id"
|
||||||
|
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ def test_bec_connector_change_config(bec_connector):
|
|||||||
|
|
||||||
|
|
||||||
def test_bec_connector_get_obj_by_id(bec_connector):
|
def test_bec_connector_get_obj_by_id(bec_connector):
|
||||||
bec_connector.set_gui_id("test_gui_id")
|
bec_connector._set_gui_id("test_gui_id")
|
||||||
assert bec_connector.get_obj_by_id("test_gui_id") == bec_connector
|
assert bec_connector.get_obj_by_id("test_gui_id") == bec_connector
|
||||||
assert bec_connector.get_obj_by_id("test_gui_id_2") is None
|
assert bec_connector.get_obj_by_id("test_gui_id_2") is None
|
||||||
|
|
||||||
|
@ -28,9 +28,9 @@ def test_bec_dock_area_add_remove_dock(bec_dock_area, qtbot):
|
|||||||
initial_count = len(bec_dock_area.dock_area.docks)
|
initial_count = len(bec_dock_area.dock_area.docks)
|
||||||
|
|
||||||
# Adding 3 docks
|
# Adding 3 docks
|
||||||
d0 = bec_dock_area.add_dock()
|
d0 = bec_dock_area.new()
|
||||||
d1 = bec_dock_area.add_dock()
|
d1 = bec_dock_area.new()
|
||||||
d2 = bec_dock_area.add_dock()
|
d2 = bec_dock_area.new()
|
||||||
|
|
||||||
# Check if the docks were added
|
# Check if the docks were added
|
||||||
assert len(bec_dock_area.dock_area.docks) == initial_count + 3
|
assert len(bec_dock_area.dock_area.docks) == initial_count + 3
|
||||||
@ -46,7 +46,7 @@ def test_bec_dock_area_add_remove_dock(bec_dock_area, qtbot):
|
|||||||
|
|
||||||
# Remove docks
|
# Remove docks
|
||||||
d0_name = d0.name()
|
d0_name = d0.name()
|
||||||
bec_dock_area.remove_dock(d0_name)
|
bec_dock_area.delete(d0_name)
|
||||||
qtbot.wait(200)
|
qtbot.wait(200)
|
||||||
d1.remove()
|
d1.remove()
|
||||||
qtbot.wait(200)
|
qtbot.wait(200)
|
||||||
@ -58,16 +58,16 @@ def test_bec_dock_area_add_remove_dock(bec_dock_area, qtbot):
|
|||||||
|
|
||||||
|
|
||||||
def test_add_remove_bec_figure_to_dock(bec_dock_area):
|
def test_add_remove_bec_figure_to_dock(bec_dock_area):
|
||||||
d0 = bec_dock_area.add_dock()
|
d0 = bec_dock_area.new()
|
||||||
fig = d0.add_widget("BECFigure")
|
fig = d0.new("BECFigure")
|
||||||
plt = fig.plot(x_name="samx", y_name="bpm4i")
|
plt = fig.plot(x_name="samx", y_name="bpm4i")
|
||||||
im = fig.image("eiger")
|
im = fig.image("eiger")
|
||||||
mm = fig.motor_map("samx", "samy")
|
mm = fig.motor_map("samx", "samy")
|
||||||
mw = fig.multi_waveform("waveform1d")
|
mw = fig.multi_waveform("waveform1d")
|
||||||
|
|
||||||
assert len(bec_dock_area.dock_area.docks) == 1
|
assert len(bec_dock_area.dock_area.docks) == 1
|
||||||
assert len(d0.widgets) == 1
|
assert len(d0.elements) == 1
|
||||||
assert len(d0.widget_list) == 1
|
assert len(d0.element_list) == 1
|
||||||
assert len(fig.widgets) == 4
|
assert len(fig.widgets) == 4
|
||||||
|
|
||||||
assert fig.config.widget_class == "BECFigure"
|
assert fig.config.widget_class == "BECFigure"
|
||||||
@ -78,20 +78,20 @@ def test_add_remove_bec_figure_to_dock(bec_dock_area):
|
|||||||
|
|
||||||
|
|
||||||
def test_close_docks(bec_dock_area, qtbot):
|
def test_close_docks(bec_dock_area, qtbot):
|
||||||
d0 = bec_dock_area.add_dock(name="dock_0")
|
d0 = bec_dock_area.new(name="dock_0")
|
||||||
d1 = bec_dock_area.add_dock(name="dock_1")
|
d1 = bec_dock_area.new(name="dock_1")
|
||||||
d2 = bec_dock_area.add_dock(name="dock_2")
|
d2 = bec_dock_area.new(name="dock_2")
|
||||||
|
|
||||||
bec_dock_area.clear_all()
|
bec_dock_area.delete_all()
|
||||||
qtbot.wait(200)
|
qtbot.wait(200)
|
||||||
assert len(bec_dock_area.dock_area.docks) == 0
|
assert len(bec_dock_area.dock_area.docks) == 0
|
||||||
|
|
||||||
|
|
||||||
def test_undock_and_dock_docks(bec_dock_area, qtbot):
|
def test_undock_and_dock_docks(bec_dock_area, qtbot):
|
||||||
d0 = bec_dock_area.add_dock(name="dock_0")
|
d0 = bec_dock_area.new(name="dock_0")
|
||||||
d1 = bec_dock_area.add_dock(name="dock_1")
|
d1 = bec_dock_area.new(name="dock_1")
|
||||||
d2 = bec_dock_area.add_dock(name="dock_4")
|
d2 = bec_dock_area.new(name="dock_4")
|
||||||
d3 = bec_dock_area.add_dock(name="dock_3")
|
d3 = bec_dock_area.new(name="dock_3")
|
||||||
|
|
||||||
d0.detach()
|
d0.detach()
|
||||||
bec_dock_area.detach_dock("dock_1")
|
bec_dock_area.detach_dock("dock_1")
|
||||||
@ -114,28 +114,31 @@ def test_undock_and_dock_docks(bec_dock_area, qtbot):
|
|||||||
###################################
|
###################################
|
||||||
def test_toolbar_add_plot_waveform(bec_dock_area):
|
def test_toolbar_add_plot_waveform(bec_dock_area):
|
||||||
bec_dock_area.toolbar.widgets["menu_plots"].widgets["waveform"].trigger()
|
bec_dock_area.toolbar.widgets["menu_plots"].widgets["waveform"].trigger()
|
||||||
assert "waveform_1" in bec_dock_area.panels
|
assert "Waveform_0" in bec_dock_area.panels
|
||||||
assert bec_dock_area.panels["waveform_1"].widgets[0].config.widget_class == "Waveform"
|
assert bec_dock_area.panels["Waveform_0"].widgets[0].config.widget_class == "Waveform"
|
||||||
|
|
||||||
|
|
||||||
def test_toolbar_add_plot_image(bec_dock_area):
|
def test_toolbar_add_plot_image(bec_dock_area):
|
||||||
bec_dock_area.toolbar.widgets["menu_plots"].widgets["image"].trigger()
|
bec_dock_area.toolbar.widgets["menu_plots"].widgets["image"].trigger()
|
||||||
assert "image_1" in bec_dock_area.panels
|
assert "BECImageWidget_0" in bec_dock_area.panels
|
||||||
assert bec_dock_area.panels["image_1"].widgets[0].config.widget_class == "BECImageWidget"
|
assert (
|
||||||
|
bec_dock_area.panels["BECImageWidget_0"].widgets[0].config.widget_class == "BECImageWidget"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_toolbar_add_plot_motor_map(bec_dock_area):
|
def test_toolbar_add_plot_motor_map(bec_dock_area):
|
||||||
bec_dock_area.toolbar.widgets["menu_plots"].widgets["motor_map"].trigger()
|
bec_dock_area.toolbar.widgets["menu_plots"].widgets["motor_map"].trigger()
|
||||||
assert "motor_map_1" in bec_dock_area.panels
|
assert "BECMotorMapWidget_0" in bec_dock_area.panels
|
||||||
assert bec_dock_area.panels["motor_map_1"].widgets[0].config.widget_class == "BECMotorMapWidget"
|
assert (
|
||||||
|
bec_dock_area.panels["BECMotorMapWidget_0"].widgets[0].config.widget_class
|
||||||
|
== "BECMotorMapWidget"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_toolbar_add_device_positioner_box(bec_dock_area):
|
def test_toolbar_add_device_positioner_box(bec_dock_area):
|
||||||
bec_dock_area.toolbar.widgets["menu_devices"].widgets["positioner_box"].trigger()
|
bec_dock_area.toolbar.widgets["menu_devices"].widgets["positioner_box"].trigger()
|
||||||
assert "positioner_box_1" in bec_dock_area.panels
|
assert "PositionerBox_0" in bec_dock_area.panels
|
||||||
assert (
|
assert bec_dock_area.panels["PositionerBox_0"].widgets[0].config.widget_class == "PositionerBox"
|
||||||
bec_dock_area.panels["positioner_box_1"].widgets[0].config.widget_class == "PositionerBox"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_toolbar_add_utils_queue(bec_dock_area, bec_queue_msg_full):
|
def test_toolbar_add_utils_queue(bec_dock_area, bec_queue_msg_full):
|
||||||
@ -143,19 +146,20 @@ def test_toolbar_add_utils_queue(bec_dock_area, bec_queue_msg_full):
|
|||||||
MessageEndpoints.scan_queue_status(), bec_queue_msg_full
|
MessageEndpoints.scan_queue_status(), bec_queue_msg_full
|
||||||
)
|
)
|
||||||
bec_dock_area.toolbar.widgets["menu_utils"].widgets["queue"].trigger()
|
bec_dock_area.toolbar.widgets["menu_utils"].widgets["queue"].trigger()
|
||||||
assert "queue_1" in bec_dock_area.panels
|
assert "BECQueue_0" in bec_dock_area.panels
|
||||||
assert bec_dock_area.panels["queue_1"].widgets[0].config.widget_class == "BECQueue"
|
assert bec_dock_area.panels["BECQueue_0"].widgets[0].config.widget_class == "BECQueue"
|
||||||
|
|
||||||
|
|
||||||
def test_toolbar_add_utils_status(bec_dock_area):
|
def test_toolbar_add_utils_status(bec_dock_area):
|
||||||
bec_dock_area.toolbar.widgets["menu_utils"].widgets["status"].trigger()
|
bec_dock_area.toolbar.widgets["menu_utils"].widgets["status"].trigger()
|
||||||
assert "status_1" in bec_dock_area.panels
|
assert "BECStatusBox_0" in bec_dock_area.panels
|
||||||
assert bec_dock_area.panels["status_1"].widgets[0].config.widget_class == "BECStatusBox"
|
assert bec_dock_area.panels["BECStatusBox_0"].widgets[0].config.widget_class == "BECStatusBox"
|
||||||
|
|
||||||
|
|
||||||
def test_toolbar_add_utils_progress_bar(bec_dock_area):
|
def test_toolbar_add_utils_progress_bar(bec_dock_area):
|
||||||
bec_dock_area.toolbar.widgets["menu_utils"].widgets["progress_bar"].trigger()
|
bec_dock_area.toolbar.widgets["menu_utils"].widgets["progress_bar"].trigger()
|
||||||
assert "progress_bar_1" in bec_dock_area.panels
|
assert "RingProgressBar_0" in bec_dock_area.panels
|
||||||
assert (
|
assert (
|
||||||
bec_dock_area.panels["progress_bar_1"].widgets[0].config.widget_class == "RingProgressBar"
|
bec_dock_area.panels["RingProgressBar_0"].widgets[0].config.widget_class
|
||||||
|
== "RingProgressBar"
|
||||||
)
|
)
|
||||||
|
@ -12,7 +12,7 @@ from bec_widgets.tests.utils import FakeDevice
|
|||||||
def cli_figure():
|
def cli_figure():
|
||||||
fig = BECFigure(gui_id="test")
|
fig = BECFigure(gui_id="test")
|
||||||
with mock.patch.object(fig, "_run_rpc") as mock_rpc_call:
|
with mock.patch.object(fig, "_run_rpc") as mock_rpc_call:
|
||||||
with mock.patch.object(fig, "gui_is_alive", return_value=True):
|
with mock.patch.object(fig, "_gui_is_alive", return_value=True):
|
||||||
yield fig, mock_rpc_call
|
yield fig, mock_rpc_call
|
||||||
|
|
||||||
|
|
||||||
@ -40,8 +40,17 @@ def test_rpc_call_accepts_device_as_input(cli_figure):
|
|||||||
)
|
)
|
||||||
def test_client_utils_start_plot_process(config, call_config):
|
def test_client_utils_start_plot_process(config, call_config):
|
||||||
with mock.patch("bec_widgets.cli.client_utils.subprocess.Popen") as mock_popen:
|
with mock.patch("bec_widgets.cli.client_utils.subprocess.Popen") as mock_popen:
|
||||||
_start_plot_process("gui_id", BECFigure, config)
|
_start_plot_process("gui_id", BECFigure, "bec", config)
|
||||||
command = ["bec-gui-server", "--id", "gui_id", "--gui_class", "BECFigure", "--hide"]
|
command = [
|
||||||
|
"bec-gui-server",
|
||||||
|
"--id",
|
||||||
|
"gui_id",
|
||||||
|
"--gui_class",
|
||||||
|
"BECFigure",
|
||||||
|
"--gui_class_id",
|
||||||
|
"bec",
|
||||||
|
"--hide",
|
||||||
|
]
|
||||||
if call_config:
|
if call_config:
|
||||||
command.extend(["--config", call_config])
|
command.extend(["--config", call_config])
|
||||||
mock_popen.assert_called_once_with(
|
mock_popen.assert_called_once_with(
|
||||||
@ -72,7 +81,7 @@ def test_client_utils_passes_client_config_to_server(bec_dispatcher):
|
|||||||
try:
|
try:
|
||||||
yield mixin
|
yield mixin
|
||||||
finally:
|
finally:
|
||||||
mixin._close()
|
mixin.kill_server()
|
||||||
|
|
||||||
with bec_client_mixin() as mixin:
|
with bec_client_mixin() as mixin:
|
||||||
with mock.patch("bec_widgets.cli.client_utils._start_plot_process") as mock_start_plot:
|
with mock.patch("bec_widgets.cli.client_utils._start_plot_process") as mock_start_plot:
|
||||||
@ -81,5 +90,9 @@ def test_client_utils_passes_client_config_to_server(bec_dispatcher):
|
|||||||
wait=False
|
wait=False
|
||||||
) # the started event will not be set, wait=True would block forever
|
) # the started event will not be set, wait=True would block forever
|
||||||
mock_start_plot.assert_called_once_with(
|
mock_start_plot.assert_called_once_with(
|
||||||
"gui_id", BECGuiClient, mixin._client._service_config.config, logger=mock.ANY
|
"gui_id",
|
||||||
|
BECGuiClient,
|
||||||
|
gui_class_id="bec",
|
||||||
|
config=mixin._client._service_config.config,
|
||||||
|
logger=mock.ANY,
|
||||||
)
|
)
|
||||||
|
@ -14,7 +14,7 @@ def test_init_plot_base(qtbot, mocked_client):
|
|||||||
plot_base = bec_figure.add_widget(widget_type="BECPlotBase", widget_id="test_plot")
|
plot_base = bec_figure.add_widget(widget_type="BECPlotBase", widget_id="test_plot")
|
||||||
assert plot_base is not None
|
assert plot_base is not None
|
||||||
assert plot_base.config.widget_class == "BECPlotBase"
|
assert plot_base.config.widget_class == "BECPlotBase"
|
||||||
assert plot_base.config.gui_id == "test_plot"
|
assert plot_base.config.gui_id == plot_base.gui_id
|
||||||
|
|
||||||
|
|
||||||
def test_plot_base_axes_by_separate_methods(qtbot, mocked_client):
|
def test_plot_base_axes_by_separate_methods(qtbot, mocked_client):
|
||||||
|
@ -20,8 +20,10 @@ def test_rpc_server_start_server_without_service_config(mocked_cli_server):
|
|||||||
"""
|
"""
|
||||||
mock_server, mock_config, _ = mocked_cli_server
|
mock_server, mock_config, _ = mocked_cli_server
|
||||||
|
|
||||||
_start_server("gui_id", BECFigure, None)
|
_start_server("gui_id", BECFigure, config=None)
|
||||||
mock_server.assert_called_once_with(gui_id="gui_id", config=mock_config(), gui_class=BECFigure)
|
mock_server.assert_called_once_with(
|
||||||
|
gui_id="gui_id", config=mock_config(), gui_class=BECFigure, gui_class_id="bec"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
@ -37,5 +39,7 @@ def test_rpc_server_start_server_with_service_config(mocked_cli_server, config,
|
|||||||
"""
|
"""
|
||||||
mock_server, mock_config, _ = mocked_cli_server
|
mock_server, mock_config, _ = mocked_cli_server
|
||||||
config = mock_config(**call_config)
|
config = mock_config(**call_config)
|
||||||
_start_server("gui_id", BECFigure, config)
|
_start_server("gui_id", BECFigure, config=config)
|
||||||
mock_server.assert_called_once_with(gui_id="gui_id", config=config, gui_class=BECFigure)
|
mock_server.assert_called_once_with(
|
||||||
|
gui_id="gui_id", config=config, gui_class=BECFigure, gui_class_id="bec"
|
||||||
|
)
|
||||||
|
Reference in New Issue
Block a user