Source code for blissoda.tests.test_xrpd

import re

import pytest

from ..xrpd.processor import XrpdProcessor


[docs] def test_lima_conflicts(mock_persistent, mock_processing_triggers): config = { "name": "xrpd_processor1", "plugin": "generic", "class": "XrpdProcessor", "package": "blissoda.xrpd.processor", "default_parameters": {"lima_names": ["unknown_detector1"], "_enabled": True}, "shared": False, "singleton": False, } xrpd_processor1 = XrpdProcessor(config=config) assert xrpd_processor1.lima_names == ["unknown_detector1"] assert xrpd_processor1.get_all_lima_names() == {"unknown_detector1"} config = { "name": "xrpd_processor2", "plugin": "generic", "class": "XrpdProcessor", "package": "blissoda.xrpd.processor", "default_parameters": {"lima_names": ["unknown_detector2"], "_enabled": True}, "shared": False, "singleton": False, } xrpd_processor2 = XrpdProcessor(config=config) assert xrpd_processor2.lima_names == ["unknown_detector2"] assert xrpd_processor1.get_all_lima_names() == { "unknown_detector1", "unknown_detector2", } assert xrpd_processor2.get_all_lima_names() == { "unknown_detector1", "unknown_detector2", } config = { "name": "xrpd_processor3", "plugin": "generic", "class": "XrpdProcessor", "package": "blissoda.xrpd.processor", "default_parameters": {"lima_names": ["unknown_detector2"], "_enabled": True}, "shared": False, "singleton": False, } # Fails to instantiate with conflicting Lima name expected_error = re.escape( "Lima detectors ['unknown_detector2'] are already processed by another XrpdProcessor" ) with pytest.raises(ValueError, match=expected_error): _ = XrpdProcessor(config=config) # Succeeds to instantiate because Lima name is no longer used del xrpd_processor2 xrpd_processor3 = XrpdProcessor(config=config) assert xrpd_processor3.lima_names == ["unknown_detector2"] assert xrpd_processor1.get_all_lima_names() == { "unknown_detector1", "unknown_detector2", } assert xrpd_processor3.get_all_lima_names() == { "unknown_detector1", "unknown_detector2", } # Fails to set Lima name because of conflict expected_error = re.escape( "Lima detectors ['unknown_detector1'] are already processed by another XrpdProcessor" ) with pytest.raises(ValueError, match=expected_error): xrpd_processor3.lima_names = ["unknown_detector1"] # Succeeds to set Lima name because Lima name is no longer used del xrpd_processor1 xrpd_processor3.lima_names = ["unknown_detector1"] assert xrpd_processor3.lima_names == ["unknown_detector1"] assert xrpd_processor3.get_all_lima_names() == {"unknown_detector1"} # Succeeds to instantiate because processor is enabled config = { "name": "xrpd_processor4", "plugin": "generic", "class": "XrpdProcessor", "package": "blissoda.xrpd.processor", "default_parameters": { "lima_names": ["unknown_detector1"], }, "shared": False, "singleton": False, } xrpd_processor4 = XrpdProcessor(config=config) assert xrpd_processor3.get_all_lima_names() == {"unknown_detector1"} assert xrpd_processor4.get_all_lima_names() == {"unknown_detector1"} # Failes to enable the processing with conflicting Lima name expected_error = re.escape( "Lima detectors ['unknown_detector1'] are already processed by another XrpdProcessor" ) with pytest.raises(ValueError, match=expected_error): xrpd_processor4.enable()