Skip to content

Commit 76115ec

Browse files
committed
Make tickit sim fixture more robust
This was copied from the tickit-devices system tests
1 parent 54c82f5 commit 76115ec

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

tests/system/test_introspection.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,37 @@ def eiger_controller():
3030
yield EigerController("i04-1-eiger01", 80)
3131

3232

33+
# Stolen from tickit-devices
34+
# https://docs.pytest.org/en/latest/example/parametrize.html#indirect-parametrization
3335
@pytest.fixture
34-
def sim_eiger_controller():
35-
cmd = ["tickit", "all", str(HERE / "eiger.yaml")]
36-
sim = subprocess.Popen(cmd)
36+
def sim_eiger_controller(request):
37+
"""Subprocess that runs ``tickit all <config_path>``."""
38+
config_path: str = request.param
39+
proc = subprocess.Popen(
40+
["tickit", "all", config_path],
41+
stdout=subprocess.PIPE,
42+
stderr=subprocess.STDOUT,
43+
text=True,
44+
)
45+
46+
# Wait until ready
47+
while True:
48+
line = proc.stdout.readline()
49+
if "Starting HTTP server..." in line:
50+
break
3751

3852
sleep(3)
3953

4054
yield EigerController("127.0.0.1", 8081)
4155

42-
sim.send_signal(signal.SIGTERM)
43-
sleep(0.1)
44-
sim.kill()
56+
proc.send_signal(signal.SIGINT)
57+
print(proc.communicate()[0])
4558

4659

4760
@pytest.mark.asyncio
61+
@pytest.mark.parametrize(
62+
"sim_eiger_controller", [str(HERE / "eiger.yaml")], indirect=True
63+
)
4864
async def test_introspection(sim_eiger_controller: EigerController):
4965
controller = sim_eiger_controller
5066
# controller = eiger_controller

0 commit comments

Comments
 (0)