summaryrefslogtreecommitdiffstats
path: root/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/so/TestSoLifecycleManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/so/TestSoLifecycleManager.java')
-rw-r--r--nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/so/TestSoLifecycleManager.java514
1 files changed, 514 insertions, 0 deletions
diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/so/TestSoLifecycleManager.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/so/TestSoLifecycleManager.java
new file mode 100644
index 00000000..ebc2159d
--- /dev/null
+++ b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/so/TestSoLifecycleManager.java
@@ -0,0 +1,514 @@
+/*
+ * Copyright 2016-2017, Nokia Corporation
+ *
+ * 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.
+ */
+package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.so;
+
+import com.google.gson.JsonObject;
+import com.nokia.cbam.lcm.v32.model.ExtVirtualLinkData;
+import com.nokia.cbam.lcm.v32.model.VimSoftwareImage;
+import com.nokia.cbam.lcm.v32.model.VnfInfo;
+import com.nokia.cbam.lcm.v32.model.VnfProperty;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.VimInfoProvider;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.AdditionalParameters;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.JobManager;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
+import org.onap.vnfmadapter.so.model.*;
+import org.onap.vnfmdriver.model.*;
+
+import static com.nokia.cbam.lcm.v32.model.VimInfo.VimInfoTypeEnum.*;
+import static junit.framework.TestCase.assertEquals;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider.NOKIA_LCM_API_VERSION;
+import static org.springframework.test.util.ReflectionTestUtils.setField;
+
+public class TestSoLifecycleManager extends TestBase {
+
+ private static final String VNFD_ID = "cbamVnfdId";
+ @Mock
+ private LifecycleManager lifecycleManager;
+ @Mock
+ private VimInfoProvider vimInfoProvider;
+ @Mock
+ private JobManager jobManager;
+ private SoLifecycleManager soLifecycleManager;
+
+ @Before
+ public void init() {
+ setField(SoLifecycleManager.class, "logger", logger);
+ soLifecycleManager = new SoLifecycleManager(lifecycleManager, vimInfoProvider, cbamRestApiProvider, jobManager);
+ }
+
+ /**
+ * test VNF creation
+ */
+ @Test
+ public void testVnfCreation() throws Exception {
+ SoVnfCreationRequest onapRequest = new SoVnfCreationRequest();
+ Object additionalParams = new JsonObject();
+ onapRequest.setAdditionalParams(additionalParams);
+ onapRequest.setCsarId("csarId");
+ onapRequest.setDescription("description");
+ onapRequest.setName("name");
+ VnfInfo vnfInfo = new VnfInfo();
+ vnfInfo.setId(VNF_ID);
+ LifecycleManager.VnfCreationResult genericResponse = new LifecycleManager.VnfCreationResult(vnfInfo, VNFD_ID);
+ when(lifecycleManager.create(VNFM_ID, "csarId", "name", "description")).thenReturn(genericResponse);
+ //when
+ SoVnfCreationResponse response = soLifecycleManager.create(VNFM_ID, onapRequest);
+ //verify
+ assertEquals(VNF_ID, response.getVnfId());
+ }
+
+ /**
+ * test VNF activation without parameters
+ */
+ @Test
+ public void testVnfActivation() throws Exception {
+ SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
+ soRequest.setVimId(VIM_ID);
+
+ JsonObject additionalParams = new JsonObject();
+ soRequest.setAdditionalParams(additionalParams);
+ org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
+ vnfInfo.setVnfdId(VNFD_ID);
+ when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
+ ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
+ ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
+ VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
+ instantiationResponse.setJobId(JOB_ID);
+ when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
+ org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
+ esrInfo.setUrl("http://localhost:123/v3");
+ esrInfo.setDomain("domain");
+ when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
+ VnfInfo cbamVnfInfo = new VnfInfo();
+ cbamVnfInfo.setExtensions(new ArrayList<>());
+ VnfProperty onapVnfdId = new VnfProperty();
+ cbamVnfInfo.getExtensions().add(onapVnfdId);
+ onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
+ onapVnfdId.setValue("csarId");
+ when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
+ //when
+ SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
+ //verify
+ assertEquals(JOB_ID, jobHandler.getJobId());
+ AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
+ assertEquals(0, actualAdditionalParameters.getComputeResourceFlavours().size());
+ assertEquals(additionalParams, actualAdditionalParameters.getAdditionalParams());
+ assertEquals(0, actualAdditionalParameters.getExternalConnectionPointAddresses().size());
+ assertEquals(0, actualAdditionalParameters.getExtManagedVirtualLinks().size());
+ assertEquals(0, actualAdditionalParameters.getExtVirtualLinks().size());
+ assertEquals("default", actualAdditionalParameters.getInstantiationLevel());
+ assertEquals(0, actualAdditionalParameters.getSoftwareImages().size());
+ assertEquals(OPENSTACK_V3_INFO, actualAdditionalParameters.getVimType());
+ assertEquals(0, actualAdditionalParameters.getZones().size());
+ assertEquals(0, extLinks.getValue().size());
+ }
+
+
+ /**
+ * test VNF activation without parameters for V2 based API
+ */
+ @Test
+ public void testVnfActivationForV2() throws Exception {
+ SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
+ soRequest.setVimId(VIM_ID);
+
+ JsonObject additionalParams = new JsonObject();
+ soRequest.setAdditionalParams(additionalParams);
+ org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
+ vnfInfo.setVnfdId(VNFD_ID);
+ when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
+ ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
+ ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
+ VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
+ instantiationResponse.setJobId(JOB_ID);
+ when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
+ org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
+ esrInfo.setUrl("http://localhost:123/v2");
+ when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
+ VnfInfo cbamVnfInfo = new VnfInfo();
+ cbamVnfInfo.setExtensions(new ArrayList<>());
+ VnfProperty onapVnfdId = new VnfProperty();
+ cbamVnfInfo.getExtensions().add(onapVnfdId);
+ onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
+ onapVnfdId.setValue("csarId");
+ when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
+ //when
+ SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
+ //verify
+ assertEquals(JOB_ID, jobHandler.getJobId());
+ AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
+ assertEquals(OPENSTACK_V2_INFO, actualAdditionalParameters.getVimType());
+ }
+
+ /**
+ * test VNF activation without parameters for vCloud based API
+ */
+ @Test
+ public void testVnfActivationForVcloud() throws Exception {
+ SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
+ soRequest.setVimId(VIM_ID);
+
+ JsonObject additionalParams = new JsonObject();
+ soRequest.setAdditionalParams(additionalParams);
+ org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
+ vnfInfo.setVnfdId(VNFD_ID);
+ when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
+ ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
+ ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
+ VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
+ instantiationResponse.setJobId(JOB_ID);
+ when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
+ org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
+ esrInfo.setUrl("http://localhost:123/");
+ esrInfo.setDomain("domain");
+ when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
+ VnfInfo cbamVnfInfo = new VnfInfo();
+ cbamVnfInfo.setExtensions(new ArrayList<>());
+ VnfProperty onapVnfdId = new VnfProperty();
+ cbamVnfInfo.getExtensions().add(onapVnfdId);
+ onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
+ onapVnfdId.setValue("csarId");
+ when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
+ //when
+ SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
+ //verify
+ assertEquals(JOB_ID, jobHandler.getJobId());
+ AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
+ assertEquals(VMWARE_VCLOUD_INFO, actualAdditionalParameters.getVimType());
+ }
+
+ /**
+ * test VNF activation with VDU mappings
+ */
+ @Test
+ public void testVnfActivationWithVdu() throws Exception {
+ SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
+ soRequest.setVimId(VIM_ID);
+ JsonObject additionalParams = new JsonObject();
+ soRequest.setAdditionalParams(additionalParams);
+ org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
+ vnfInfo.setVnfdId(VNFD_ID);
+ when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
+ ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
+ ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
+ VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
+ instantiationResponse.setJobId(JOB_ID);
+ when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
+ org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
+ esrInfo.setUrl("http://localhost:123/v3");
+ esrInfo.setDomain("domain");
+ when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
+ VnfInfo cbamVnfInfo = new VnfInfo();
+ cbamVnfInfo.setExtensions(new ArrayList<>());
+ VnfProperty onapVnfdId = new VnfProperty();
+ cbamVnfInfo.getExtensions().add(onapVnfdId);
+ onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
+ onapVnfdId.setValue("csarId");
+ when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
+ soRequest.setVduMappings(new ArrayList<>());
+ SoVduMapping vduMapping = new SoVduMapping();
+ soRequest.getVduMappings().add(vduMapping);
+ vduMapping.setFlavourId("flavorId");
+ vduMapping.setImageId("imageId");
+ vduMapping.setVduId("vduId");
+ //when
+ SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
+ //verify
+ assertEquals(JOB_ID, jobHandler.getJobId());
+ AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
+ assertEquals(1, actualAdditionalParameters.getComputeResourceFlavours().size());
+ assertEquals(1, actualAdditionalParameters.getSoftwareImages().size());
+ VimSoftwareImage image = actualAdditionalParameters.getSoftwareImages().get(0);
+ assertEquals(VIM_ID, image.getVimId());
+ assertEquals("vduId_image", image.getVnfdSoftwareImageId());
+ assertEquals("imageId", image.getResourceId());
+ assertEquals(VIM_ID, actualAdditionalParameters.getComputeResourceFlavours().get(0).getVimId());
+ assertEquals("flavorId", actualAdditionalParameters.getComputeResourceFlavours().get(0).getResourceId());
+ assertEquals("vduId", actualAdditionalParameters.getComputeResourceFlavours().get(0).getVnfdVirtualComputeDescId());
+ assertEquals(OPENSTACK_V3_INFO, actualAdditionalParameters.getVimType());
+ }
+
+ /**
+ * test VNF activation with network mappings
+ */
+ @Test
+ public void testVnfActivationWithNetworkMapping() throws Exception {
+ SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
+ soRequest.setVimId(VIM_ID);
+ JsonObject additionalParams = new JsonObject();
+ soRequest.setAdditionalParams(additionalParams);
+ org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
+ vnfInfo.setVnfdId(VNFD_ID);
+ when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
+ ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
+ ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
+ VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
+ instantiationResponse.setJobId(JOB_ID);
+ when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
+ org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
+ esrInfo.setUrl("http://localhost:123/v3");
+ esrInfo.setDomain("domain");
+ when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
+ VnfInfo cbamVnfInfo = new VnfInfo();
+ cbamVnfInfo.setExtensions(new ArrayList<>());
+ VnfProperty onapVnfdId = new VnfProperty();
+ cbamVnfInfo.getExtensions().add(onapVnfdId);
+ onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
+ onapVnfdId.setValue("csarId");
+ when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
+ soRequest.setNetworkMappings(new ArrayList<>());
+ SoNetworkMapping networkMapping = new SoNetworkMapping();
+ networkMapping.setVldId("myVldId");
+ networkMapping.setNetworkProviderId("providerId");
+ networkMapping.setAssignedAddresses(new ArrayList<>());
+ SoAssignedAddresses e1 = new SoAssignedAddresses();
+ e1.setIpAddress("1.2.3.4");
+ e1.setCpdId("cpdId");
+ SoAssignedAddresses e2 = new SoAssignedAddresses();
+ e2.setIpAddress("1.2.3.5");
+ e2.setCpdId("cpdId2");
+ SoAssignedAddresses e3 = new SoAssignedAddresses();
+ e3.setIpAddress("1.2.3.6");
+ e3.setCpdId("cpdId2");
+ SoAssignedAddresses e4 = new SoAssignedAddresses();
+ e4.setIpAddress("1.2.3.6");
+ e4.setCpdId("cpdId2");
+ networkMapping.getAssignedAddresses().add(e1);
+ networkMapping.getAssignedAddresses().add(e2);
+ networkMapping.getAssignedAddresses().add(e3);
+ networkMapping.getAssignedAddresses().add(e4);
+ SoNetworkMapping networkMapping2 = new SoNetworkMapping();
+ soRequest.getNetworkMappings().add(networkMapping);
+ soRequest.getNetworkMappings().add(networkMapping2);
+ networkMapping2.setVldId("myVldId2");
+ networkMapping2.setNetworkProviderId("providerId2");
+
+ //when
+ SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
+ //verify
+ assertEquals(JOB_ID, jobHandler.getJobId());
+ AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
+ assertEquals(2, actualAdditionalParameters.getExtVirtualLinks().size());
+ ExtVirtualLinkData actualVl = actualAdditionalParameters.getExtVirtualLinks().get(0);
+ assertEquals(VIM_ID, actualVl.getVimId());
+ assertEquals("providerId", actualVl.getResourceId());
+ assertEquals("myVldId", actualVl.getExtVirtualLinkId());
+ assertEquals(2, actualVl.getExtCps().size());
+ assertEquals("cpdId", actualVl.getExtCps().get(0).getCpdId());
+ assertEquals("1.2.3.4", actualVl.getExtCps().get(0).getAddresses().get(0).getIp());
+ assertEquals("cpdId2", actualVl.getExtCps().get(1).getCpdId());
+ assertEquals("1.2.3.5", actualVl.getExtCps().get(1).getAddresses().get(0).getIp());
+ assertEquals("1.2.3.6", actualVl.getExtCps().get(1).getAddresses().get(1).getIp());
+ }
+
+ /**
+ * test VNF activation with server mappings
+ */
+ @Test
+ public void testVnfActivationWithServerMappings() throws Exception {
+ SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
+ soRequest.setVimId(VIM_ID);
+ JsonObject additionalParams = new JsonObject();
+ soRequest.setAdditionalParams(additionalParams);
+ org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
+ vnfInfo.setVnfdId(VNFD_ID);
+ when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
+ ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
+ ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
+ VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
+ instantiationResponse.setJobId(JOB_ID);
+ when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
+ org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
+ esrInfo.setUrl("http://localhost:123/v3");
+ esrInfo.setDomain("domain");
+ when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
+ VnfInfo cbamVnfInfo = new VnfInfo();
+ cbamVnfInfo.setExtensions(new ArrayList<>());
+ VnfProperty onapVnfdId = new VnfProperty();
+ cbamVnfInfo.getExtensions().add(onapVnfdId);
+ onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
+ onapVnfdId.setValue("csarId");
+ when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
+ soRequest.setServerMappings(new ArrayList<>());
+ SoServerMapping s1 = new SoServerMapping();
+ soRequest.getServerMappings().add(s1);
+ s1.setVduId("vduId1");
+ s1.setAvailabilityZoneId("azId1");
+ SoServerMapping s2 = new SoServerMapping();
+ soRequest.getServerMappings().add(s2);
+ s2.setVduId("vduId1");
+ s2.setAvailabilityZoneId("azId1");
+ SoServerMapping s3 = new SoServerMapping();
+ soRequest.getServerMappings().add(s3);
+ s3.setVduId("vduId2");
+ s3.setAvailabilityZoneId("azId1");
+
+ //when
+ SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
+ //verify
+ assertEquals(JOB_ID, jobHandler.getJobId());
+ AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
+ assertEquals(2, actualAdditionalParameters.getZones().size());
+ assertEquals(VIM_ID, actualAdditionalParameters.getZones().get(0).getVimId());
+ assertEquals("azId1", actualAdditionalParameters.getZones().get(0).getResourceId());
+ assertEquals("vduId1", actualAdditionalParameters.getZones().get(0).getId());
+ assertEquals(VIM_ID, actualAdditionalParameters.getZones().get(1).getVimId());
+ assertEquals("azId1", actualAdditionalParameters.getZones().get(1).getResourceId());
+ assertEquals("vduId2", actualAdditionalParameters.getZones().get(1).getId());
+ }
+
+ /**
+ * test VNF scale
+ */
+ @Test
+ public void testScaling() throws Exception {
+ SoVnfScaleRequest soRequest = new SoVnfScaleRequest();
+ ArgumentCaptor<org.onap.vnfmdriver.model.VnfScaleRequest> driverRequest = ArgumentCaptor.forClass(org.onap.vnfmdriver.model.VnfScaleRequest.class);
+ JobInfo jobInfo = new JobInfo();
+ jobInfo.setJobId(JOB_ID);
+
+ soRequest.setAspectId("aspectId");
+ soRequest.setDirection(SoScaleDirection.IN);
+ soRequest.setSteps(2);
+ JsonObject additionalParams = new JsonObject();
+ soRequest.setAdditionalParams(additionalParams);
+ when(lifecycleManager.scaleVnf(eq(VNFM_ID), eq(VNF_ID), driverRequest.capture(), eq(httpResponse))).thenReturn(jobInfo);
+ //when
+ SoJobHandler jobHandler = soLifecycleManager.scale(VNFM_ID, VNF_ID, soRequest, httpResponse);
+ //verify
+ assertEquals(JOB_ID, jobHandler.getJobId());
+ assertEquals(2, Integer.parseInt(driverRequest.getValue().getNumberOfSteps()));
+ assertEquals("aspectId", driverRequest.getValue().getAspectId());
+ assertEquals(org.onap.vnfmdriver.model.ScaleDirection.IN, driverRequest.getValue().getType());
+ assertEquals(additionalParams, driverRequest.getValue().getAdditionalParam());
+ }
+
+ /**
+ * test VNF heal
+ */
+ @Test
+ public void testHeal() throws Exception {
+ SoVnfHealRequest soRequest = new SoVnfHealRequest();
+ ArgumentCaptor<org.onap.vnfmdriver.model.VnfHealRequest> driverRequest = ArgumentCaptor.forClass(org.onap.vnfmdriver.model.VnfHealRequest.class);
+ JobInfo jobInfo = new JobInfo();
+ jobInfo.setJobId(JOB_ID);
+
+ soRequest.setVnfcId(VNF_ID + "_vnfcId");
+ JsonObject additionalParams = new JsonObject();
+ soRequest.setAdditionalParams(additionalParams);
+ when(lifecycleManager.healVnf(eq(VNFM_ID), eq(VNF_ID), driverRequest.capture(), eq(Optional.of("vnfcId")), eq(httpResponse))).thenReturn(jobInfo);
+ //when
+ SoJobHandler jobHandler = soLifecycleManager.heal(VNFM_ID, VNF_ID, soRequest, httpResponse);
+ //verify
+ assertEquals(JOB_ID, jobHandler.getJobId());
+ assertEquals("notUsedByDriver", driverRequest.getValue().getAffectedvm().getVduid());
+ assertEquals("notUsedByDriver", driverRequest.getValue().getAffectedvm().getVimid());
+ assertEquals("unknown", driverRequest.getValue().getAffectedvm().getVmname());
+ assertEquals("heal", driverRequest.getValue().getAction());
+ }
+
+ /**
+ * test VNF deactivation
+ */
+ @Test
+ public void testDeactivation() throws Exception {
+ SoVnfTerminationRequest soRequest = new SoVnfTerminationRequest();
+ ArgumentCaptor<org.onap.vnfmdriver.model.VnfTerminateRequest> driverRequest = ArgumentCaptor.forClass(org.onap.vnfmdriver.model.VnfTerminateRequest.class);
+ JobInfo jobInfo = new JobInfo();
+ jobInfo.setJobId(JOB_ID);
+ soRequest.setGracefulTerminationTimeoutInMs(1234);
+ soRequest.setMode(SoTerminationMode.GRACEFUL);
+ JsonObject additionalParams = new JsonObject();
+ soRequest.setAdditionalParams(additionalParams);
+ when(lifecycleManager.terminateAndDelete(eq(VNFM_ID), eq(VNF_ID), driverRequest.capture(), eq(httpResponse))).thenReturn(jobInfo);
+ //when
+ SoJobHandler jobHandler = soLifecycleManager.deactivate(VNFM_ID, VNF_ID, soRequest, httpResponse);
+ //verify
+ assertEquals(JOB_ID, jobHandler.getJobId());
+ assertEquals(VnfTerminationType.GRACEFUL, driverRequest.getValue().getTerminationType());
+ assertEquals("1234", driverRequest.getValue().getGracefulTerminationTimeout());
+ }
+
+ /**
+ * test VNF deletion
+ */
+ @Test
+ public void testDelete() throws Exception {
+ //when
+ soLifecycleManager.delete(VNFM_ID, VNF_ID);
+ //verify
+ verify(lifecycleManager).deleteVnf(VNFM_ID, VNF_ID);
+ }
+
+ /**
+ * test VNF custom operation
+ */
+ @Test
+ public void testCustomOperation() throws Exception {
+ SoVnfCustomOperation soRequest = new SoVnfCustomOperation();
+ JobInfo jobInfo = new JobInfo();
+ jobInfo.setJobId(JOB_ID);
+ soRequest.setOperationId("operationId");
+ JsonObject additionalParams = new JsonObject();
+ soRequest.setAdditionalParams(additionalParams);
+ when(lifecycleManager.customOperation(VNFM_ID, VNF_ID, "operationId", additionalParams, httpResponse)).thenReturn(jobInfo);
+ //when
+ SoJobHandler jobHandler = soLifecycleManager.customOperation(VNFM_ID, VNF_ID, soRequest, httpResponse);
+ //verify
+ assertEquals(JOB_ID, jobHandler.getJobId());
+ }
+
+
+ /**
+ * test VNF custom operation
+ */
+ @Test
+ public void testJobDetails() throws Exception {
+ JobDetailInfo currentJobDetails = new JobDetailInfo();
+ currentJobDetails.setJobId(JOB_ID);
+ when(jobManager.getJob(VNFM_ID, JOB_ID)).thenReturn(currentJobDetails);
+ currentJobDetails.setResponseDescriptor(new JobDetailInfoResponseDescriptor());
+
+ assertJob(currentJobDetails, SoJobStatus.FINISHED, JobStatus.FINISHED);
+ assertJob(currentJobDetails, SoJobStatus.FAILED, JobStatus.ERROR);
+ assertJob(currentJobDetails, SoJobStatus.FAILED, JobStatus.TIMEOUT);
+ assertJob(currentJobDetails, SoJobStatus.STARTED, JobStatus.STARTED);
+ assertJob(currentJobDetails, SoJobStatus.STARTED, JobStatus.PROCESSING);
+
+ }
+
+ private void assertJob(JobDetailInfo currentJobDetails, SoJobStatus expectedState, JobStatus started) {
+ currentJobDetails.getResponseDescriptor().setStatus(started);
+ //when
+ SoJobDetail jobDetail = soLifecycleManager.getJobDetails(VNFM_ID, JOB_ID);
+ //verify
+ assertEquals(JOB_ID, jobDetail.getJobId());
+ assertEquals(expectedState, jobDetail.getStatus());
+ }
+
+
+} \ No newline at end of file