2  * Copyright 2016-2017, Nokia Corporation
 
   4  * Licensed under the Apache License, Version 2.0 (the "License");
 
   5  * you may not use this file except in compliance with the License.
 
   6  * You may obtain a copy of the License at
 
   8  *     http://www.apache.org/licenses/LICENSE-2.0
 
  10  * Unless required by applicable law or agreed to in writing, software
 
  11  * distributed under the License is distributed on an "AS IS" BASIS,
 
  12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  13  * See the License for the specific language governing permissions and
 
  14  * limitations under the License.
 
  16 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
 
  18 import java.util.ArrayList;
 
  19 import org.junit.Before;
 
  20 import org.junit.Test;
 
  21 import org.mockito.ArgumentCaptor;
 
  22 import org.mockito.Mock;
 
  23 import org.onap.aai.api.CloudInfrastructureApi;
 
  24 import org.onap.aai.model.LInterface;
 
  25 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
 
  26 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
 
  27 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.ReportedAffectedCp;
 
  29 import static java.lang.Boolean.FALSE;
 
  30 import static java.lang.Boolean.TRUE;
 
  32 import static junit.framework.TestCase.assertEquals;
 
  33 import static org.mockito.Matchers.eq;
 
  34 import static org.mockito.Mockito.when;
 
  35 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.AbstractManager.buildRelationshipData;
 
  36 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.TestGenericVnfManager.assertRelation;
 
  37 import static org.springframework.test.util.ReflectionTestUtils.setField;
 
  39 public class TestLInterfaceManager extends TestBase {
 
  40     private ArgumentCaptor<LInterface> payload = ArgumentCaptor.forClass(LInterface.class);
 
  43     private AAIRestApiProvider aaiRestApiProvider;
 
  44     private LInterfaceManager lInterfaceManager;
 
  46     private CloudInfrastructureApi cloudInfrastructureApi;
 
  50         lInterfaceManager = new LInterfaceManager(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
 
  51         setField(LInterfaceManager.class, "logger", logger);
 
  52         when(aaiRestApiProvider.getCloudInfrastructureApi()).thenReturn(cloudInfrastructureApi);
 
  56      * test update success scenario
 
  59     public void testUpdate() throws Exception {
 
  60         ReportedAffectedCp affectedCp = new ReportedAffectedCp();
 
  61         affectedCp.setCpdId("cpdId");
 
  62         affectedCp.setTenantId("myTenantId");
 
  63         affectedCp.setProviderId("portProviderId");
 
  64         affectedCp.setServerProviderId("serverProviderId");
 
  65         affectedCp.setNetworkProviderId("networkProviderId");
 
  66         affectedCp.setMacAddress("mac");
 
  67         affectedCp.setIpAddress("1.2.3.4");
 
  68         affectedCp.setEcpdId("ecpdId");
 
  69         affectedCp.setName("name");
 
  70         affectedCp.setCpId("cpId");
 
  71         LInterface lInterface = new LInterface();
 
  72         lInterface.setResourceVersion("v3");
 
  73         lInterface.setRelationshipList(new ArrayList<>());
 
  74         when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
 
  75         when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), eq("cpId"), payload.capture())).thenReturn(VOID_OBSERVABLE.value());
 
  77         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
 
  79         LInterface actualInterface = payload.getValue();
 
  80         assertEquals(TRUE, actualInterface.isInMaint());
 
  81         assertEquals(FALSE, actualInterface.isIsIpUnnumbered());
 
  82         assertEquals(FALSE, actualInterface.isIsPortMirrored());
 
  83         assertEquals("name", actualInterface.getInterfaceName());
 
  84         assertEquals("cpId", actualInterface.getInterfaceId());
 
  85         assertEquals("cpdId", actualInterface.getInterfaceRole());
 
  86         assertEquals("mac", actualInterface.getMacaddr());
 
  87         assertEquals("active", actualInterface.getProvStatus());
 
  88         assertEquals(1, actualInterface.getL3InterfaceIpv4AddressList().size());
 
  89         assertEquals(null, actualInterface.getL3InterfaceIpv6AddressList());
 
  90         assertEquals("networkProviderId", actualInterface.getL3InterfaceIpv4AddressList().get(0).getNeutronNetworkId());
 
  91         assertEquals("1.2.3.4", actualInterface.getL3InterfaceIpv4AddressList().get(0).getL3InterfaceIpv4Address());
 
  92         assertRelation(actualInterface.getRelationshipList(), "generic-vnf", buildRelationshipData("generic-vnf.vnf-id", VNF_ID));
 
  93         VOID_OBSERVABLE.assertCalled();
 
  97      * test update success scenario without IP
 
 100     public void testUpdateWithoutIp() throws Exception {
 
 101         ReportedAffectedCp affectedCp = new ReportedAffectedCp();
 
 102         affectedCp.setCpdId("cpdId");
 
 103         affectedCp.setTenantId("myTenantId");
 
 104         affectedCp.setProviderId("portProviderId");
 
 105         affectedCp.setServerProviderId("serverProviderId");
 
 106         affectedCp.setNetworkProviderId("networkProviderId");
 
 107         affectedCp.setMacAddress("mac");
 
 108         affectedCp.setEcpdId("ecpdId");
 
 109         affectedCp.setName("name");
 
 110         affectedCp.setCpId("cpId");
 
 111         LInterface lInterface = new LInterface();
 
 112         lInterface.setResourceVersion("v3");
 
 113         when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
 
 114         when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), eq("cpId"), payload.capture())).thenReturn(VOID_OBSERVABLE.value());
 
 116         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
 
 118         LInterface actualInterface = payload.getValue();
 
 119         assertEquals(TRUE, actualInterface.isInMaint());
 
 120         assertEquals(FALSE, actualInterface.isIsIpUnnumbered());
 
 121         assertEquals(FALSE, actualInterface.isIsPortMirrored());
 
 122         assertEquals("name", actualInterface.getInterfaceName());
 
 123         assertEquals("cpId", actualInterface.getInterfaceId());
 
 124         assertEquals("cpdId", actualInterface.getInterfaceRole());
 
 125         assertEquals("mac", actualInterface.getMacaddr());
 
 126         assertEquals("active", actualInterface.getProvStatus());
 
 127         assertEquals(null, actualInterface.getL3InterfaceIpv6AddressList());
 
 128         assertEquals(null, actualInterface.getL3InterfaceIpv4AddressList());
 
 129         assertRelation(actualInterface.getRelationshipList(), "generic-vnf", buildRelationshipData("generic-vnf.vnf-id", VNF_ID));
 
 130         VOID_OBSERVABLE.assertCalled();
 
 134      * test update success scenario
 
 137     public void testExistingUpdate() throws Exception {
 
 138         ReportedAffectedCp affectedCp = new ReportedAffectedCp();
 
 139         affectedCp.setCpdId("cpdId");
 
 140         affectedCp.setTenantId("myTenantId");
 
 141         affectedCp.setProviderId("portProviderId");
 
 142         affectedCp.setServerProviderId("serverProviderId");
 
 143         affectedCp.setNetworkProviderId("networkProviderId");
 
 144         affectedCp.setMacAddress("mac");
 
 145         affectedCp.setIpAddress("1.2.3.4");
 
 146         affectedCp.setEcpdId("ecpdId");
 
 147         affectedCp.setName("name");
 
 148         affectedCp.setCpId("cpId");
 
 149         LInterface lInterface = new LInterface();
 
 150         lInterface.setResourceVersion("v3");
 
 151         lInterface.setRelationshipList(new ArrayList<>());
 
 152         lInterface.getRelationshipList().add(VserverManager.linkTo(VIM_ID, "b", "c"));
 
 153         when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
 
 154         when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), eq("cpId"), payload.capture())).thenReturn(VOID_OBSERVABLE.value());
 
 156         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
 
 158         LInterface actualInterface = payload.getValue();
 
 159         assertEquals(TRUE, actualInterface.isInMaint());
 
 160         assertEquals(FALSE, actualInterface.isIsIpUnnumbered());
 
 161         assertEquals(FALSE, actualInterface.isIsPortMirrored());
 
 162         assertEquals("name", actualInterface.getInterfaceName());
 
 163         assertEquals("cpId", actualInterface.getInterfaceId());
 
 164         assertEquals("cpdId", actualInterface.getInterfaceRole());
 
 165         assertEquals("mac", actualInterface.getMacaddr());
 
 166         assertEquals("active", actualInterface.getProvStatus());
 
 167         assertEquals(1, actualInterface.getL3InterfaceIpv4AddressList().size());
 
 168         assertEquals(null, actualInterface.getL3InterfaceIpv6AddressList());
 
 169         assertEquals("networkProviderId", actualInterface.getL3InterfaceIpv4AddressList().get(0).getNeutronNetworkId());
 
 170         assertEquals("1.2.3.4", actualInterface.getL3InterfaceIpv4AddressList().get(0).getL3InterfaceIpv4Address());
 
 171         assertEquals("v3", lInterface.getResourceVersion());
 
 172         assertRelation(actualInterface.getRelationshipList(), "generic-vnf", buildRelationshipData("generic-vnf.vnf-id", VNF_ID));
 
 173         assertEquals(2, lInterface.getRelationshipList().size());
 
 174         VOID_OBSERVABLE.assertCalled();
 
 178      * test update success scenario for IPv6 address
 
 181     public void testUpdateForIpv6() throws Exception {
 
 182         ReportedAffectedCp affectedCp = new ReportedAffectedCp();
 
 183         affectedCp.setCpdId("cpdId");
 
 184         affectedCp.setTenantId("myTenantId");
 
 185         affectedCp.setProviderId("portProviderId");
 
 186         affectedCp.setServerProviderId("serverProviderId");
 
 187         affectedCp.setNetworkProviderId("networkProviderId");
 
 188         affectedCp.setMacAddress("mac");
 
 189         affectedCp.setIpAddress("::");
 
 190         affectedCp.setEcpdId("ecpdId");
 
 191         affectedCp.setName("name");
 
 192         affectedCp.setCpId("cpId");
 
 193         LInterface lInterface = new LInterface();
 
 194         lInterface.setResourceVersion("v3");
 
 195         lInterface.setRelationshipList(new ArrayList<>());
 
 196         when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
 
 197         when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), eq("cpId"), payload.capture())).thenReturn(VOID_OBSERVABLE.value());
 
 199         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, false);
 
 201         LInterface actualInterface = payload.getValue();
 
 202         assertEquals(FALSE, actualInterface.isInMaint());
 
 203         assertEquals(FALSE, actualInterface.isIsIpUnnumbered());
 
 204         assertEquals(FALSE, actualInterface.isIsPortMirrored());
 
 205         assertEquals("name", actualInterface.getInterfaceName());
 
 206         assertEquals("cpId", actualInterface.getInterfaceId());
 
 207         assertEquals("cpdId", actualInterface.getInterfaceRole());
 
 208         assertEquals("mac", actualInterface.getMacaddr());
 
 209         assertEquals("active", actualInterface.getProvStatus());
 
 210         assertEquals(null, actualInterface.getL3InterfaceIpv4AddressList());
 
 211         assertEquals(1, actualInterface.getL3InterfaceIpv6AddressList().size());
 
 212         assertEquals("networkProviderId", actualInterface.getL3InterfaceIpv6AddressList().get(0).getNeutronNetworkId());
 
 213         assertEquals("::", actualInterface.getL3InterfaceIpv6AddressList().get(0).getL3InterfaceIpv6Address());
 
 214         assertRelation(actualInterface.getRelationshipList(), "generic-vnf", buildRelationshipData("generic-vnf.vnf-id", VNF_ID));
 
 218      * test L3 network deletion
 
 221     public void testDelete() throws Exception {
 
 222         ReportedAffectedCp affectedCp = new ReportedAffectedCp();
 
 223         affectedCp.setCpId("cpId");
 
 224         affectedCp.setCpdId("cpdId");
 
 225         affectedCp.setTenantId("myTenantId");
 
 226         affectedCp.setProviderId("portProviderId");
 
 227         affectedCp.setServerProviderId("serverProviderId");
 
 228         affectedCp.setNetworkProviderId("networkProviderId");
 
 229         LInterface lInterface = new LInterface();
 
 230         lInterface.setResourceVersion("v3");
 
 231         lInterface.setRelationshipList(new ArrayList<>());
 
 232         when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
 
 234         lInterfaceManager.delete(VIM_ID, affectedCp);
 
 236         cloudInfrastructureApi.deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", "v3");
 
 237         VOID_OBSERVABLE.assertCalled();
 
 244     public void testInheritence() {
 
 245         assertEquals(logger, lInterfaceManager.getLogger());