Source code for blissoda.demo.tests.itest_stop_scan
import numpy
from ...bliss_globals import setup_globals
from ...version_utils import has_minimal_version
from .. import testing
from ..processors.stop_scan import DemoPreset
[docs]
@testing.integration_test
def test_stop_scan():
if not has_minimal_version("bliss", "2.2"):
testing.skip_integration_test("Requires bliss>=2.2")
expo = 0.2
detectors = [setup_globals.diode1, setup_globals.difflab6]
# Stop criterium is based the total sum of all data of several detectors.
# Get a reasonable limit for the total.
scan = setup_globals.ct(expo, *detectors)
max_difflab6 = numpy.nanmax(scan.streams["difflab6:image"][:])
max_diode1 = numpy.nanmax(
scan.streams["simulation_diode_sampling_controller:diode1"][:]
)
lima_limits = {"difflab6": float(max_difflab6 * 5)}
scalar_counter_limits = {"diode1": float(max_diode1 * 5)}
# Scan with preset to start/stop data processing and handle feedback streamed through Redis.
p = DemoPreset(lima_limits, scalar_counter_limits)
scan = setup_globals.loopscan(100, expo, *detectors, run=False)
scan.acq_chain.add_preset(p)
scan.run()
# Check that the scan stopped early
for name in ("difflab6:image", "simulation_diode_sampling_controller:diode1"):
npoints = len(scan.streams[name])
assert (
npoints < 20
), f"Stream {name:!r} has {npoints} which is more than expected"