From a41acc89a8c7177014d1377c4457cd402ed7ee93 Mon Sep 17 00:00:00 2001 From: FrancescoFioraEst Date: Thu, 11 Nov 2021 14:57:23 +0000 Subject: Add support transaction in CL and ServiceTemplate Providers Add support transaction in ControlLoopProvider and ServiceTemplateProvider Issue-ID: POLICY-3798 Change-Id: I0ab79f28231e329e06c16e01427775077b3ac994 Signed-off-by: FrancescoFioraEst --- .../commissioning/CommissioningProviderTest.java | 193 +++-------- .../rest/CommissioningControllerTest.java | 25 +- .../ControlLoopInstantiationProviderTest.java | 352 ++++++++------------- .../rest/InstantiationControllerTest.java | 55 +++- .../runtime/monitoring/TestMonitoringProvider.java | 36 +-- .../supervision/SupervisionHandlerTest.java | 11 +- .../supervision/SupervisionScannerTest.java | 18 +- .../supervision/comm/SupervisionMessagesTest.java | 62 +++- 8 files changed, 311 insertions(+), 441 deletions(-) (limited to 'runtime-controlloop/src/test') diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java index 22fb51cb5..843985e7d 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java @@ -22,27 +22,24 @@ package org.onap.policy.clamp.controlloop.runtime.commissioning; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper; -import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider; import org.onap.policy.clamp.controlloop.runtime.instantiation.InstantiationUtils; -import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup; -import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData; import org.onap.policy.common.utils.coder.Coder; import org.onap.policy.common.utils.coder.StandardCoder; -import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.tosca.authorative.concepts.ToscaCapabilityType; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; import org.onap.policy.models.tosca.authorative.concepts.ToscaDataType; @@ -58,23 +55,10 @@ class CommissioningProviderTest { "src/test/resources/rest/servicetemplates/pmsh_multiple_cl_tosca.yaml"; private static final String COMMON_TOSCA_SERVICE_TEMPLATE_YAML = "src/test/resources/rest/servicetemplates/full-tosca-with-common-properties.yaml"; - private static final String TEMPLATE_IS_NULL = ".*serviceTemplate is marked non-null but is null"; - private PolicyModelsProvider modelsProvider = null; - private ControlLoopProvider clProvider = null; private static final Coder CODER = new StandardCoder(); private final ObjectMapper mapper = new ObjectMapper(); - @AfterEach - void close() throws Exception { - if (modelsProvider != null) { - modelsProvider.close(); - } - if (clProvider != null) { - clProvider.close(); - } - } - /** * Test the fetching of control loop definitions (ToscaServiceTemplates). * @@ -82,35 +66,20 @@ class CommissioningProviderTest { */ @Test void testGetControlLoopDefinitions() throws Exception { - ClRuntimeParameterGroup clRuntimeParameterGroup = CommonTestData.geParameterGroup("getCLDefinitions"); - modelsProvider = - CommonTestData.getPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); - clProvider = new ControlLoopProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); + var clProvider = mock(ControlLoopProvider.class); var participantProvider = mock(ParticipantProvider.class); + var serviceTemplateProvider = mock(ServiceTemplateProvider.class); - CommissioningProvider provider = new CommissioningProvider(new ServiceTemplateProvider(modelsProvider), - clProvider, null, participantProvider); - ToscaServiceTemplate serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML); + CommissioningProvider provider = + new CommissioningProvider(serviceTemplateProvider, clProvider, null, participantProvider); List listOfTemplates = provider.getControlLoopDefinitions(null, null); assertThat(listOfTemplates).isEmpty(); - provider.createControlLoopDefinitions(serviceTemplate); + when(clProvider.getFilteredNodeTemplates(any())) + .thenReturn(List.of(new ToscaNodeTemplate(), new ToscaNodeTemplate())); listOfTemplates = provider.getControlLoopDefinitions(null, null); assertThat(listOfTemplates).hasSize(2); - - // Test Filtering - listOfTemplates = provider.getControlLoopDefinitions("org.onap.domain.pmsh.PMSHControlLoopDefinition", "1.2.3"); - assertThat(listOfTemplates).hasSize(1); - for (ToscaNodeTemplate template : listOfTemplates) { - // Other CL elements contain PMSD instead of PMSH in their name - assertThat(template.getName()).doesNotContain("PMSD"); - } - - // Test Wrong Name - listOfTemplates = provider.getControlLoopDefinitions("WrongControlLoopName", "0.0.0"); - assertThat(listOfTemplates).isEmpty(); - } /** @@ -120,25 +89,27 @@ class CommissioningProviderTest { */ @Test void testCreateControlLoopDefinitions() throws Exception { - ClRuntimeParameterGroup clRuntimeParameterGroup = CommonTestData.geParameterGroup("createCLDefinitions"); - modelsProvider = - CommonTestData.getPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); - clProvider = new ControlLoopProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); + var serviceTemplateProvider = mock(ServiceTemplateProvider.class); + var clProvider = mock(ControlLoopProvider.class); var participantProvider = mock(ParticipantProvider.class); - CommissioningProvider provider = new CommissioningProvider(new ServiceTemplateProvider(modelsProvider), - clProvider, null, participantProvider); - // Test Service template is null - assertThatThrownBy(() -> provider.createControlLoopDefinitions(null)).hasMessageMatching(TEMPLATE_IS_NULL); + CommissioningProvider provider = + new CommissioningProvider(serviceTemplateProvider, clProvider, null, participantProvider); + List listOfTemplates = provider.getControlLoopDefinitions(null, null); assertThat(listOfTemplates).isEmpty(); ToscaServiceTemplate serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML); + when(serviceTemplateProvider.createServiceTemplate(serviceTemplate)).thenReturn(serviceTemplate); // Response should return the number of node templates present in the service template List affectedDefinitions = provider.createControlLoopDefinitions(serviceTemplate).getAffectedControlLoopDefinitions(); assertThat(affectedDefinitions).hasSize(13); + + when(clProvider.getFilteredNodeTemplates(any())) + .thenReturn(List.of(new ToscaNodeTemplate(), new ToscaNodeTemplate())); + listOfTemplates = provider.getControlLoopDefinitions(null, null); assertThat(listOfTemplates).hasSize(2); } @@ -150,18 +121,20 @@ class CommissioningProviderTest { */ @Test void testGetToscaServiceTemplate() throws Exception { - ClRuntimeParameterGroup clRuntimeParameterGroup = CommonTestData.geParameterGroup("getCLDefinitions"); - modelsProvider = - CommonTestData.getPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); - clProvider = new ControlLoopProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); + var serviceTemplateProvider = mock(ServiceTemplateProvider.class); + var clProvider = mock(ControlLoopProvider.class); var participantProvider = mock(ParticipantProvider.class); - CommissioningProvider provider = new CommissioningProvider(new ServiceTemplateProvider(modelsProvider), - clProvider, null, participantProvider); + CommissioningProvider provider = + new CommissioningProvider(serviceTemplateProvider, clProvider, null, participantProvider); ToscaServiceTemplate serviceTemplate = InstantiationUtils.getToscaServiceTemplate(COMMON_TOSCA_SERVICE_TEMPLATE_YAML); + when(serviceTemplateProvider.createServiceTemplate(serviceTemplate)).thenReturn(serviceTemplate); provider.createControlLoopDefinitions(serviceTemplate); + verify(serviceTemplateProvider).createServiceTemplate(serviceTemplate); + + when(serviceTemplateProvider.getToscaServiceTemplate(eq(null), eq(null))).thenReturn(serviceTemplate); ToscaServiceTemplate returnedServiceTemplate = provider.getToscaServiceTemplate(null, null); assertThat(returnedServiceTemplate).isNotNull(); @@ -179,19 +152,20 @@ class CommissioningProviderTest { */ @Test void testGetToscaServiceTemplateReduced() throws Exception { - ClRuntimeParameterGroup clRuntimeParameterGroup = CommonTestData.geParameterGroup("getCLDefinitions"); - modelsProvider = - CommonTestData.getPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); - clProvider = new ControlLoopProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); + var serviceTemplateProvider = mock(ServiceTemplateProvider.class); + var clProvider = mock(ControlLoopProvider.class); var participantProvider = mock(ParticipantProvider.class); - CommissioningProvider provider = new CommissioningProvider(new ServiceTemplateProvider(modelsProvider), - clProvider, null, participantProvider); + CommissioningProvider provider = + new CommissioningProvider(serviceTemplateProvider, clProvider, null, participantProvider); ToscaServiceTemplate serviceTemplate = InstantiationUtils.getToscaServiceTemplate(COMMON_TOSCA_SERVICE_TEMPLATE_YAML); + when(serviceTemplateProvider.createServiceTemplate(serviceTemplate)).thenReturn(serviceTemplate); provider.createControlLoopDefinitions(serviceTemplate); + when(serviceTemplateProvider.getServiceTemplateList(any(), any())).thenReturn(List.of(serviceTemplate)); + String returnedServiceTemplate = provider.getToscaServiceTemplateReduced(null, null); assertThat(returnedServiceTemplate).isNotNull(); ToscaServiceTemplate parsedServiceTemplate = CODER.decode(returnedServiceTemplate, ToscaServiceTemplate.class); @@ -207,17 +181,15 @@ class CommissioningProviderTest { */ @Test void testGetToscaServiceTemplateSchema() throws Exception { - - ClRuntimeParameterGroup clRuntimeParameterGroup = CommonTestData.geParameterGroup("getCLDefinitions"); - modelsProvider = - CommonTestData.getPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); - clProvider = new ControlLoopProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); + var serviceTemplateProvider = mock(ServiceTemplateProvider.class); + var clProvider = mock(ControlLoopProvider.class); var participantProvider = mock(ParticipantProvider.class); - CommissioningProvider provider = new CommissioningProvider(new ServiceTemplateProvider(modelsProvider), - clProvider, null, participantProvider); + CommissioningProvider provider = + new CommissioningProvider(serviceTemplateProvider, clProvider, null, participantProvider); ToscaServiceTemplate serviceTemplate = InstantiationUtils.getToscaServiceTemplate(COMMON_TOSCA_SERVICE_TEMPLATE_YAML); + when(serviceTemplateProvider.createServiceTemplate(serviceTemplate)).thenReturn(serviceTemplate); provider.createControlLoopDefinitions(serviceTemplate); @@ -246,89 +218,4 @@ class CommissioningProviderTest { assertThat(localServiceTemplateSchema).isEqualTo(returnedServiceTemplateSchema); } } - - /** - * Test the deletion of control loop definitions (ToscaServiceTemplate). - * - * @throws Exception . - */ - @Test - void testDeleteControlLoopDefinitions() throws Exception { - ClRuntimeParameterGroup clRuntimeParameterGroup = CommonTestData.geParameterGroup("deleteCLDefinitions"); - modelsProvider = - CommonTestData.getPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); - clProvider = new ControlLoopProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); - var participantProvider = mock(ParticipantProvider.class); - - CommissioningProvider provider = new CommissioningProvider(new ServiceTemplateProvider(modelsProvider), - clProvider, null, participantProvider); - ToscaServiceTemplate serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML); - - List listOfTemplates = provider.getControlLoopDefinitions(null, null); - assertThat(listOfTemplates).isEmpty(); - - provider.createControlLoopDefinitions(serviceTemplate); - listOfTemplates = provider.getControlLoopDefinitions(null, null); - assertThat(listOfTemplates).hasSize(2); - - provider.deleteControlLoopDefinition(serviceTemplate.getName(), serviceTemplate.getVersion()); - listOfTemplates = provider.getControlLoopDefinitions(null, null); - assertThat(listOfTemplates).isEmpty(); - } - - /** - * Test the fetching of control loop element definitions. - * - * @throws Exception . - */ - @Test - void testGetControlLoopElementDefinitions() throws Exception { - ClRuntimeParameterGroup clRuntimeParameterGroup = CommonTestData.geParameterGroup("getCLElDefinitions"); - modelsProvider = - CommonTestData.getPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); - clProvider = new ControlLoopProvider(clRuntimeParameterGroup.getDatabaseProviderParameters()); - var participantProvider = mock(ParticipantProvider.class); - - CommissioningProvider provider = new CommissioningProvider(new ServiceTemplateProvider(modelsProvider), - clProvider, null, participantProvider); - ToscaServiceTemplate serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML); - - provider.getControlLoopDefinitions(null, null); - - provider.createControlLoopDefinitions(serviceTemplate); - List controlLoopDefinitionList = - provider.getControlLoopDefinitions("org.onap.domain.pmsh.PMSHControlLoopDefinition", "1.2.3"); - - List controlLoopElementNodeTemplates = - provider.getControlLoopElementDefinitions(controlLoopDefinitionList.get(0)); - - // 4 PMSH control loop elements definitions. - assertThat(controlLoopElementNodeTemplates).hasSize(4); - - List derivedTypes = getDerivedNodeTypes(serviceTemplate); - for (ToscaNodeTemplate template : controlLoopElementNodeTemplates) { - assertTrue(checkNodeType(template, derivedTypes)); - } - } - - private boolean checkNodeType(ToscaNodeTemplate template, List derivedNodeTypes) { - String controlLoopElementType = "org.onap.policy.clamp.controlloop.ControlLoopElement"; - for (ToscaNodeType derivedType : derivedNodeTypes) { - if (template.getType().equals(derivedType.getName()) || template.getType().equals(controlLoopElementType)) { - return true; - } - } - return false; - } - - private List getDerivedNodeTypes(ToscaServiceTemplate serviceTemplate) { - String type = "org.onap.policy.clamp.controlloop.ControlLoopElement"; - List nodeTypes = new ArrayList<>(); - for (ToscaNodeType nodeType : serviceTemplate.getNodeTypes().values()) { - if (nodeType.getDerivedFrom().equals(type)) { - nodeTypes.add(nodeType); - } - } - return nodeTypes; - } } diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java index 9d1435e7c..e4a121439 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java @@ -93,8 +93,7 @@ class CommissioningControllerTest extends CommonRestController { @AfterEach public void cleanDatabase() throws Exception { - deleteEntryInDB(serviceTemplate.getName(), serviceTemplate.getVersion()); - deleteEntryInDB(commonPropertiesServiceTemplate.getName(), commonPropertiesServiceTemplate.getVersion()); + deleteEntryInDB(); } @Test @@ -272,33 +271,33 @@ class CommissioningControllerTest extends CommonRestController { @Test void testDelete() throws Exception { - createEntryInDB(); + var serviceTemplateCreated = createEntryInDB(); Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT + "?name=" - + serviceTemplate.getName() + "&version=" + serviceTemplate.getVersion()); + + serviceTemplateCreated.getName() + "&version=" + serviceTemplateCreated.getVersion()); // Call delete with no info Response resp = invocationBuilder.delete(); assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus()); - List templatesInDB = serviceTemplateProvider.getServiceTemplateList(null, null); + List templatesInDB = serviceTemplateProvider.getAllServiceTemplates(); assertThat(templatesInDB).isEmpty(); - } - private synchronized void createEntryInDB() throws Exception { - deleteEntryInDB(commonPropertiesServiceTemplate.getName(), commonPropertiesServiceTemplate.getVersion()); - serviceTemplateProvider.createServiceTemplate(serviceTemplate); + private synchronized ToscaServiceTemplate createEntryInDB() throws Exception { + deleteEntryInDB(); + return serviceTemplateProvider.createServiceTemplate(serviceTemplate); } // Delete entries from the DB after relevant tests - private synchronized void deleteEntryInDB(String name, String version) throws Exception { - if (!serviceTemplateProvider.getServiceTemplateList(null, null).isEmpty()) { - serviceTemplateProvider.deleteServiceTemplate(name, version); + private synchronized void deleteEntryInDB() throws Exception { + var list = serviceTemplateProvider.getAllServiceTemplates(); + if (!list.isEmpty()) { + serviceTemplateProvider.deleteServiceTemplate(list.get(0).getName(), list.get(0).getVersion()); } } private synchronized void createFullEntryInDbWithCommonProps() throws Exception { - deleteEntryInDB(commonPropertiesServiceTemplate.getName(), commonPropertiesServiceTemplate.getVersion()); + deleteEntryInDB(); serviceTemplateProvider.createServiceTemplate(commonPropertiesServiceTemplate); } } diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java index caad5a4e9..ba1cc0813 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java @@ -24,17 +24,16 @@ package org.onap.policy.clamp.controlloop.runtime.instantiation; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.io.IOException; -import java.util.ArrayList; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.AfterEach; +import java.util.List; +import java.util.Optional; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException; @@ -42,26 +41,15 @@ import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopState; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops; -import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ClElementStatisticsProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider; -import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantStatisticsProvider; -import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider; import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationCommand; import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationResponse; import org.onap.policy.clamp.controlloop.runtime.commissioning.CommissioningProvider; -import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup; -import org.onap.policy.clamp.controlloop.runtime.monitoring.MonitoringProvider; import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler; -import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopStateChangePublisher; -import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopUpdatePublisher; -import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantDeregisterAckPublisher; -import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantRegisterAckPublisher; -import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantUpdatePublisher; import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData; -import org.onap.policy.models.base.PfModelException; -import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; +import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; /** @@ -102,80 +90,45 @@ class ControlLoopInstantiationProviderTest { private static ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate(); - private static SupervisionHandler supervisionHandler; - private static CommissioningProvider commissioningProvider; - private static ControlLoopProvider clProvider; - private static PolicyModelsProvider modelsProvider; - @BeforeAll public static void setUpBeforeClass() throws Exception { serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_TEMPLATE_YAML); } - /** - * setup Db Provider Parameters. - * - * @throws PfModelException if an error occurs - */ - @BeforeAll - public static void setupDbProviderParameters() throws PfModelException { - ClRuntimeParameterGroup controlLoopParameters = CommonTestData.geParameterGroup("instantproviderdb"); - - modelsProvider = CommonTestData.getPolicyModelsProvider(controlLoopParameters.getDatabaseProviderParameters()); - clProvider = new ControlLoopProvider(controlLoopParameters.getDatabaseProviderParameters()); + @Test + void testIntanceResponses() throws Exception { var participantProvider = Mockito.mock(ParticipantProvider.class); + var clProvider = mock(ControlLoopProvider.class); + var supervisionHandler = mock(SupervisionHandler.class); + var commissioningProvider = mock(CommissioningProvider.class); - var participantStatisticsProvider = Mockito.mock(ParticipantStatisticsProvider.class); - var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); - commissioningProvider = new CommissioningProvider(new ServiceTemplateProvider(modelsProvider), clProvider, null, - participantProvider); - var monitoringProvider = - new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider); - var controlLoopUpdatePublisher = Mockito.mock(ControlLoopUpdatePublisher.class); - var controlLoopStateChangePublisher = Mockito.mock(ControlLoopStateChangePublisher.class); - var participantRegisterAckPublisher = Mockito.mock(ParticipantRegisterAckPublisher.class); - var participantDeregisterAckPublisher = Mockito.mock(ParticipantDeregisterAckPublisher.class); - var participantUpdatePublisher = Mockito.mock(ParticipantUpdatePublisher.class); - var serviceTemplateProvider = Mockito.mock(ServiceTemplateProvider.class); - - supervisionHandler = new SupervisionHandler(clProvider, participantProvider, monitoringProvider, - serviceTemplateProvider, controlLoopUpdatePublisher, controlLoopStateChangePublisher, - participantRegisterAckPublisher, participantDeregisterAckPublisher, participantUpdatePublisher); - } - - @BeforeEach - public void populateDb() throws Exception { - createEntryInDB(); - } - - @AfterAll - public static void closeDbProvider() throws PfModelException { - clProvider.close(); - modelsProvider.close(); - } + when(commissioningProvider.getAllToscaServiceTemplate()).thenReturn(List.of(serviceTemplate)); + when(commissioningProvider.getToscaServiceTemplate(ID_NAME, ID_VERSION)).thenReturn(serviceTemplate); - @AfterEach - public void cleanDatabase() throws Exception { - deleteEntryInDB(serviceTemplate.getName(), serviceTemplate.getVersion()); - } - - @Test - void testIntanceResponses() throws PfModelException { - var participantProvider = Mockito.mock(ParticipantProvider.class); var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, supervisionHandler, participantProvider); var instancePropertyList = instantiationProvider.createInstanceProperties(serviceTemplate); assertNull(instancePropertyList.getErrorDetails()); var id = new ToscaConceptIdentifier(ID_NAME, ID_VERSION); assertEquals(id, instancePropertyList.getAffectedInstanceProperties().get(0)); + + ControlLoops controlLoops = + InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Crud"); + var controlLoop = controlLoops.getControlLoopList().get(0); + controlLoop.setName(ID_NAME); + controlLoop.setVersion(ID_VERSION); + when(clProvider.getControlLoops(ID_NAME, ID_VERSION)).thenReturn(List.of(controlLoop)); + var instanceOrderState = instantiationProvider.getInstantiationOrderState(ID_NAME, ID_VERSION); assertEquals(ControlLoopOrderedState.UNINITIALISED, instanceOrderState.getOrderedState()); assertEquals(ID_NAME, instanceOrderState.getControlLoopIdentifierList().get(0).getName()); - assertNotNull(clProvider.getControlLoop(id)); + when(clProvider.findControlLoop(ID_NAME, ID_VERSION)).thenReturn(Optional.of(controlLoop)); + when(clProvider.deleteControlLoop(ID_NAME, ID_VERSION)).thenReturn(controlLoop); + var instanceResponse = instantiationProvider.deleteInstanceProperties(ID_NAME, ID_VERSION); assertEquals(ID_NAME, instanceResponse.getAffectedControlLoops().get(0).getName()); - assertNull(clProvider.getControlLoop(id)); + } @Test @@ -184,20 +137,41 @@ class ControlLoopInstantiationProviderTest { var participants = CommonTestData.createParticipants(); when(participantProvider.getParticipants()).thenReturn(participants); - ControlLoops controlLoopsCreate = - InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Crud"); - ControlLoops controlLoopsDb = getControlLoopsFromDb(controlLoopsCreate); - assertThat(controlLoopsDb.getControlLoopList()).isEmpty(); + var commissioningProvider = mock(CommissioningProvider.class); + var toscaNodeTemplate1 = new ToscaNodeTemplate(); + toscaNodeTemplate1.setName("org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement"); + toscaNodeTemplate1.setVersion("1.2.3"); + when(commissioningProvider.getControlLoopDefinitions(anyString(), anyString())) + .thenReturn(List.of(toscaNodeTemplate1)); + + var toscaNodeTemplate2 = new ToscaNodeTemplate(); + toscaNodeTemplate2.setName("org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement"); + toscaNodeTemplate2.setVersion("1.2.3"); + var toscaNodeTemplate3 = new ToscaNodeTemplate(); + toscaNodeTemplate3.setName("org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement"); + toscaNodeTemplate3.setVersion("1.2.3"); + var toscaNodeTemplate4 = new ToscaNodeTemplate(); + toscaNodeTemplate4.setName("org.onap.domain.pmsh.PMSH_DCAEMicroservice"); + toscaNodeTemplate4.setVersion("1.2.3"); + + when(commissioningProvider.getControlLoopElementDefinitions(toscaNodeTemplate1)) + .thenReturn(List.of(toscaNodeTemplate1, toscaNodeTemplate2, toscaNodeTemplate3, toscaNodeTemplate4)); + + var supervisionHandler = mock(SupervisionHandler.class); + var clProvider = mock(ControlLoopProvider.class); var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, supervisionHandler, participantProvider); + ControlLoops controlLoopsCreate = + InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Crud"); InstantiationResponse instantiationResponse = instantiationProvider.createControlLoops(controlLoopsCreate); InstantiationUtils.assertInstantiationResponse(instantiationResponse, controlLoopsCreate); - controlLoopsDb = getControlLoopsFromDb(controlLoopsCreate); - assertThat(controlLoopsDb.getControlLoopList()).isNotEmpty(); - assertThat(controlLoopsCreate).isEqualTo(controlLoopsDb); + verify(clProvider).saveControlLoops(controlLoopsCreate.getControlLoopList()); + + for (var controlLoop : controlLoopsCreate.getControlLoopList()) { + when(clProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion())) + .thenReturn(List.of(controlLoop)); - for (ControlLoop controlLoop : controlLoopsCreate.getControlLoopList()) { ControlLoops controlLoopsGet = instantiationProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion()); assertThat(controlLoopsGet.getControlLoopList()).hasSize(1); @@ -206,27 +180,25 @@ class ControlLoopInstantiationProviderTest { ControlLoops controlLoopsUpdate = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_UPDATE_JSON, "Crud"); - assertThat(controlLoopsUpdate).isNotEqualTo(controlLoopsDb); instantiationResponse = instantiationProvider.updateControlLoops(controlLoopsUpdate); InstantiationUtils.assertInstantiationResponse(instantiationResponse, controlLoopsUpdate); - controlLoopsDb = getControlLoopsFromDb(controlLoopsCreate); - assertThat(controlLoopsDb.getControlLoopList()).isNotEmpty(); - assertThat(controlLoopsUpdate).isEqualTo(controlLoopsDb); + verify(clProvider).saveControlLoops(controlLoopsUpdate.getControlLoopList()); + + for (var controlLoop : controlLoopsUpdate.getControlLoopList()) { + when(clProvider.findControlLoop(controlLoop.getKey().asIdentifier())).thenReturn(Optional.of(controlLoop)); + when(clProvider.findControlLoop(controlLoop.getName(), controlLoop.getVersion())) + .thenReturn(Optional.of(controlLoop)); + when(clProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion())).thenReturn(controlLoop); + } InstantiationCommand instantiationCommand = InstantiationUtils.getInstantiationCommandFromResource(CL_INSTANTIATION_CHANGE_STATE_JSON, "Crud"); instantiationResponse = instantiationProvider.issueControlLoopCommand(instantiationCommand); InstantiationUtils.assertInstantiationResponse(instantiationResponse, instantiationCommand); - for (ToscaConceptIdentifier toscaConceptIdentifier : instantiationCommand.getControlLoopIdentifierList()) { - ControlLoops controlLoopsGet = instantiationProvider.getControlLoops(toscaConceptIdentifier.getName(), - toscaConceptIdentifier.getVersion()); - assertThat(controlLoopsGet.getControlLoopList()).hasSize(1); - assertThat(instantiationCommand.getOrderedState()) - .isEqualTo(controlLoopsGet.getControlLoopList().get(0).getOrderedState()); - } + verify(supervisionHandler).triggerControlLoopSupervision(instantiationCommand.getControlLoopIdentifierList()); // in order to delete a controlLoop the state must be UNINITIALISED controlLoopsCreate.getControlLoopList().forEach(cl -> cl.setState(ControlLoopState.UNINITIALISED)); @@ -234,27 +206,9 @@ class ControlLoopInstantiationProviderTest { for (ControlLoop controlLoop : controlLoopsCreate.getControlLoopList()) { instantiationProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion()); - } - - controlLoopsDb = getControlLoopsFromDb(controlLoopsCreate); - assertThat(controlLoopsDb.getControlLoopList()).isEmpty(); - } - - private ControlLoops getControlLoopsFromDb(ControlLoops controlLoopsSource) throws Exception { - - ControlLoops controlLoopsDb = new ControlLoops(); - controlLoopsDb.setControlLoopList(new ArrayList<>()); - var participantProvider = Mockito.mock(ParticipantProvider.class); - - var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, - supervisionHandler, participantProvider); - for (ControlLoop controlLoop : controlLoopsSource.getControlLoopList()) { - ControlLoops controlLoopsFromDb = - instantiationProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion()); - controlLoopsDb.getControlLoopList().addAll(controlLoopsFromDb.getControlLoopList()); + verify(clProvider).deleteControlLoop(controlLoop.getName(), controlLoop.getVersion()); } - return controlLoopsDb; } @Test @@ -262,10 +216,12 @@ class ControlLoopInstantiationProviderTest { ControlLoops controlLoops = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Delete"); - assertThat(getControlLoopsFromDb(controlLoops).getControlLoopList()).isEmpty(); ControlLoop controlLoop0 = controlLoops.getControlLoopList().get(0); var participantProvider = Mockito.mock(ParticipantProvider.class); + var clProvider = mock(ControlLoopProvider.class); + var supervisionHandler = mock(SupervisionHandler.class); + var commissioningProvider = mock(CommissioningProvider.class); var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, supervisionHandler, participantProvider); @@ -274,26 +230,19 @@ class ControlLoopInstantiationProviderTest { () -> instantiationProvider.deleteControlLoop(controlLoop0.getName(), controlLoop0.getVersion())) .hasMessageMatching(CONTROL_LOOP_NOT_FOUND); - InstantiationUtils.assertInstantiationResponse(instantiationProvider.createControlLoops(controlLoops), - controlLoops); - for (ControlLoopState state : ControlLoopState.values()) { if (!ControlLoopState.UNINITIALISED.equals(state)) { assertThatDeleteThrownBy(controlLoops, state); } } - controlLoop0.setState(ControlLoopState.UNINITIALISED); - instantiationProvider.updateControlLoops(controlLoops); for (ControlLoop controlLoop : controlLoops.getControlLoopList()) { - instantiationProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion()); - } + when(clProvider.findControlLoop(controlLoop.getName(), controlLoop.getVersion())) + .thenReturn(Optional.of(controlLoop)); + when(clProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion())).thenReturn(controlLoop); - for (ControlLoop controlLoop : controlLoops.getControlLoopList()) { - ControlLoops controlLoopsGet = - instantiationProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion()); - assertThat(controlLoopsGet.getControlLoopList()).isEmpty(); + instantiationProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion()); } } @@ -301,11 +250,16 @@ class ControlLoopInstantiationProviderTest { ControlLoop controlLoop = controlLoops.getControlLoopList().get(0); controlLoop.setState(state); var participantProvider = Mockito.mock(ParticipantProvider.class); + var clProvider = mock(ControlLoopProvider.class); + var supervisionHandler = mock(SupervisionHandler.class); + var commissioningProvider = mock(CommissioningProvider.class); var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, supervisionHandler, participantProvider); - instantiationProvider.updateControlLoops(controlLoops); + when(clProvider.findControlLoop(controlLoop.getName(), controlLoop.getVersion())) + .thenReturn(Optional.of(controlLoop)); + assertThatThrownBy( () -> instantiationProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion())) .hasMessageMatching(String.format(DELETE_BAD_REQUEST, state)); @@ -313,45 +267,82 @@ class ControlLoopInstantiationProviderTest { @Test void testCreateControlLoops_NoDuplicates() throws Exception { + var commissioningProvider = mock(CommissioningProvider.class); + + var toscaNodeTemplate1 = new ToscaNodeTemplate(); + toscaNodeTemplate1.setName("org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement"); + toscaNodeTemplate1.setVersion("1.2.3"); + when(commissioningProvider.getControlLoopDefinitions(anyString(), anyString())) + .thenReturn(List.of(toscaNodeTemplate1)); + + var toscaNodeTemplate2 = new ToscaNodeTemplate(); + toscaNodeTemplate2.setName("org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement"); + toscaNodeTemplate2.setVersion("1.2.3"); + var toscaNodeTemplate3 = new ToscaNodeTemplate(); + toscaNodeTemplate3.setName("org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement"); + toscaNodeTemplate3.setVersion("1.2.3"); + var toscaNodeTemplate4 = new ToscaNodeTemplate(); + toscaNodeTemplate4.setName("org.onap.domain.pmsh.PMSH_DCAEMicroservice"); + toscaNodeTemplate4.setVersion("1.2.3"); + + when(commissioningProvider.getControlLoopElementDefinitions(toscaNodeTemplate1)) + .thenReturn(List.of(toscaNodeTemplate1, toscaNodeTemplate2, toscaNodeTemplate3, toscaNodeTemplate4)); ControlLoops controlLoopsCreate = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "NoDuplicates"); - ControlLoops controlLoopsDb = getControlLoopsFromDb(controlLoopsCreate); - assertThat(controlLoopsDb.getControlLoopList()).isEmpty(); - + var clProvider = mock(ControlLoopProvider.class); var participantProvider = Mockito.mock(ParticipantProvider.class); + var supervisionHandler = mock(SupervisionHandler.class); + var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, supervisionHandler, participantProvider); InstantiationResponse instantiationResponse = instantiationProvider.createControlLoops(controlLoopsCreate); InstantiationUtils.assertInstantiationResponse(instantiationResponse, controlLoopsCreate); + when(clProvider.findControlLoop(controlLoopsCreate.getControlLoopList().get(0).getKey().asIdentifier())) + .thenReturn(Optional.of(controlLoopsCreate.getControlLoopList().get(0))); + assertThatThrownBy(() -> instantiationProvider.createControlLoops(controlLoopsCreate)).hasMessageMatching( controlLoopsCreate.getControlLoopList().get(0).getKey().asIdentifier() + " already defined"); - - for (ControlLoop controlLoop : controlLoopsCreate.getControlLoopList()) { - instantiationProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion()); - } } @Test void testCreateControlLoops_CommissionedClElementNotFound() throws Exception { - + var toscaNodeTemplate1 = new ToscaNodeTemplate(); + toscaNodeTemplate1.setName("org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement"); + toscaNodeTemplate1.setVersion("1.2.3"); + + var toscaNodeTemplate2 = new ToscaNodeTemplate(); + toscaNodeTemplate2.setName("org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement"); + toscaNodeTemplate2.setVersion("1.2.3"); + var toscaNodeTemplate3 = new ToscaNodeTemplate(); + toscaNodeTemplate3.setName("org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement"); + toscaNodeTemplate3.setVersion("1.2.3"); + var commissioningProvider = mock(CommissioningProvider.class); ControlLoops controlLoops = InstantiationUtils .getControlLoopsFromResource(CL_INSTANTIATION_DEFINITION_NAME_NOT_FOUND_JSON, "ClElementNotFound"); - var participantProvider = Mockito.mock(ParticipantProvider.class); - var provider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, supervisionHandler, - participantProvider); + when(commissioningProvider.getControlLoopDefinitions( + controlLoops.getControlLoopList().get(0).getDefinition().getName(), + controlLoops.getControlLoopList().get(0).getDefinition().getVersion())) + .thenReturn(List.of(toscaNodeTemplate1)); - // to validate control Loop, it needs to define ToscaServiceTemplate - // InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, commissioningProvider); + when(commissioningProvider.getControlLoopElementDefinitions(toscaNodeTemplate1)) + .thenReturn(List.of(toscaNodeTemplate1, toscaNodeTemplate2, toscaNodeTemplate3)); - assertThat(getControlLoopsFromDb(controlLoops).getControlLoopList()).isEmpty(); + var clProvider = mock(ControlLoopProvider.class); + var participantProvider = mock(ParticipantProvider.class); + var supervisionHandler = mock(SupervisionHandler.class); + var provider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, supervisionHandler, + participantProvider); assertThatThrownBy(() -> provider.createControlLoops(controlLoops)) .hasMessageMatching(CONTROLLOOP_ELEMENT_NAME_NOT_FOUND); + + assertThatThrownBy(() -> provider.updateControlLoops(controlLoops)) + .hasMessageMatching(CONTROLLOOP_ELEMENT_NAME_NOT_FOUND); } @Test @@ -359,98 +350,29 @@ class ControlLoopInstantiationProviderTest { ControlLoops controlLoops = InstantiationUtils .getControlLoopsFromResource(CL_INSTANTIATION_CONTROLLOOP_DEFINITION_NOT_FOUND_JSON, "ClNotFound"); - assertThat(getControlLoopsFromDb(controlLoops).getControlLoopList()).isEmpty(); - var participantProvider = Mockito.mock(ParticipantProvider.class); + var clProvider = mock(ControlLoopProvider.class); + var supervisionHandler = mock(SupervisionHandler.class); + var commissioningProvider = mock(CommissioningProvider.class); var provider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, supervisionHandler, participantProvider); + assertThatThrownBy(() -> provider.createControlLoops(controlLoops)) .hasMessageMatching(CONTROLLOOP_DEFINITION_NOT_FOUND); + + assertThatThrownBy(() -> provider.updateControlLoops(controlLoops)) + .hasMessageMatching(CONTROLLOOP_DEFINITION_NOT_FOUND); } @Test void testIssueControlLoopCommand_OrderedStateInvalid() throws ControlLoopRuntimeException, IOException { var participantProvider = Mockito.mock(ParticipantProvider.class); + var clProvider = mock(ControlLoopProvider.class); + var supervisionHandler = mock(SupervisionHandler.class); + var commissioningProvider = mock(CommissioningProvider.class); var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, supervisionHandler, participantProvider); assertThatThrownBy(() -> instantiationProvider.issueControlLoopCommand(new InstantiationCommand())) .hasMessageMatching(ORDERED_STATE_INVALID); } - - @Test - void testInstantiationVersions() throws Exception { - // create controlLoops V1 - ControlLoops controlLoopsV1 = - InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "V1"); - assertThat(getControlLoopsFromDb(controlLoopsV1).getControlLoopList()).isEmpty(); - - var participantProvider = Mockito.mock(ParticipantProvider.class); - var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, - supervisionHandler, participantProvider); - - InstantiationUtils.assertInstantiationResponse(instantiationProvider.createControlLoops(controlLoopsV1), - controlLoopsV1); - - // create controlLoops V2 - ControlLoops controlLoopsV2 = - InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "V2"); - assertThat(getControlLoopsFromDb(controlLoopsV2).getControlLoopList()).isEmpty(); - InstantiationUtils.assertInstantiationResponse(instantiationProvider.createControlLoops(controlLoopsV2), - controlLoopsV2); - - // GET controlLoops V2 - for (ControlLoop controlLoop : controlLoopsV2.getControlLoopList()) { - ControlLoops controlLoopsGet = - instantiationProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion()); - assertThat(controlLoopsGet.getControlLoopList()).hasSize(1); - assertThat(controlLoop).isEqualTo(controlLoopsGet.getControlLoopList().get(0)); - } - - // DELETE controlLoops V1 - for (ControlLoop controlLoop : controlLoopsV1.getControlLoopList()) { - instantiationProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion()); - } - - // GET controlLoops V1 is not available - for (ControlLoop controlLoop : controlLoopsV1.getControlLoopList()) { - ControlLoops controlLoopsGet = - instantiationProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion()); - assertThat(controlLoopsGet.getControlLoopList()).isEmpty(); - } - - // GET controlLoops V2 is still available - for (ControlLoop controlLoop : controlLoopsV2.getControlLoopList()) { - ControlLoops controlLoopsGet = - instantiationProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion()); - assertThat(controlLoopsGet.getControlLoopList()).hasSize(1); - assertThat(controlLoop).isEqualTo(controlLoopsGet.getControlLoopList().get(0)); - } - - // DELETE controlLoops V2 - for (ControlLoop controlLoop : controlLoopsV2.getControlLoopList()) { - instantiationProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion()); - } - - // GET controlLoops V2 is not available - for (ControlLoop controlLoop : controlLoopsV2.getControlLoopList()) { - ControlLoops controlLoopsGet = - instantiationProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion()); - assertThat(controlLoopsGet.getControlLoopList()).isEmpty(); - } - } - - private synchronized void deleteEntryInDB(String name, String version) throws Exception { - if (!modelsProvider.getServiceTemplateList(null, null).isEmpty()) { - modelsProvider.deleteServiceTemplate(name, version); - } - } - - private synchronized void createEntryInDB() throws Exception { - try { - deleteEntryInDB(serviceTemplate.getName(), serviceTemplate.getVersion()); - modelsProvider.createServiceTemplate(serviceTemplate); - } catch (Exception e) { - e.printStackTrace(); - } - } } diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java index 0fc473106..ebd25c3c1 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java @@ -35,10 +35,13 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider; +import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.ControlLoopOrderStateResponse; import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.ControlLoopPrimedResponse; +import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstancePropertiesResponse; import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationCommand; import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationResponse; import org.onap.policy.clamp.controlloop.runtime.instantiation.ControlLoopInstantiationProvider; @@ -64,6 +67,9 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; @TestPropertySource(locations = {"classpath:application_test.properties"}) class InstantiationControllerTest extends CommonRestController { + private static final String ID_NAME = "PMSH_Instance1"; + private static final String ID_VERSION = "1.2.3"; + private static final String CL_INSTANTIATION_CREATE_JSON = "src/test/resources/rest/controlloops/ControlLoops.json"; private static final String CL_INSTANTIATION_UPDATE_JSON = @@ -76,10 +82,10 @@ class InstantiationControllerTest extends CommonRestController { "src/test/resources/rest/servicetemplates/pmsh_multiple_cl_tosca.yaml"; private static final String INSTANTIATION_ENDPOINT = "instantiation"; - private static final String INSTANTIATION_COMMAND_ENDPOINT = "instantiation/command"; - private static final String PRIMING_ENDPOINT = "controlLoopPriming"; + private static final String INSTANTIATION_PROPERTIES = "instanceProperties"; + private static final String INSTANTIATION_STATE = "instantiationState"; private static ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate(); @@ -112,7 +118,7 @@ class InstantiationControllerTest extends CommonRestController { @AfterEach public void cleanDatabase() throws Exception { - deleteEntryInDB(serviceTemplate.getName(), serviceTemplate.getVersion()); + deleteEntryInDB(); } @Test @@ -256,7 +262,8 @@ class InstantiationControllerTest extends CommonRestController { @Test void testDelete_NoResultWithThisName() throws Exception { - Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT + "?name=noResultWithThisName"); + Invocation.Builder invocationBuilder = + super.sendRequest(INSTANTIATION_ENDPOINT + "?name=noResultWithThisName&version=1.0.1"); Response resp = invocationBuilder.delete(); assertEquals(Response.Status.NOT_FOUND.getStatusCode(), resp.getStatus()); InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class); @@ -298,8 +305,7 @@ class InstantiationControllerTest extends CommonRestController { Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT + "?name=" + controlLoopFromRsc.getKey().getName()); Response resp = invocationBuilder.delete(); - // should be BAD_REQUEST - assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), resp.getStatus()); + assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus()); } } @@ -349,14 +355,43 @@ class InstantiationControllerTest extends CommonRestController { } } - private synchronized void deleteEntryInDB(String name, String version) throws Exception { - if (!serviceTemplateProvider.getServiceTemplateList(null, null).isEmpty()) { - serviceTemplateProvider.deleteServiceTemplate(name, version); + @Test + void testIntanceProperties() throws Exception { + Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES); + Response resp = invocationBuilder.post(Entity.json(serviceTemplate)); + assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus()); + var instancePropertyList = resp.readEntity(InstancePropertiesResponse.class); + assertNull(instancePropertyList.getErrorDetails()); + var id = new ToscaConceptIdentifier(ID_NAME, ID_VERSION); + assertEquals(id, instancePropertyList.getAffectedInstanceProperties().get(0)); + + invocationBuilder = super.sendRequest(INSTANTIATION_STATE + "?name=" + ID_NAME + "&version=" + ID_VERSION); + resp = invocationBuilder.buildGet().invoke(); + assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus()); + var instanceOrderState = resp.readEntity(ControlLoopOrderStateResponse.class); + assertEquals(ControlLoopOrderedState.UNINITIALISED, instanceOrderState.getOrderedState()); + assertEquals(ID_NAME, instanceOrderState.getControlLoopIdentifierList().get(0).getName()); + ControlLoops controlLoopsGet = instantiationProvider.getControlLoops(ID_NAME, ID_VERSION); + assertThat(controlLoopsGet.getControlLoopList()).hasSize(1); + + invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES + "?name=" + ID_NAME + "&version=" + ID_VERSION); + resp = invocationBuilder.delete(); + assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus()); + var instanceResponse = resp.readEntity(InstantiationResponse.class); + assertEquals(ID_NAME, instanceResponse.getAffectedControlLoops().get(0).getName()); + controlLoopsGet = instantiationProvider.getControlLoops(ID_NAME, ID_VERSION); + assertThat(controlLoopsGet.getControlLoopList()).isEmpty(); + } + + private synchronized void deleteEntryInDB() throws Exception { + var list = serviceTemplateProvider.getAllServiceTemplates(); + if (!list.isEmpty()) { + serviceTemplateProvider.deleteServiceTemplate(list.get(0).getName(), list.get(0).getVersion()); } } private synchronized void createEntryInDB() throws Exception { - deleteEntryInDB(serviceTemplate.getName(), serviceTemplate.getVersion()); + deleteEntryInDB(); serviceTemplateProvider.createServiceTemplate(serviceTemplate); } } diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java index 2233e862c..cbc4c7104 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java @@ -35,9 +35,9 @@ import java.time.Instant; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.UUID; import javax.ws.rs.core.Response; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.mockito.Mockito; @@ -48,8 +48,6 @@ import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ClElementStatisticsProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantStatisticsProvider; -import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup; -import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData; import org.onap.policy.common.utils.coder.Coder; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardCoder; @@ -85,8 +83,6 @@ class TestMonitoringProvider { private static ClElementStatisticsList inputClElementStatistics; private static ClElementStatisticsList invalidClElementInput; - private ControlLoopProvider clProvider = null; - @BeforeAll public static void beforeSetupStatistics() throws CoderException { // Reading input json for statistics data @@ -98,19 +94,11 @@ class TestMonitoringProvider { invalidClElementInput = CODER.decode(new File(INVALID_CL_ELEMENT_JSON_INPUT), ClElementStatisticsList.class); } - @AfterEach - void close() throws Exception { - if (clProvider != null) { - clProvider.close(); - } - } - @Test void testCreateParticipantStatistics() throws Exception { var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class); var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); - ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("createparStat"); - clProvider = new ControlLoopProvider(parameters.getDatabaseProviderParameters()); + var clProvider = mock(ControlLoopProvider.class); MonitoringProvider provider = new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider); @@ -152,8 +140,7 @@ class TestMonitoringProvider { when(participantStatisticsProvider.getFilteredParticipantStatistics(eq(ID_NAME2), any(), any(), any(), eq(null), eq(SORT_DESC), eq(1))).thenReturn(List.of(inputParticipantStatistics.getStatisticsList().get(2))); - ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("getparStat"); - clProvider = new ControlLoopProvider(parameters.getDatabaseProviderParameters()); + var clProvider = mock(ControlLoopProvider.class); var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); MonitoringProvider provider = new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider); @@ -190,8 +177,7 @@ class TestMonitoringProvider { when(clElementStatisticsProvider.createClElementStatistics(eq(null))) .thenThrow(new PfModelRuntimeException(Response.Status.BAD_REQUEST, CL_LIST_IS_NULL)); - ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("createelemstat"); - clProvider = new ControlLoopProvider(parameters.getDatabaseProviderParameters()); + var clProvider = mock(ControlLoopProvider.class); var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class); MonitoringProvider provider = @@ -218,8 +204,12 @@ class TestMonitoringProvider { void testGetClElementStatistics() throws Exception { var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class); var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); - ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("getelemstat"); - clProvider = new ControlLoopProvider(parameters.getDatabaseProviderParameters()); + var clProvider = mock(ControlLoopProvider.class); + + when(clElementStatisticsProvider.getFilteredClElementStatistics(eq(ID_NAME1), any(), any(), any(), anyMap(), + eq(SORT_DESC), eq(0))) + .thenReturn(List.of(inputClElementStatistics.getClElementStatistics().get(0), + inputClElementStatistics.getClElementStatistics().get(1))); when(clElementStatisticsProvider.getFilteredClElementStatistics(eq(ID_NAME1), any(), any(), any(), anyMap(), eq(SORT_DESC), eq(0))) @@ -266,7 +256,8 @@ class TestMonitoringProvider { var element = new ControlLoopElement(); element.setParticipantId(new ToscaConceptIdentifier(ID_NAME1, ID_VERSION1)); controlLoop.setElements(Map.of(UUID.randomUUID(), element)); - when(mockClProvider.getControlLoop(new ToscaConceptIdentifier(ID_NAME2, ID_VERSION1))).thenReturn(controlLoop); + when(mockClProvider.findControlLoop(new ToscaConceptIdentifier(ID_NAME2, ID_VERSION1))) + .thenReturn(Optional.of(controlLoop)); when(participantStatisticsProvider.getFilteredParticipantStatistics(eq(ID_NAME1), eq(ID_VERSION1), any(), any(), eq(null), eq(SORT_DESC), eq(0))) @@ -300,7 +291,8 @@ class TestMonitoringProvider { new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, mockClProvider); // Mock controlloop data to be returned for the given CL Id - when(mockClProvider.getControlLoop(new ToscaConceptIdentifier(ID_NAME3, ID_VERSION1))).thenReturn(mockCL); + when(mockClProvider.findControlLoop(new ToscaConceptIdentifier(ID_NAME3, ID_VERSION1))) + .thenReturn(Optional.of(mockCL)); when(clElementStatisticsProvider.getFilteredClElementStatistics(eq(ID_NAME1), eq(ID_VERSION1), any(), any(), anyMap(), eq(SORT_DESC), eq(0))) diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandlerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandlerTest.java index 5ed4a4fc0..21a826743 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandlerTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandlerTest.java @@ -92,7 +92,7 @@ class SupervisionHandlerTest { handler.triggerControlLoopSupervision(List.of(identifier)); verify(controlLoopUpdatePublisher).send(any(ControlLoop.class)); - verify(controlLoopProvider).updateControlLoop(any(ControlLoop.class)); + verify(controlLoopProvider).saveControlLoop(any(ControlLoop.class)); } @Test @@ -134,7 +134,7 @@ class SupervisionHandlerTest { handler.handleControlLoopStateChangeAckMessage(controlLoopAckMessage); - verify(controlLoopProvider).updateControlLoop(any(ControlLoop.class)); + verify(controlLoopProvider).saveControlLoop(any(ControlLoop.class)); } @Test @@ -152,7 +152,7 @@ class SupervisionHandlerTest { handler.handleControlLoopUpdateAckMessage(controlLoopAckMessage); - verify(controlLoopProvider).updateControlLoop(any(ControlLoop.class)); + verify(controlLoopProvider).saveControlLoop(any(ControlLoop.class)); } @Test @@ -290,14 +290,15 @@ class SupervisionHandlerTest { var controlLoop = controlLoopsCreate.getControlLoopList().get(0); controlLoop.setOrderedState(orderedState); - var controlLoopStateChangePublisher = mock(ControlLoopStateChangePublisher.class); - + when(controlLoopProvider.findControlLoop(identifier)).thenReturn(Optional.of(controlLoop)); when(controlLoopProvider.getControlLoop(identifier)).thenReturn(controlLoop); var serviceTemplateProvider = Mockito.mock(ServiceTemplateProvider.class); when(serviceTemplateProvider.getServiceTemplateList(any(), any())) .thenReturn(List.of(InstantiationUtils.getToscaServiceTemplate(TOSCA_TEMPLATE_YAML))); + var controlLoopStateChangePublisher = mock(ControlLoopStateChangePublisher.class); + return new SupervisionHandler(controlLoopProvider, participantProvider, monitoringProvider, serviceTemplateProvider, controlLoopUpdatePublisher, controlLoopStateChangePublisher, participantRegisterAckPublisher, participantDeregisterAckPublisher, participantUpdatePublisher); diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScannerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScannerTest.java index 62029f009..b7a3fe005 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScannerTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScannerTest.java @@ -61,7 +61,7 @@ class SupervisionScannerTest { @BeforeAll public static void setUpBeforeAll() throws Exception { ToscaServiceTemplate serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML); - when(serviceTemplateProvider.getServiceTemplateList(null, null)).thenReturn(List.of(serviceTemplate)); + when(serviceTemplateProvider.getAllServiceTemplates()).thenReturn(List.of(serviceTemplate)); } @Test @@ -76,14 +76,14 @@ class SupervisionScannerTest { var controlLoops = InstantiationUtils.getControlLoopsFromResource(CONTROLLOOP_JSON, "Crud").getControlLoopList(); - when(controlLoopProvider.getControlLoops(null, null)).thenReturn(controlLoops); + when(controlLoopProvider.getControlLoops()).thenReturn(controlLoops); var supervisionScanner = new SupervisionScanner(controlLoopProvider, serviceTemplateProvider, controlLoopStateChangePublisher, controlLoopUpdatePublisher, participantProvider, participantStatusReqPublisher, participantUpdatePublisher, clRuntimeParameterGroup); supervisionScanner.run(false); - verify(controlLoopProvider, times(0)).updateControlLoop(any(ControlLoop.class)); + verify(controlLoopProvider, times(0)).saveControlLoop(any(ControlLoop.class)); } @Test @@ -93,7 +93,7 @@ class SupervisionScannerTest { controlLoops.get(0).setState(ControlLoopState.UNINITIALISED2PASSIVE); controlLoops.get(0).setOrderedState(ControlLoopOrderedState.UNINITIALISED); var controlLoopProvider = mock(ControlLoopProvider.class); - when(controlLoopProvider.getControlLoops(null, null)).thenReturn(controlLoops); + when(controlLoopProvider.getControlLoops()).thenReturn(controlLoops); var controlLoopUpdatePublisher = mock(ControlLoopUpdatePublisher.class); var controlLoopStateChangePublisher = mock(ControlLoopStateChangePublisher.class); @@ -107,14 +107,14 @@ class SupervisionScannerTest { participantStatusReqPublisher, participantUpdatePublisher, clRuntimeParameterGroup); supervisionScanner.run(false); - verify(controlLoopProvider, times(1)).updateControlLoop(any(ControlLoop.class)); + verify(controlLoopProvider, times(1)).saveControlLoop(any(ControlLoop.class)); } @Test void testScanner() throws PfModelException { var controlLoopProvider = mock(ControlLoopProvider.class); var controlLoop = new ControlLoop(); - when(controlLoopProvider.getControlLoops(null, null)).thenReturn(List.of(controlLoop)); + when(controlLoopProvider.getControlLoops()).thenReturn(List.of(controlLoop)); var participantProvider = mock(ParticipantProvider.class); var participant = new Participant(); @@ -134,7 +134,7 @@ class SupervisionScannerTest { supervisionScanner.handleParticipantStatus(participant.getKey().asIdentifier()); supervisionScanner.run(true); - verify(controlLoopProvider, times(0)).updateControlLoop(any(ControlLoop.class)); + verify(controlLoopProvider, times(0)).saveControlLoop(any(ControlLoop.class)); verify(participantStatusReqPublisher, times(0)).send(any(ToscaConceptIdentifier.class)); } @@ -156,7 +156,7 @@ class SupervisionScannerTest { } var controlLoopProvider = mock(ControlLoopProvider.class); - when(controlLoopProvider.getControlLoops(null, null)).thenReturn(controlLoops); + when(controlLoopProvider.getControlLoops()).thenReturn(controlLoops); var participantProvider = mock(ParticipantProvider.class); var controlLoopUpdatePublisher = mock(ControlLoopUpdatePublisher.class); @@ -178,7 +178,7 @@ class SupervisionScannerTest { void testScanParticipant() throws PfModelException { var controlLoopProvider = mock(ControlLoopProvider.class); var controlLoop = new ControlLoop(); - when(controlLoopProvider.getControlLoops(null, null)).thenReturn(List.of(controlLoop)); + when(controlLoopProvider.getControlLoops()).thenReturn(List.of(controlLoop)); var clRuntimeParameterGroup = CommonTestData.geParameterGroup("dbScanParticipant"); clRuntimeParameterGroup.getParticipantParameters().getUpdateParameters().setMaxWaitMs(-1); diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java index b64bd9fbe..a465aa254 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java @@ -25,13 +25,13 @@ import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import java.time.Instant; import java.util.Collections; import java.util.List; import java.util.UUID; -import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.mockito.Mockito; @@ -46,10 +46,8 @@ import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.Parti import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantDeregisterAck; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantRegisterAck; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantUpdateAck; -import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup; import org.onap.policy.clamp.controlloop.runtime.monitoring.MonitoringProvider; import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler; -import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData; import org.onap.policy.clamp.controlloop.runtime.util.rest.CommonRestController; import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure; import org.onap.policy.common.endpoints.event.comm.TopicSink; @@ -63,7 +61,6 @@ class SupervisionMessagesTest extends CommonRestController { private static final CommInfrastructure INFRA = CommInfrastructure.NOOP; private static final String TOPIC = "my-topic"; private static SupervisionHandler supervisionHandler; - private static ControlLoopProvider clProvider; /** * setup Db Provider Parameters. @@ -72,10 +69,7 @@ class SupervisionMessagesTest extends CommonRestController { */ @BeforeAll public static void setupDbProviderParameters() throws PfModelException { - ClRuntimeParameterGroup controlLoopParameters = CommonTestData.geParameterGroup("instantproviderdb"); - - clProvider = new ControlLoopProvider(controlLoopParameters.getDatabaseProviderParameters()); - + var clProvider = mock(ControlLoopProvider.class); var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class); var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); var monitoringProvider = @@ -92,11 +86,6 @@ class SupervisionMessagesTest extends CommonRestController { participantRegisterAckPublisher, participantDeregisterAckPublisher, participantUpdatePublisher); } - @AfterAll - public static void closeDbProvider() throws PfModelException { - clProvider.close(); - } - @Test void testSendParticipantRegisterAck() throws Exception { final ParticipantRegisterAck participantRegisterAckMsg = new ParticipantRegisterAck(); @@ -106,7 +95,7 @@ class SupervisionMessagesTest extends CommonRestController { synchronized (lockit) { ParticipantRegisterAckPublisher clRegisterAckPublisher = new ParticipantRegisterAckPublisher(); - clRegisterAckPublisher.active(Collections.singletonList(Mockito.mock(TopicSink.class))); + clRegisterAckPublisher.active(List.of(Mockito.mock(TopicSink.class))); assertThatCode(() -> clRegisterAckPublisher.send(participantRegisterAckMsg)).doesNotThrowAnyException(); } } @@ -173,6 +162,51 @@ class SupervisionMessagesTest extends CommonRestController { verify(topicSink).send(anyString()); } + @Test + void testParticipantUpdatePublisherDecomisioning() { + var publisher = new ParticipantUpdatePublisher(mock(ServiceTemplateProvider.class)); + var topicSink = mock(TopicSink.class); + publisher.active(List.of(topicSink)); + publisher.sendDecomisioning(); + verify(topicSink).send(anyString()); + } + + @Test + void testParticipantUpdatePublisherComissioning() { + var publisher = new ParticipantUpdatePublisher(mock(ServiceTemplateProvider.class)); + var topicSink = mock(TopicSink.class); + publisher.active(List.of(topicSink)); + publisher.sendComissioningBroadcast("NAME", "1.0.0"); + verify(topicSink, times(0)).send(anyString()); + } + + @Test + void testParticipantStatusReqPublisher() { + var publisher = new ParticipantStatusReqPublisher(); + var topicSink = mock(TopicSink.class); + publisher.active(List.of(topicSink)); + publisher.send(getParticipantId()); + verify(topicSink).send(anyString()); + } + + @Test + void testParticipantRegisterAckPublisher() { + var publisher = new ParticipantRegisterAckPublisher(); + var topicSink = mock(TopicSink.class); + publisher.active(List.of(topicSink)); + publisher.send(UUID.randomUUID(), getParticipantId(), getParticipantType()); + verify(topicSink).send(anyString()); + } + + @Test + void testParticipantDeregisterAckPublisher() { + var publisher = new ParticipantDeregisterAckPublisher(); + var topicSink = mock(TopicSink.class); + publisher.active(List.of(topicSink)); + publisher.send(UUID.randomUUID()); + verify(topicSink).send(anyString()); + } + private ControlLoop getControlLoop() { var controlLoop = new ControlLoop(); controlLoop.setName("NAME"); -- cgit 1.2.3-korg