From ca5b7107f23562bf81267292a47d7fb2f30ebaf9 Mon Sep 17 00:00:00 2001 From: EricMoore Date: Thu, 31 Oct 2019 13:34:09 +0000 Subject: SW UP building block and workflow This commit creates two bpmn 1. PNFSoftwareUpgrade.bpmn 2. PNFSWUPDownload.bpmn Respective Testcases are also written for both bpmns. Issue-ID: SO-2514 Issue-ID: SO-2515 Change-Id: Icb1706f1974341182f13b9125e09418b61571c52 Signed-off-by: EricMoore --- .../delegate/NfSoftwareUpgradeDispatcherTest.java | 182 +++++++++++++++++++++ .../pnf/delegate/PnfManagementTestImpl.java | 5 + .../delegate/PnfManagementThrowingException.java | 5 + .../pnf/delegate/UpdatePnfEntryInAaiTest.java | 91 +++++++++++ 4 files changed, 283 insertions(+) create mode 100644 bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/NfSoftwareUpgradeDispatcherTest.java create mode 100644 bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/UpdatePnfEntryInAaiTest.java (limited to 'bpmn/so-bpmn-infrastructure-common/src/test/java/org') diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/NfSoftwareUpgradeDispatcherTest.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/NfSoftwareUpgradeDispatcherTest.java new file mode 100644 index 0000000000..3c568ffc83 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/NfSoftwareUpgradeDispatcherTest.java @@ -0,0 +1,182 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.so.bpmn.infrastructure.pnf.delegate; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.onap.aai.domain.yang.Pnf; +import org.onap.so.bpmn.core.json.JsonUtils; +import org.onap.so.bpmn.infrastructure.pnf.management.PnfManagement; +import org.onap.so.db.catalog.beans.PnfResourceCustomization; +import org.onap.so.db.catalog.client.CatalogDbClient; +import org.onap.so.serviceinstancebeans.ModelInfo; +import org.onap.so.serviceinstancebeans.RequestDetails; +import org.onap.so.serviceinstancebeans.RequestInfo; +import org.onap.so.serviceinstancebeans.RequestParameters; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import java.io.IOException; +import java.util.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.fail; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.when; +import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.*; +import static org.onap.so.client.cds.PayloadConstants.PRC_TARGET_SOFTWARE_VERSION; + + +@RunWith(SpringJUnit4ClassRunner.class) +public class NfSoftwareUpgradeDispatcherTest { + + private static final String TEST_PROCESS_KEY = "processKey1"; + private static final String PROCESS_KEY = "testProcessKey"; + private static final String TEST_PNF_RESOURCE_INSTANCE_NAME = "PNF_demo_resource"; + private static final String TEST_PNF_RESOURCE_BLUEPRINT_NAME = "blueprintOnap"; + private static final String TEST_PNF_RESOURCE_BLUEPRINT_VERSION = "1.0.1"; + private static final String TEST_PNF_RESOURCE_CUSTOMIZATION_UUID = "9acb3a83-8a52-412c-9a45-901764938144"; + private static final String TEST_PNF_CORRELATION_ID = "PNFDemo"; + private static final String TEST_PNF_UUID = "FakeID"; + private static final String TEST_PRC_CONTROLLER_ACTOR = "cds"; + private static final String TEST_TARGET_SOFTWARE_VERSION = "demo-sw-ver2.0.0"; + + private static final String TEST_BPMN_REQUEST = "{\"requestDetails\":{" + "\"requestInfo\":{" + + "\"source\":\"VID\"," + "\"suppressRollback\":false," + "\"requestorId\":\"demo\"," + + "\"productFamilyId\":\"SWUPid\"}," + "\"modelInfo\":{" + + "\"modelType\":\"service\",\"modelInvariantUuid\":\"439b7a2f-9524-4dbf-9eee-f2e05521df3f\"," + + "\"modelInvariantId\":\"439b7a2f-9524-4dbf-9eee-f2e05521df3f\"," + + "\"modelUuid\":\"42daaac6-5017-4e1e-96c8-6a27dfbe1421\",\"modelName\":\"PNF_int_service_2\"," + + "\"modelVersion\":\"1.0\"},\"requestParameters\":{\"userParams\":[{\"name\":\"aic_zone\"," + + "\"value\":\"nova\"},{\"name\":\"pnfId\",\"value\":\"PNFDemo\"},{\"name\":\"targetSoftwareVersion\",\"value\":\"demo-sw-ver2.0.0\"}]," + + "\"subscriptionServiceType\":\"SWUP\",\"aLaCarte\":false,\"pnfCorrelationId\":\"PNFDemo\"}," + + "\"cloudConfiguration\":{\"lcpCloudRegionId\":\"regionOne\",\"tenantId\":\"09a63533072f4a579d5c99c3b8fe94c6\"}," + + "\"subscriberInfo\":{\"globalSubscriberId\":\"ADemoCustomerInEric\"},\"project\":{\"projectName\":\"Project-Demonstration\"}," + + "\"owningEntity\":{\"owningEntityId\":\"5eae949c-1c50-4780-b8b5-7cbeb08856b4\",\"owningEntityName\":\"OE-Demonstration\"}}}"; + /** + * Testing model UUID, should be the same as specified in the TEST_SERVICE_MODEL_INFO. + */ + private static final String TEST_MODEL_UUID = "42daaac6-5017-4e1e-96c8-6a27dfbe1421"; + + @InjectMocks + private NfSoftwareUpgradeDispatcher nfSoftwareUpgradeDispatcher; + + @Mock + private PnfManagement pnfManagement; + + @Mock + private CatalogDbClient catalogDbClient; + + @Mock + private ObjectMapper mapper; + + private DelegateExecution execution = new DelegateExecutionFake(); + + @Before + public void setUp() throws IOException { + List pnfResourceCustomizations = new ArrayList<>(); + pnfResourceCustomizations.add(buildPnfResourceCustomization()); + given(catalogDbClient.getPnfResourceCustomizationByModelUuid(TEST_MODEL_UUID)) + .willReturn(pnfResourceCustomizations); + execution.setVariable(PROCESS_KEY, TEST_PROCESS_KEY); + execution.setVariable("bpmnRequest", TEST_BPMN_REQUEST); + mockMapper(); + mockAai(); + + } + + + @Test + public void testExecution_validCatalogDb_skipVariableSet() { + try { + nfSoftwareUpgradeDispatcher.execute(execution); + assertThat(execution.getVariable(MODEL_UUID)).isEqualTo(TEST_MODEL_UUID); + assertThat(execution.getVariable(PRC_TARGET_SOFTWARE_VERSION)).isEqualTo(TEST_TARGET_SOFTWARE_VERSION); + assertThat(execution.getVariable(PRC_BLUEPRINT_NAME)).isEqualTo(TEST_PNF_RESOURCE_BLUEPRINT_NAME); + assertThat(execution.getVariable(PRC_BLUEPRINT_VERSION)).isEqualTo(TEST_PNF_RESOURCE_BLUEPRINT_VERSION); + assertThat(execution.getVariable(PRC_CUSTOMIZATION_UUID)).isEqualTo(TEST_PNF_RESOURCE_CUSTOMIZATION_UUID); + assertThat(execution.getVariable(PRC_INSTANCE_NAME)).isEqualTo(TEST_PNF_RESOURCE_INSTANCE_NAME); + assertThat(execution.getVariable(PNF_CORRELATION_ID)).isEqualTo(TEST_PNF_CORRELATION_ID); + assertThat(execution.getVariable(PNF_UUID)).isEqualTo(TEST_PNF_UUID); + assertThat(execution.getVariable(PRC_CONTROLLER_ACTOR)).isEqualTo(TEST_PRC_CONTROLLER_ACTOR); + } catch (Exception e) { + e.printStackTrace(); + fail("Exception thrown" + e.getMessage()); + } + } + + private void mockAai() throws IOException { + Pnf pnf = new Pnf(); + pnf.setPnfId(TEST_PNF_UUID); + when(pnfManagement.getEntryFor(TEST_PNF_CORRELATION_ID)).thenReturn(Optional.of(pnf)); + } + + private PnfResourceCustomization buildPnfResourceCustomization() { + PnfResourceCustomization pnfResourceCustomization = new PnfResourceCustomization(); + pnfResourceCustomization.setSkipPostInstConf(true); + pnfResourceCustomization.setBlueprintName(TEST_PNF_RESOURCE_BLUEPRINT_NAME); + pnfResourceCustomization.setBlueprintVersion(TEST_PNF_RESOURCE_BLUEPRINT_VERSION); + pnfResourceCustomization.setModelInstanceName(TEST_PNF_RESOURCE_INSTANCE_NAME); + pnfResourceCustomization.setModelCustomizationUUID(TEST_PNF_RESOURCE_CUSTOMIZATION_UUID); + pnfResourceCustomization.setControllerActor(TEST_PRC_CONTROLLER_ACTOR); + return pnfResourceCustomization; + } + + private void mockMapper() throws IOException { + RequestDetails bpmnRequestDetails = new RequestDetails(); + + RequestInfo requestInfo = new RequestInfo(); + requestInfo.setInstanceName("demo"); + bpmnRequestDetails.setRequestInfo(requestInfo); + + RequestParameters requestParameters = new RequestParameters(); + List> userParams = new ArrayList<>(); + Map map = new HashMap<>(); + map.put("name", "targetSoftwareVersion"); + map.put("value", TEST_TARGET_SOFTWARE_VERSION); + userParams.add(map); + map = new HashMap<>(); + map.put("name", "pnfName"); + map.put("value", "PNFDemo"); + userParams.add(map); + requestParameters.setUserParams(userParams); + + bpmnRequestDetails.setRequestParameters(requestParameters); + + ModelInfo modelInfo = new ModelInfo(); + modelInfo.setModelInvariantUuid("439b7a2f-9524-4dbf-9eee-f2e05521df3f"); + modelInfo.setModelInvariantId("439b7a2f-9524-4dbf-9eee-f2e05521df3f"); + modelInfo.setModelUuid("42daaac6-5017-4e1e-96c8-6a27dfbe1421"); + modelInfo.setModelName("PNF_int_service_2"); + modelInfo.setModelVersion("1.0"); + + bpmnRequestDetails.setModelInfo(modelInfo); + + + doReturn(bpmnRequestDetails).when(mapper).readValue( + JsonUtils.getJsonValue(String.valueOf(execution.getVariable("bpmnRequest")), "requestDetails"), + RequestDetails.class); + } +} diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfManagementTestImpl.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfManagementTestImpl.java index 8577d9555b..b93902d9f7 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfManagementTestImpl.java +++ b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfManagementTestImpl.java @@ -49,6 +49,11 @@ public class PnfManagementTestImpl implements PnfManagement { created.put(pnfCorrelationId, entry); } + @Override + public void updateEntry(String pnfCorrelationId, Pnf entry) throws IOException { + created.put(pnfCorrelationId, entry); + } + @Override public void createRelation(String serviceInstanceId, String pnfName) {} diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfManagementThrowingException.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfManagementThrowingException.java index f9b467c650..77377db9d9 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfManagementThrowingException.java +++ b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PnfManagementThrowingException.java @@ -37,6 +37,11 @@ public class PnfManagementThrowingException implements PnfManagement { throw new IOException(); } + @Override + public void updateEntry(String pnfCorrelationId, Pnf entry) throws IOException { + throw new IOException(); + } + @Override public void createRelation(String serviceInstanceId, String pnfName) throws IOException { throw new IOException(); diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/UpdatePnfEntryInAaiTest.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/UpdatePnfEntryInAaiTest.java new file mode 100644 index 0000000000..bddfe5b180 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/UpdatePnfEntryInAaiTest.java @@ -0,0 +1,91 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.bpmn.infrastructure.pnf.delegate; + +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.onap.aai.domain.yang.Pnf; +import org.onap.so.bpmn.infrastructure.pnf.management.PnfManagement; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import static org.junit.Assert.*; +import java.io.IOException; +import java.util.Optional; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.*; +import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_CORRELATION_ID; +import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_UUID; +import static org.onap.so.client.cds.PayloadConstants.PRC_TARGET_SOFTWARE_VERSION; + +@RunWith(SpringJUnit4ClassRunner.class) +public class UpdatePnfEntryInAaiTest { + + @InjectMocks + private UpdatePnfEntryInAai updatePnfEntryInAai; + + @Mock + private PnfManagement pnfManagementTest; + + private DelegateExecution execution; + + + + @Test + public void shouldSetSwVersion() throws Exception { + // given + setupPnf(); + setupExecution(); + + // when + updatePnfEntryInAai.execute(execution); + + // verify + Optional modifiedEntry = pnfManagementTest.getEntryFor("testPnfCorrelationId"); + assertNotNull(modifiedEntry.get()); + assertThat(modifiedEntry.get().getPnfId()).isEqualTo("testtest"); + assertThat(modifiedEntry.get().getPnfName()).isEqualTo("testPnfCorrelationId"); + assertThat(modifiedEntry.get().getSwVersion()).isEqualTo("demo-1.2"); + verify(pnfManagementTest, times(2)).getEntryFor(anyString()); + } + + private void setupPnf() { + try { + Pnf pnf = new Pnf(); + pnf.setSwVersion("1"); + pnf.setPnfId("testtest"); + pnf.setPnfName("testPnfCorrelationId"); + doReturn(Optional.of(pnf)).when(pnfManagementTest).getEntryFor(anyString()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void setupExecution() { + execution = mock(DelegateExecution.class); + given(execution.getVariable(eq(PNF_CORRELATION_ID))).willReturn("testPnfCorrelationId"); + given(execution.getVariable(eq(PNF_UUID))).willReturn("testtest"); + given(execution.getVariable(eq(PRC_TARGET_SOFTWARE_VERSION))).willReturn("demo-1.2"); + } +} -- cgit 1.2.3-korg