bec-ipython-client 3.78.2__py3-none-any.whl → 3.79.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- PKG-INFO +1 -1
- {bec_ipython_client-3.78.2.dist-info → bec_ipython_client-3.79.0.dist-info}/METADATA +1 -1
- {bec_ipython_client-3.78.2.dist-info → bec_ipython_client-3.79.0.dist-info}/RECORD +7 -7
- pyproject.toml +1 -1
- tests/end-2-end/test_procedures_e2e.py +26 -17
- {bec_ipython_client-3.78.2.dist-info → bec_ipython_client-3.79.0.dist-info}/WHEEL +0 -0
- {bec_ipython_client-3.78.2.dist-info → bec_ipython_client-3.79.0.dist-info}/entry_points.txt +0 -0
PKG-INFO
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.gitignore,sha256=XxC6jyyftTo2CLtm4K8axuNPYwA9Wgaz2R93WhX8bTQ,3364
|
|
2
|
-
PKG-INFO,sha256=
|
|
2
|
+
PKG-INFO,sha256=VLQSyJM40UR3wtIbuVdFRFG5gg2GMGd_OHqA0cMBEEI,1052
|
|
3
3
|
demo.py,sha256=AquJB-0Tu2bIEFpcJ0Q3RUBt1xldqS6GgU5CjOAg_ww,7083
|
|
4
|
-
pyproject.toml,sha256=
|
|
4
|
+
pyproject.toml,sha256=E4DgwEeKhbuvMEl23r-FPdl2dEDVw-m6orc6qhtKwmU,1229
|
|
5
5
|
bec_ipython_client/__init__.py,sha256=ihd_V8I7Qo0MWKMo7bcvPf-ZyUQqkcNf8IAWLJKiFJE,79
|
|
6
6
|
bec_ipython_client/beamline_mixin.py,sha256=scMWIFbHJajyECzbwEVKyQUGjpqA9C_KiU2M6FuRH_Q,1067
|
|
7
7
|
bec_ipython_client/bec_magics.py,sha256=Rz2aXkUCeAV_VxdXqLUNHh8T44kSH9ha83OiEtdptzI,2792
|
|
@@ -35,10 +35,10 @@ tests/client_tests/test_live_table.py,sha256=0EKgWOgDqpjN8fJEeAzoKNCwFneDEsUY2Nf
|
|
|
35
35
|
tests/client_tests/test_move_callback.py,sha256=bUCcWoz_tc-yRAtwmEUMrKE_qKwatop_wReSugGGEIQ,8670
|
|
36
36
|
tests/client_tests/test_pretty_table.py,sha256=uQ-KPb3RXoCFE_t1IrpkT6kZAoqW7pFXxbFc445sX0Y,469
|
|
37
37
|
tests/end-2-end/_ensure_requirements_container.py,sha256=RT2a5cUZnXtMjJRlPImGzgyX-KJPLiav5WSp_l3wzv8,725
|
|
38
|
-
tests/end-2-end/test_procedures_e2e.py,sha256=
|
|
38
|
+
tests/end-2-end/test_procedures_e2e.py,sha256=xjczbB33Cf5pDLe1KWcalRRBrSxOQ3cbV3s3w3GsC_A,4922
|
|
39
39
|
tests/end-2-end/test_scans_e2e.py,sha256=CxlXjQrzDJebaoZObt_oYx41wbnHLuJLSjKlno4u2B4,30981
|
|
40
40
|
tests/end-2-end/test_scans_lib_e2e.py,sha256=-yYW-bm2jmXg4QYa6jSQFRlaLa81zeUvP7oTodccWg0,19213
|
|
41
|
-
bec_ipython_client-3.
|
|
42
|
-
bec_ipython_client-3.
|
|
43
|
-
bec_ipython_client-3.
|
|
44
|
-
bec_ipython_client-3.
|
|
41
|
+
bec_ipython_client-3.79.0.dist-info/METADATA,sha256=VLQSyJM40UR3wtIbuVdFRFG5gg2GMGd_OHqA0cMBEEI,1052
|
|
42
|
+
bec_ipython_client-3.79.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
43
|
+
bec_ipython_client-3.79.0.dist-info/entry_points.txt,sha256=oQUXYY0jjD9ZvKPHwaGn2wkUIWpDZM8L4ixDA3RlBWE,53
|
|
44
|
+
bec_ipython_client-3.79.0.dist-info/RECORD,,
|
pyproject.toml
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import time
|
|
4
|
+
from dataclasses import dataclass
|
|
4
5
|
from importlib.metadata import version
|
|
5
6
|
from typing import TYPE_CHECKING, Callable, Generator
|
|
6
7
|
from unittest.mock import MagicMock, patch
|
|
@@ -11,7 +12,7 @@ from bec_ipython_client.main import BECIPythonClient
|
|
|
11
12
|
from bec_lib import messages
|
|
12
13
|
from bec_lib.endpoints import MessageEndpoints
|
|
13
14
|
from bec_lib.logger import bec_logger
|
|
14
|
-
from bec_server.scan_server.procedures.constants import
|
|
15
|
+
from bec_server.scan_server.procedures.constants import _CONTAINER, _WORKER
|
|
15
16
|
from bec_server.scan_server.procedures.container_utils import get_backend
|
|
16
17
|
from bec_server.scan_server.procedures.container_worker import ContainerProcedureWorker
|
|
17
18
|
from bec_server.scan_server.procedures.manager import ProcedureManager
|
|
@@ -28,6 +29,15 @@ logger = bec_logger.logger
|
|
|
28
29
|
pytestmark = pytest.mark.random_order(disabled=True)
|
|
29
30
|
|
|
30
31
|
|
|
32
|
+
@dataclass(frozen=True)
|
|
33
|
+
class PATCHED_CONSTANTS:
|
|
34
|
+
WORKER = _WORKER()
|
|
35
|
+
CONTAINER = _CONTAINER()
|
|
36
|
+
MANAGER_SHUTDOWN_TIMEOUT_S = 2
|
|
37
|
+
BEC_VERSION = version("bec_lib")
|
|
38
|
+
REDIS_HOST = "localhost"
|
|
39
|
+
|
|
40
|
+
|
|
31
41
|
@pytest.fixture
|
|
32
42
|
def client_logtool_and_manager(
|
|
33
43
|
bec_ipython_client_fixture_with_logtool: tuple[BECIPythonClient, "LogTestTool"],
|
|
@@ -52,7 +62,7 @@ def _wait_while(cond: Callable[[], bool], timeout_s):
|
|
|
52
62
|
def test_building_worker_image():
|
|
53
63
|
podman_utils = get_backend()
|
|
54
64
|
build = podman_utils.build_worker_image()
|
|
55
|
-
assert len(build._command_output.splitlines()[-1]) == 64
|
|
65
|
+
assert len(build._command_output.splitlines()[-1]) == 64 # type: ignore
|
|
56
66
|
assert podman_utils.image_exists(f"bec_procedure_worker:v{version('bec_lib')}")
|
|
57
67
|
|
|
58
68
|
|
|
@@ -62,7 +72,7 @@ def test_procedure_runner_spawns_worker(
|
|
|
62
72
|
client_logtool_and_manager: tuple[BECIPythonClient, "LogTestTool", ProcedureManager],
|
|
63
73
|
):
|
|
64
74
|
client, _, manager = client_logtool_and_manager
|
|
65
|
-
assert manager.
|
|
75
|
+
assert manager._active_workers == {}
|
|
66
76
|
endpoint = MessageEndpoints.procedure_request()
|
|
67
77
|
msg = messages.ProcedureRequestMessage(
|
|
68
78
|
identifier="sleep", args_kwargs=((), {"time_s": 2}), queue="test"
|
|
@@ -77,21 +87,22 @@ def test_procedure_runner_spawns_worker(
|
|
|
77
87
|
manager.add_callback("test", cb)
|
|
78
88
|
client.connector.xadd(topic=endpoint, msg_dict=msg.model_dump())
|
|
79
89
|
|
|
80
|
-
_wait_while(lambda: manager.
|
|
81
|
-
_wait_while(lambda: manager.
|
|
90
|
+
_wait_while(lambda: manager._active_workers == {}, 5)
|
|
91
|
+
_wait_while(lambda: manager._active_workers != {}, 20)
|
|
82
92
|
|
|
83
93
|
assert logs != []
|
|
84
94
|
|
|
85
95
|
|
|
86
96
|
@pytest.mark.timeout(100)
|
|
87
97
|
@patch("bec_server.scan_server.procedures.manager.procedure_registry.is_registered", lambda _: True)
|
|
98
|
+
@patch("bec_server.scan_server.procedures.container_worker.PROCEDURE", PATCHED_CONSTANTS())
|
|
88
99
|
def test_happy_path_container_procedure_runner(
|
|
89
100
|
client_logtool_and_manager: tuple[BECIPythonClient, "LogTestTool", ProcedureManager],
|
|
90
101
|
):
|
|
91
102
|
test_args = (1, 2, 3)
|
|
92
103
|
test_kwargs = {"a": "b", "c": "d"}
|
|
93
104
|
client, logtool, manager = client_logtool_and_manager
|
|
94
|
-
assert manager.
|
|
105
|
+
assert manager._active_workers == {}
|
|
95
106
|
conn = client.connector
|
|
96
107
|
endpoint = MessageEndpoints.procedure_request()
|
|
97
108
|
msg = messages.ProcedureRequestMessage(
|
|
@@ -99,12 +110,15 @@ def test_happy_path_container_procedure_runner(
|
|
|
99
110
|
)
|
|
100
111
|
conn.xadd(topic=endpoint, msg_dict=msg.model_dump())
|
|
101
112
|
|
|
102
|
-
_wait_while(lambda: manager.
|
|
103
|
-
_wait_while(lambda: manager.
|
|
113
|
+
_wait_while(lambda: manager._active_workers == {}, 5)
|
|
114
|
+
_wait_while(lambda: manager._active_workers != {}, 20)
|
|
104
115
|
|
|
105
116
|
logtool.fetch()
|
|
106
117
|
assert logtool.is_present_in_any_message("procedure accepted: True, message:")
|
|
107
|
-
assert logtool.is_present_in_any_message(
|
|
118
|
+
assert logtool.is_present_in_any_message(
|
|
119
|
+
"ContainerWorker started container for queue primary"
|
|
120
|
+
), f"Log content relating to procedures: {manager._logs}"
|
|
121
|
+
|
|
108
122
|
res, msg = logtool.are_present_in_order(
|
|
109
123
|
[
|
|
110
124
|
"Container worker 'primary' status update: IDLE",
|
|
@@ -114,12 +128,7 @@ def test_happy_path_container_procedure_runner(
|
|
|
114
128
|
]
|
|
115
129
|
)
|
|
116
130
|
assert res, f"failed on {msg}"
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
f"Builtin procedure log_message_args_kwargs called with args: {test_args} and kwargs: {test_kwargs}",
|
|
121
|
-
"Container worker 'primary' status update: IDLE",
|
|
122
|
-
"Container worker 'primary' status update: FINISHED",
|
|
123
|
-
]
|
|
131
|
+
|
|
132
|
+
assert logtool.is_present_in_any_message(
|
|
133
|
+
f"Builtin procedure log_message_args_kwargs called with args: {test_args} and kwargs: {test_kwargs}"
|
|
124
134
|
)
|
|
125
|
-
assert res, f"failed on {msg}"
|
|
File without changes
|
{bec_ipython_client-3.78.2.dist-info → bec_ipython_client-3.79.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|