Files
motorDriverTests/tests/conftest.py

37 lines
1.1 KiB
Python

from caproto.sync.client import read, write
from ioc.startioc import startioc
import pytest
TIMEOUT_IOC_STARTUP = 30
TIMEOUT_READ = 3.0
@pytest.fixture(autouse=True)
def prepare_ioc():
"""
This function checks if the test IOC is already running and attempts to
start it, if that is not the case.
"""
try:
read('MOTORDRIVERTESTS:IOCREADY', timeout=TIMEOUT_READ)
# Reading the check recird was successfull -> We assume that the IOC
# is running
return
except TimeoutError:
# Received a timeout error -> Start the IOC
startioc()
# Check every few seconds if the IOC started successfully
now = time.time()
while now + TIMEOUT_IOC_STARTUP < time.time():
try:
read('MOTORDRIVERTESTS:IOCREADY', timeout=TIMEOUT_READ)
return
except TimeoutError:
time.sleep(0.5)
# IOC startup failed in the given time -> Raise an error
raise TimeoutError(
f'Starting the IOC within {TIMEOUT_IOC_STARTUP} seconds failed.')