mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-12-23 04:41:19 +01:00
101 lines
2.7 KiB
Python
101 lines
2.7 KiB
Python
# SPDX-License-Identifier: LGPL-3.0-or-other
|
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
'''
|
|
This file is used to start up simulators and test for freeing shm and accessing it from python.
|
|
Run this using: pytest -s test_free.py
|
|
'''
|
|
|
|
from time import time
|
|
import pytest, sys, time
|
|
|
|
from slsdet import Detector, Ctb, freeSharedMemory
|
|
from slsdet.defines import DEFAULT_TCP_RX_PORTNO
|
|
from utils_for_test import (
|
|
Log,
|
|
LogLevel,
|
|
cleanup,
|
|
startDetectorVirtualServer,
|
|
startProcessInBackground,
|
|
loadConfig,
|
|
loadBasicSettings
|
|
)
|
|
|
|
def startReceiver(num_mods, fp):
|
|
if num_mods == 1:
|
|
cmd = ['slsReceiver']
|
|
else:
|
|
cmd = ['slsMultiReceiver', str(DEFAULT_TCP_RX_PORTNO), str(num_mods)]
|
|
# in 10.0.0
|
|
#cmd = ['slsMultiReceiver', '-p', str(DEFAULT_TCP_RX_PORTNO), '-n', str(num_mods)]
|
|
startProcessInBackground(cmd, fp)
|
|
time.sleep(1)
|
|
|
|
'''
|
|
scope = module =>Once per test file/module
|
|
to share expensive setup like startDetectorVirtualServer
|
|
'''
|
|
@pytest.fixture(scope="module")
|
|
def det_config():
|
|
return {
|
|
"name": "ctb",
|
|
"num_mods": 1
|
|
}
|
|
|
|
# autouse is false to pass explictly
|
|
@pytest.fixture(scope="module", autouse=False)
|
|
def setup_simulator(det_config):
|
|
"""Fixture to start the detector server once and clean up at the end."""
|
|
fp = sys.stdout
|
|
|
|
cleanup(fp)
|
|
# server
|
|
startDetectorVirtualServer(det_config["name"], det_config["num_mods"], fp)
|
|
# receiver
|
|
startReceiver(det_config["num_mods"], fp)
|
|
# config and basic settings
|
|
d = loadConfig(name=det_config["name"], rx_hostname="localhost", settingsdir="", fp=fp, num_mods=det_config["num_mods"])
|
|
loadBasicSettings(name=det_config["name"], d=d, fp=fp)
|
|
|
|
yield d # tests run here
|
|
|
|
cleanup(fp)
|
|
|
|
|
|
|
|
def test_parameters_file(setup_simulator):
|
|
d = setup_simulator
|
|
Log(LogLevel.INFOBLUE, f'\nRunning test_parameters_file')
|
|
|
|
assert isinstance(d, Detector)
|
|
|
|
with open("/tmp/params.det", "w") as f:
|
|
f.write("frames 2\n")
|
|
f.write("fwrite 1\n")
|
|
|
|
# this should not throw
|
|
d.parameters = "/tmp/params.det"
|
|
|
|
assert d.frames == 2
|
|
assert d.fwrite == 1
|
|
|
|
Log(LogLevel.INFOGREEN, f"✅ Test passed. Command: parameters")
|
|
|
|
|
|
def test_include_file(setup_simulator):
|
|
d = setup_simulator
|
|
Log(LogLevel.INFOBLUE, f'\test_include_file test_parameters_file')
|
|
|
|
assert isinstance(d, Detector)
|
|
|
|
with open("/tmp/params.det", "w") as f:
|
|
f.write("frames 3\n")
|
|
f.write("fwrite 0\n")
|
|
|
|
# this should not throw
|
|
d.include = "/tmp/params.det"
|
|
|
|
assert d.frames == 3
|
|
assert d.fwrite == 0
|
|
|
|
Log(LogLevel.INFOGREEN, f"✅ Test passed. Command: include")
|