test: fixed scihub tests

This commit is contained in:
wakonig_k 2023-04-10 21:07:09 +02:00
parent b65259d449
commit 13e77ba2e3
6 changed files with 39 additions and 27 deletions

View File

@ -95,3 +95,6 @@ class SciBecConnector:
except (ConnectionError, SciBecError) as exc: except (ConnectionError, SciBecError) as exc:
self.scibec = None self.scibec = None
return return
def shutdown(self):
pass

View File

@ -18,4 +18,9 @@ class SciHub(BECService):
self.scibec_connector = SciBecConnector(self, self.connector) self.scibec_connector = SciBecConnector(self, self.connector)
def _start_scilog_connector(self): def _start_scilog_connector(self):
self.scibec_connector = SciLogConnector(self.connector) self.scilog_connector = SciLogConnector(self.connector)
def shutdown(self):
super().shutdown()
self.scibec_connector.shutdown()
self.scilog_connector.shutdown()

View File

@ -67,6 +67,9 @@ class SciLogConnector:
if self.host and self.user and self.user_secret: if self.host and self.user and self.user_secret:
self._configured = True self._configured = True
def shutdown(self):
self._scilog_thread.stop()
class RepeatedTimer: class RepeatedTimer:
def __init__(self, interval, function, *args, **kwargs): def __init__(self, interval, function, *args, **kwargs):

View File

@ -116,13 +116,13 @@ def test_config_handler_set_config_with_scibec(SciHubMock):
msg = BECMessage.DeviceConfigMessage( msg = BECMessage.DeviceConfigMessage(
action="set", config={"samx": {"enabled": True}}, metadata={} action="set", config={"samx": {"enabled": True}}, metadata={}
) )
scibec_connector.scibec_info = {"beamline": {"info": []}} scibec_connector.scibec_info = {"beamline": {"info": [], "activeExperiment": "12345"}}
with mock.patch.object(scibec_connector, "scibec") as scibec: with mock.patch.object(scibec_connector, "scibec") as scibec:
with mock.patch.object(config_handler, "send_config_request_reply") as req_reply: with mock.patch.object(config_handler, "send_config_request_reply") as req_reply:
with mock.patch.object(scibec_connector, "update_session") as update_session: with mock.patch.object(scibec_connector, "update_session") as update_session:
config_handler._set_config(msg) config_handler._set_config(msg)
scibec.set_session_data.assert_called_once_with( scibec.set_session_data.assert_called_once_with(
{"info": []}, {"samx": {"enabled": True}} "12345", {"samx": {"enabled": True}}
) )
req_reply.assert_called_once_with(accepted=True, error_msg=None, metadata={}) req_reply.assert_called_once_with(accepted=True, error_msg=None, metadata={})
update_session.assert_called_once() update_session.assert_called_once()

View File

@ -8,6 +8,11 @@ from scihub import SciHub
from scihub.scibec import SciBecConnector from scihub.scibec import SciBecConnector
class SciHubMocked(SciHub):
def _start_metrics_emitter(self):
pass
@pytest.fixture() @pytest.fixture()
def SciHubMock(): def SciHubMock():
config = ServiceConfig( config = ServiceConfig(
@ -15,7 +20,9 @@ def SciHubMock():
scibec={"host": "http://localhost", "port": 3030, "beamline": "TestBeamline"}, scibec={"host": "http://localhost", "port": 3030, "beamline": "TestBeamline"},
config={"file_writer": {"plugin": "default_NeXus_format", "base_path": "./"}}, config={"file_writer": {"plugin": "default_NeXus_format", "base_path": "./"}},
) )
return SciHub(config, ConnectorMock) scihub_mocked = SciHubMocked(config, ConnectorMock)
yield scihub_mocked
scihub_mocked.shutdown()
def test_scibec_connector(SciHubMock): def test_scibec_connector(SciHubMock):
@ -24,9 +31,10 @@ def test_scibec_connector(SciHubMock):
def test_get_current_session_with_SciBec(SciHubMock): def test_get_current_session_with_SciBec(SciHubMock):
scibec_connector = SciBecConnector(SciHubMock, SciHubMock.connector) scibec_connector = SciBecConnector(SciHubMock, SciHubMock.connector)
scibec_connector.scibec_info["beamline"] = {"activeSession": "12345"} scibec_connector.scibec_info["beamline"] = {"activeExperiment": "12345"}
with mock.patch.object(scibec_connector, "scibec") as scibec: with mock.patch.object(scibec_connector, "scibec") as scibec:
scibec_connector.get_current_session() scibec_connector.get_current_session()
scibec.get_experiment_by_id.assert_called_once()
scibec.get_session_by_id.assert_called_once() scibec.get_session_by_id.assert_called_once()

View File

@ -79,38 +79,31 @@ def test_delete_beamline():
delete_request.assert_called_once_with(f"{scibec.url}/beamlines/beamlineID") delete_request.assert_called_once_with(f"{scibec.url}/beamlines/beamlineID")
def test_update_session_with_file(): # def test_update_session_with_file():
scibec = SciBec() # scibec = SciBec()
file_path = f"{dir_path}/tests/test_config.yaml" # file_path = f"{dir_path}/tests/test_config.yaml"
with mock.patch.object(scibec, "get_beamlines", return_value=[]): # with mock.patch.object(scibec, "get_beamlines", return_value=[]):
scibec.update_session_with_file(file_path) # scibec.update_session_with_file(file_path)
with mock.patch.object(scibec, "get_beamlines", return_value=[{"name": "test_beamline"}]): # with mock.patch.object(scibec, "get_beamlines", return_value=[{"name": "test_beamline"}]):
with mock.patch.object(scibec, "add_session", return_value={"id": "sessionID"}): # with mock.patch.object(scibec, "add_session", return_value={"id": "sessionID"}):
with mock.patch.object(scibec, "set_current_session") as set_session: # with mock.patch.object(scibec, "set_current_session") as set_session:
with mock.patch.object(scibec, "add_device"): # with mock.patch.object(scibec, "add_device"):
scibec.update_session_with_file(file_path) # scibec.update_session_with_file(file_path)
def test_set_current_session(): def test_set_current_session():
scibec = SciBec() scibec = SciBec()
with mock.patch.object(scibec, "get_beamline", return_value=[]): with mock.patch.object(scibec, "get_experiment_by_id", return_value=[]):
with pytest.raises(SciBecError): with pytest.raises(SciBecError):
scibec.set_current_session("test_beamline", "demo") scibec.set_current_session("exp_id_1234", "demo")
with mock.patch.object(
scibec,
"get_beamline",
return_value=[{"name": "test_beamline", "sessions": []}],
):
with pytest.raises(SciBecError):
scibec.set_current_session("test_beamline", "demo")
with mock.patch.object( with mock.patch.object(
scibec, scibec,
"get_beamlines", "get_experiment_by_id",
return_value=[ return_value=[
{ {
"name": "test_beamline", "name": "test_experiment",
"id": "beamlineID", "id": "exp_id_1234",
"sessions": [{"id": "sessionID", "name": "demo"}], "sessions": [{"id": "sessionID", "name": "demo"}],
} }
], ],