mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-11 04:17:15 +02:00
more tests
This commit is contained in:
@ -3,31 +3,148 @@ import subprocess
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
sys.path.append(os.path.join(os.getcwd(), 'bin'))
|
||||
from sls_detector import ExperimentalDetector
|
||||
import datetime as dt
|
||||
|
||||
sys.path.append(os.path.join(os.getcwd(), "bin"))
|
||||
from sls_detector import ExperimentalDetector, detectorSettings
|
||||
|
||||
n_detectors = 3
|
||||
start_port = 1952
|
||||
port_step = 3
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def virtual_jf_detectors(request):
|
||||
print('Setting up virtual detectors')
|
||||
"""
|
||||
Fixture that is run once for the module
|
||||
will launch virtual servers and clean up
|
||||
after
|
||||
"""
|
||||
print("Setting up virtual detectors")
|
||||
|
||||
# Ensure that no detector servers are running
|
||||
subprocess.run(["killall", "jungfrauDetectorServer_virtual"])
|
||||
virtual_jf_detectors = []
|
||||
virtual_jf_detectors.append(subprocess.Popen('bin/jungfrauDetectorServer_virtual'))
|
||||
time.sleep(5)
|
||||
|
||||
# Ensure no shared memory exists before tests start
|
||||
d = ExperimentalDetector()
|
||||
d.free()
|
||||
|
||||
# Start servers
|
||||
virtual_jf_detectors = [
|
||||
subprocess.Popen(
|
||||
[
|
||||
"bin/jungfrauDetectorServer_virtual",
|
||||
"--port",
|
||||
f"{start_port+port_step*i}",
|
||||
]
|
||||
)
|
||||
for i in range(n_detectors)
|
||||
]
|
||||
|
||||
# Allow server startup to complete
|
||||
time.sleep(3)
|
||||
|
||||
def fin():
|
||||
print("Cleaning up virtual detectors")
|
||||
d = ExperimentalDetector()
|
||||
d.free()
|
||||
subprocess.run(["killall", "jungfrauDetectorServer_virtual"])
|
||||
|
||||
|
||||
|
||||
request.addfinalizer(fin)
|
||||
return virtual_jf_detectors # provide the fixture value
|
||||
|
||||
|
||||
def test_shmid(virtual_jf_detectors):
|
||||
d = ExperimentalDetector()
|
||||
assert d.getShmId() == 0
|
||||
d.free()
|
||||
|
||||
d = ExperimentalDetector(73)
|
||||
assert d.getShmId() == 73
|
||||
d.free()
|
||||
|
||||
|
||||
def test_hostname(virtual_jf_detectors):
|
||||
d = ExperimentalDetector()
|
||||
d.hostname = 'localhost'
|
||||
assert d.hostname == 'localhost'
|
||||
d.hostname = "localhost"
|
||||
assert d.hostname == ["localhost"]
|
||||
|
||||
d.hostname = [f"localhost:{start_port+i*port_step}" for i in range(n_detectors)]
|
||||
assert d.hostname == ["localhost"] * n_detectors
|
||||
|
||||
|
||||
def test_fwversion(virtual_jf_detectors):
|
||||
d = ExperimentalDetector()
|
||||
assert d.detectorversion == 0 #Firmware of virtual detector
|
||||
assert d.detectorversion == 0 # Firmware of virtual detector
|
||||
assert d.getFirmwareVersion() == [0] * n_detectors
|
||||
|
||||
|
||||
def test_len(virtual_jf_detectors):
|
||||
d = ExperimentalDetector()
|
||||
assert len(d) == n_detectors
|
||||
assert d.size() == n_detectors
|
||||
|
||||
|
||||
def test_module_geometry(virtual_jf_detectors):
|
||||
d = ExperimentalDetector()
|
||||
geo = d.module_geometry
|
||||
assert geo.x == 1
|
||||
assert geo.y == 3
|
||||
|
||||
|
||||
def test_module_size(virtual_jf_detectors):
|
||||
d = ExperimentalDetector()
|
||||
geo = d.module_size
|
||||
assert geo.x == 1024
|
||||
assert geo.y == 512
|
||||
|
||||
|
||||
def test_settings(virtual_jf_detectors):
|
||||
d = ExperimentalDetector()
|
||||
assert d.settings == detectorSettings.DYNAMICGAIN
|
||||
|
||||
gain_list = [
|
||||
detectorSettings.FIXGAIN1,
|
||||
detectorSettings.FIXGAIN2,
|
||||
detectorSettings.FORCESWITCHG1,
|
||||
detectorSettings.FORCESWITCHG2,
|
||||
detectorSettings.DYNAMICHG0,
|
||||
detectorSettings.DYNAMICGAIN,
|
||||
]
|
||||
|
||||
# Set all viable gain for Jungfrau to make sure nothing is crashing
|
||||
for gain in gain_list:
|
||||
d.settings = gain
|
||||
assert d.settings == gain
|
||||
|
||||
d.setSettings(detectorSettings.FORCESWITCHG1, [1])
|
||||
assert d.settings == [
|
||||
detectorSettings.DYNAMICGAIN,
|
||||
detectorSettings.FORCESWITCHG1,
|
||||
detectorSettings.DYNAMICGAIN,
|
||||
]
|
||||
|
||||
d.settings = detectorSettings.DYNAMICGAIN
|
||||
assert d.settings == detectorSettings.DYNAMICGAIN
|
||||
|
||||
def test_frames(virtual_jf_detectors):
|
||||
d = ExperimentalDetector()
|
||||
d.frames = 10
|
||||
assert d.frames == 10
|
||||
|
||||
# def test_triggers(virtual_jf_detectors):
|
||||
|
||||
def test_exptime(virtual_jf_detectors):
|
||||
d = ExperimentalDetector()
|
||||
|
||||
#default value
|
||||
assert d.exptime == 1e-5
|
||||
|
||||
d.exptime = 1.5
|
||||
assert d.exptime == 1.5
|
||||
|
||||
t = dt.timedelta(microseconds=10)
|
||||
d.exptime = t
|
||||
assert d.exptime == 10e-6
|
||||
|
||||
|
Reference in New Issue
Block a user