Skip to content

Commit 2d4fd3c

Browse files
committed
Isolate re_manager_pc_copy and harden kernel client startup
1 parent 5fc7fc4 commit 2d4fd3c

4 files changed

Lines changed: 46 additions & 4 deletions

File tree

bluesky_httpserver/tests/conftest.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from bluesky_queueserver.manager.tests.common import (
99
ReManager,
1010
condition_manager_idle,
11+
copy_default_profile_collection,
1112
wait_for_condition,
1213
zmq_secure_request,
1314
)
@@ -270,6 +271,40 @@ def re_manager_module():
270271
manager.kill_manager()
271272

272273

274+
@pytest.fixture
275+
def re_manager_pc_copy(tmp_path): # noqa: F811
276+
ports = _ports_for_worker()
277+
_set_zmq_env(ports["zmq_control_client"], ports["zmq_info_client"])
278+
279+
pc_path = copy_default_profile_collection(tmp_path)
280+
281+
manager = ReManager(
282+
params=[
283+
f"--startup-dir={pc_path}",
284+
f"--zmq-control-addr={ports['zmq_control_server']}",
285+
f"--zmq-info-addr={ports['zmq_info_server']}",
286+
f"--redis-name-prefix={_redis_name_prefix(scope='re_manager_pc_copy')}",
287+
],
288+
set_redis_name_prefix=False,
289+
)
290+
failed_to_start = False
291+
292+
try:
293+
_wait_for_manager_ready()
294+
yield pc_path
295+
except Exception:
296+
failed_to_start = True
297+
raise
298+
finally:
299+
if failed_to_start:
300+
manager.kill_manager()
301+
else:
302+
try:
303+
manager.stop_manager(timeout=30)
304+
except Exception:
305+
manager.kill_manager()
306+
307+
273308
@pytest.fixture
274309
def re_manager_cmd(): # noqa: F811
275310
manager = None

bluesky_httpserver/tests/test_core_api_fs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from bluesky_queueserver.manager.tests.common import ( # noqa F401
66
append_code_to_last_startup_file,
77
copy_default_profile_collection,
8-
re_manager_pc_copy,
98
set_qserver_zmq_address,
109
set_qserver_zmq_public_key,
1110
)
@@ -20,6 +19,7 @@
2019
add_plans_to_queue,
2120
fastapi_server_fs,
2221
re_manager_cmd,
22+
re_manager_pc_copy,
2323
request_to_json,
2424
wait_for_environment_to_be_created,
2525
wait_for_manager_state_idle,

bluesky_httpserver/tests/test_core_api_main.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
append_code_to_last_startup_file,
1010
copy_default_profile_collection,
1111
ip_kernel_simple_client,
12-
re_manager_pc_copy,
1312
)
1413

1514
from bluesky_httpserver.tests.conftest import ( # noqa F401
@@ -18,6 +17,7 @@
1817
add_plans_to_queue,
1918
fastapi_server,
2019
re_manager_cmd,
20+
re_manager_pc_copy,
2121
request_to_json,
2222
wait_for_environment_to_be_closed,
2323
wait_for_environment_to_be_created,
@@ -1709,7 +1709,14 @@ def check_status(ip_kernel_state, ip_kernel_captured):
17091709
kernel_int_params = {}
17101710

17111711
if option == "ip_client":
1712-
ip_kernel_simple_client.start()
1712+
for _ in range(5):
1713+
try:
1714+
ip_kernel_simple_client.start()
1715+
break
1716+
except (TypeError, KeyError):
1717+
ttime.sleep(1)
1718+
else:
1719+
pytest.fail("Failed to start IP kernel client after 5 attempts")
17131720
ip_kernel_simple_client.execute_with_check(_busy_script_01)
17141721
elif option == "script":
17151722
resp2 = request_to_json("post", "/script/upload", json={"script": _busy_script_01})

bluesky_httpserver/tests/test_server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from bluesky_queueserver.manager.tests.common import ( # noqa F401
77
append_code_to_last_startup_file,
88
copy_default_profile_collection,
9-
re_manager_pc_copy,
109
set_qserver_zmq_address,
1110
set_qserver_zmq_public_key,
1211
)
@@ -17,6 +16,7 @@
1716
add_plans_to_queue,
1817
fastapi_server_fs,
1918
re_manager_cmd,
19+
re_manager_pc_copy,
2020
request_to_json,
2121
setup_server_with_config_file,
2222
wait_for_environment_to_be_created,

0 commit comments

Comments
 (0)