mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-05-11 01:12:05 +02:00
fixed python simulator test fixture (#1350)
Build and Deploy on local RHEL9 / build (push) Successful in 2m10s
Build on RHEL9 docker image / build (push) Successful in 3m37s
Build on RHEL8 docker image / build (push) Successful in 4m50s
Build and Deploy on local RHEL8 / build (push) Successful in 5m7s
Run Simulator Tests on local RHEL9 / build (push) Successful in 18m16s
Run Simulator Tests on local RHEL8 / build (push) Successful in 21m52s
Build and Deploy on local RHEL9 / build (push) Successful in 2m10s
Build on RHEL9 docker image / build (push) Successful in 3m37s
Build on RHEL8 docker image / build (push) Successful in 4m50s
Build and Deploy on local RHEL8 / build (push) Successful in 5m7s
Run Simulator Tests on local RHEL9 / build (push) Successful in 18m16s
Run Simulator Tests on local RHEL8 / build (push) Successful in 21m52s
* fixed python simulator test fixture
* clear_roi after every test to bring it back to default state, test passing multiple parameters
* Exposing the ctb api tests now to CI
* Revert "Exposing the ctb api tests now to CI"
This reverts commit 411fad1b27.
* fixed tests removed uneccessary stuff
* did not save properly
* updated documentation, renamed file
---------
Co-authored-by: Dhanya Thattil <dhanya.thattil@psi.ch>
This commit is contained in:
+37
-78
@@ -58,39 +58,56 @@ DEFAULT_SIMULATOR_CONFIGS = [
|
||||
|
||||
SIMULATOR_IDS = [f"{det_type}_{num_interface}if_{num_mod}mod" for det_type, num_interface, num_mod in DEFAULT_SIMULATOR_CONFIGS]
|
||||
|
||||
'''
|
||||
for more specific parameters
|
||||
@pytest.mark.detectorintegration
|
||||
@pytest.mark.parametrize(
|
||||
"session_simulator",
|
||||
[
|
||||
("ctb", 1, 1),
|
||||
("xilinx_ctb", 1, 1),
|
||||
],
|
||||
indirect=True,
|
||||
)
|
||||
def test_define_reg(session_simulator):
|
||||
det_type, num_interfaces, num_mods, d = session_simulator
|
||||
'''
|
||||
@pytest.fixture(scope="session")
|
||||
def session_simulator(request):
|
||||
"""
|
||||
Fixture to start the detector server once and clean up at the end.
|
||||
Expects request.param = (det_type, num_interfaces, num_mods)
|
||||
"""
|
||||
det_type, num_interfaces, num_mods = request.param
|
||||
fp = sys.stdout
|
||||
try:
|
||||
det_type, num_interfaces, num_mods = request.param
|
||||
fp = sys.stdout
|
||||
|
||||
# set up: once per server
|
||||
Log(LogLevel.INFOBLUE,
|
||||
f'---- {det_type} | interfaces={num_interfaces} | modules={num_mods} ----', fp)
|
||||
# set up: once per server
|
||||
Log(LogLevel.INFOBLUE,
|
||||
f'---- {det_type} | interfaces={num_interfaces} | modules={num_mods} ----', fp)
|
||||
|
||||
cleanup(fp)
|
||||
startDetectorVirtualServer(det_type, num_mods, fp, True)
|
||||
startReceiver(num_mods, fp, True)
|
||||
cleanup(fp)
|
||||
startDetectorVirtualServer(det_type, num_mods, fp, True, True)
|
||||
startReceiver(num_mods, fp, True)
|
||||
|
||||
Log(LogLevel.INFOBLUE, f'Waiting for server to start up and connect', fp)
|
||||
d = loadConfig(
|
||||
name=det_type,
|
||||
log_file_fp=fp,
|
||||
num_mods=num_mods,
|
||||
num_frames=1,
|
||||
num_interfaces=num_interfaces,
|
||||
)
|
||||
Log(LogLevel.INFOBLUE, f'Waiting for server to start up and connect', fp)
|
||||
d = loadConfig(
|
||||
name=det_type,
|
||||
log_file_fp=fp,
|
||||
num_mods=num_mods,
|
||||
num_frames=1,
|
||||
num_interfaces=num_interfaces,
|
||||
)
|
||||
|
||||
loadBasicSettings(name=det_type, d=d, fp=fp)
|
||||
loadBasicSettings(name=det_type, d=d, fp=fp)
|
||||
|
||||
yield det_type, num_interfaces, num_mods, d
|
||||
|
||||
cleanup(fp)
|
||||
yield det_type, num_interfaces, num_mods, d
|
||||
|
||||
cleanup(fp)
|
||||
|
||||
except Exception as e:
|
||||
Log(LogLevel.ERROR, f'Tests Failed.', fp)
|
||||
cleanup(fp)
|
||||
|
||||
def pytest_generate_tests(metafunc):
|
||||
if "session_simulator" not in metafunc.fixturenames:
|
||||
@@ -110,62 +127,4 @@ def pytest_generate_tests(metafunc):
|
||||
indirect=True
|
||||
)
|
||||
|
||||
'''
|
||||
for more specific parameters
|
||||
@pytest.mark.detectorintegration
|
||||
@pytest.mark.parametrize(
|
||||
"session_simulator",
|
||||
[
|
||||
("ctb", 1, 1),
|
||||
("xilinx_ctb", 1, 1),
|
||||
],
|
||||
indirect=True,
|
||||
)
|
||||
def test_define_reg(session_simulator):
|
||||
det_type, num_interfaces, num_mods, d = session_simulator
|
||||
'''
|
||||
|
||||
#helper fixture for servers
|
||||
@pytest.fixture(scope='module')
|
||||
def setup_parameters(request): # only setup once per module if same parameters used for the scopes
|
||||
try:
|
||||
servers, nmods = request.param # comes from @pytest.mark.parametrize(..., indirect=True)
|
||||
return servers, nmods
|
||||
except AttributeError:
|
||||
# fallback default if the test did not parametrize
|
||||
return (['eiger', 'jungfrau', 'mythen3', 'gotthard2', 'ctb', 'moench', 'xilinx_ctb'], 2)
|
||||
|
||||
@pytest.fixture(scope='module')
|
||||
def test_with_simulators(setup_parameters):
|
||||
""" Fixture to automatically setup virtual detector servers for testing. """
|
||||
|
||||
fp = sys.stdout
|
||||
|
||||
servers, nmods = setup_parameters
|
||||
print("servers:", servers)
|
||||
print("nmods:", nmods)
|
||||
try:
|
||||
for server in servers:
|
||||
for ninterfaces in range(1,2):
|
||||
if ninterfaces == 2 and server != 'jungfrau' and server != 'moench':
|
||||
continue
|
||||
|
||||
msg = f'Starting Python API Tests for {server}'
|
||||
|
||||
if server == 'jungfrau' or server == 'moench':
|
||||
msg += f' with {ninterfaces} interfaces'
|
||||
|
||||
Log(LogLevel.INFOBLUE, msg, fp)
|
||||
cleanup(fp)
|
||||
startDetectorVirtualServer(server, nmods, fp)
|
||||
startReceiver(nmods, fp)
|
||||
d = loadConfig(name=server, log_file_fp=fp, num_mods=nmods, num_frames=1, num_interfaces=ninterfaces)
|
||||
#loadBasicSettings(name=server, d=d, fp=fp)
|
||||
yield # run test
|
||||
cleanup(fp) # teardown
|
||||
except Exception as e:
|
||||
traceback.print_exc(file=fp)
|
||||
Log(LogLevel.ERROR, f'Tests Failed.', fp)
|
||||
cleanup(fp)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user