From a57bd810da71d1da512b77f8ed904f2701305d3f Mon Sep 17 00:00:00 2001 From: "Janet L. Goldstein" <jgoldste@nrao.edu> Date: Wed, 15 Sep 2021 16:49:07 -0600 Subject: [PATCH] WS-651: addresses issues found in MR505 --- .../test/test_capability_service.py | 37 +++++++++---------- .../capability/services/capability_info.py | 10 ----- .../capability/services/capability_service.py | 13 +++---- .../capability/services/interfaces.py | 3 -- 4 files changed, 24 insertions(+), 39 deletions(-) diff --git a/shared/workspaces/test/test_capability_service.py b/shared/workspaces/test/test_capability_service.py index 95d58648e..84e2e4696 100644 --- a/shared/workspaces/test/test_capability_service.py +++ b/shared/workspaces/test/test_capability_service.py @@ -1,21 +1,22 @@ """ Unit tests for Capability Service """ - from unittest.mock import patch + # pylint: disable=C0301, E0401, R0201 import pytest -from workspaces.capability.schema import CapabilityExecution, CapabilityVersion +from workspaces.capability.schema import CapabilityExecution from workspaces.capability.services.capability_info import CapabilityInfo from workspaces.capability.services.capability_service import CapabilityService -from workspaces.workflow.schema import WorkflowRequest pytest_plugins = ["testing.utils.conftest"] @pytest.mark.usefixtures("mock_capability_service") class TestCapabilityService: + """Tests for CapabilityService methods""" + @pytest.mark.skip("Broken due to queue/messenger rework") def test_on_ingestion_complete( self, @@ -45,18 +46,19 @@ class TestCapabilityService: self, mock_capability_service: CapabilityService, mock_capability_info: CapabilityInfo, + mock_capability_execution: CapabilityExecution, ): """ - Are we catching the "carta-ready" message? + Are we catching the "carta-ready" message and saving the metadata + to the capability request version? :param mock_capability_service: stand-in for capability service :param mock_capability_info: stand-in for capability info + :param mock_capability_execution: stand-in for capability execution :return: """ wf_request_id = -1 - fake_request = WorkflowRequest(workflow_name="carta", workflow_request_id=wf_request_id) - fake_cr_version = CapabilityVersion(capability_request_id=wf_request_id) carta_url = "decartes_image_carta_url" fake_carta_ready_msg = { "service": "capability", @@ -64,21 +66,18 @@ class TestCapabilityService: "carta_url": carta_url, "subject": "Your CARTA Session is ready!", "type": "carta-ready", - "wf_request_id": wf_request_id, } save_entity_old_call_count = mock_capability_info.save_entity.call_count + + with patch( - "workspaces.capability.services.capability_info.CapabilityInfo.lookup_capability_request", - return_value=fake_request, + "workspaces.capability.services.capability_info.CapabilityInfo.lookup_execution_by_workflow_request_id", + return_value=mock_capability_execution, ): - with patch( - "workspaces.capability.services.capability_info.CapabilityInfo.lookup_capability_request_version", - return_value=fake_cr_version, - ) as mock_cr_version: - mock_capability_service.on_carta_ready(**fake_carta_ready_msg) - assert mock_capability_info.save_entity.call_count == save_entity_old_call_count + 1 - mock_cr_version.assert_called() - - (request,) = mock_capability_info.save_entity.call_args.args - assert request.carta_url == carta_url + mock_capability_service.on_carta_ready(wf_request_id, **fake_carta_ready_msg) + assert mock_capability_info.save_entity.call_count == save_entity_old_call_count + 1 + + (request_version,) = mock_capability_info.save_entity.call_args.args + assert request_version.version_number > 0 + assert request_version.workflow_metadata["carta_url"] == carta_url diff --git a/shared/workspaces/workspaces/capability/services/capability_info.py b/shared/workspaces/workspaces/capability/services/capability_info.py index 8d60da941..fb7fef6fc 100644 --- a/shared/workspaces/workspaces/capability/services/capability_info.py +++ b/shared/workspaces/workspaces/capability/services/capability_info.py @@ -196,16 +196,6 @@ class CapabilityInfo(CapabilityInfoIF): """ return self.session.query(CapabilityRequest).filter_by(id=request_id).first() - def lookup_capability_request_version(self, request_id: int) -> CapabilityVersion: - """ - Finds the capability request version with the provided request ID - - :param request_id: capability request ID of interest - - :return: - """ - return self.session.query(CapabilityVersion).filter_by(capability_request_id=request_id).first() - def lookup_capability_execution(self, execution_id: int) -> CapabilityExecution: """ Finds the capability execution with the provided request ID diff --git a/shared/workspaces/workspaces/capability/services/capability_service.py b/shared/workspaces/workspaces/capability/services/capability_service.py index ad7b0dd10..a0c05f22f 100644 --- a/shared/workspaces/workspaces/capability/services/capability_service.py +++ b/shared/workspaces/workspaces/capability/services/capability_service.py @@ -162,7 +162,7 @@ class CapabilityService(CapabilityServiceIF): self.capability_info.save_entity(request) @on_message(type="carta-ready") - def on_carta_ready(self, **message: Dict[str, str]): + def on_carta_ready(self, wf_request_id: int, **message: Dict[str, str]): """ Catch the RH-flavored event and save it to the capability request version metadata @@ -170,14 +170,13 @@ class CapabilityService(CapabilityServiceIF): :return: """ logger.info(f"RECEIVED CARTA READY MESSAGE: {message}") - wf_request_id = int(message["wf_request_id"]) - request = self.capability_info.lookup_capability_request(wf_request_id) - request_version = self.capability_info.lookup_capability_request_version(wf_request_id) - request.version_number = request_version - request.carta_url = message["carta_url"] + execution = self.capability_info.lookup_execution_by_workflow_request_id(wf_request_id) + request = execution.capability_request + request_version = request.current_version + request_version.workflow_metadata = {"carta_url": message["carta_url"]} - self.capability_info.save_entity(request) + self.capability_info.save_entity(request_version) class CapabilityLauncher: diff --git a/shared/workspaces/workspaces/capability/services/interfaces.py b/shared/workspaces/workspaces/capability/services/interfaces.py index 236693fa9..9005f9b95 100644 --- a/shared/workspaces/workspaces/capability/services/interfaces.py +++ b/shared/workspaces/workspaces/capability/services/interfaces.py @@ -169,9 +169,6 @@ class CapabilityInfoIF(QueueReporterIF, metaclass=ABCMeta): def lookup_capability_request(self, request_id) -> CapabilityRequestIF: raise NotImplementedError - @abstractmethod - def lookup_capability_request_version(self, request_id) -> CapabilityRequestIF: - raise NotImplementedError @abstractmethod def lookup_execution(self, execution_id: int) -> CapabilityExecutionIF: -- GitLab