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(null);
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));
96 * test update success scenario without IP
99 public void testUpdateWithoutIp() throws Exception {
100 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
101 affectedCp.setCpdId("cpdId");
102 affectedCp.setTenantId("myTenantId");
103 affectedCp.setProviderId("portProviderId");
104 affectedCp.setServerProviderId("serverProviderId");
105 affectedCp.setNetworkProviderId("networkProviderId");
106 affectedCp.setMacAddress("mac");
107 affectedCp.setEcpdId("ecpdId");
108 affectedCp.setName("name");
109 affectedCp.setCpId("cpId");
110 LInterface lInterface = new LInterface();
111 lInterface.setResourceVersion("v3");
112 lInterface.setRelationshipList(new ArrayList<>());
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(null);
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));
133 * test update success scenario
136 public void testExistingUpdate() throws Exception {
137 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
138 affectedCp.setCpdId("cpdId");
139 affectedCp.setTenantId("myTenantId");
140 affectedCp.setProviderId("portProviderId");
141 affectedCp.setServerProviderId("serverProviderId");
142 affectedCp.setNetworkProviderId("networkProviderId");
143 affectedCp.setMacAddress("mac");
144 affectedCp.setIpAddress("1.2.3.4");
145 affectedCp.setEcpdId("ecpdId");
146 affectedCp.setName("name");
147 affectedCp.setCpId("cpId");
148 LInterface lInterface = new LInterface();
149 lInterface.setResourceVersion("v3");
150 lInterface.setRelationshipList(new ArrayList<>());
151 when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
152 when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), eq("cpId"), payload.capture())).thenReturn(null);
154 lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
156 LInterface actualInterface = payload.getValue();
157 assertEquals(TRUE, actualInterface.isInMaint());
158 assertEquals(FALSE, actualInterface.isIsIpUnnumbered());
159 assertEquals(FALSE, actualInterface.isIsPortMirrored());
160 assertEquals("name", actualInterface.getInterfaceName());
161 assertEquals("cpId", actualInterface.getInterfaceId());
162 assertEquals("cpdId", actualInterface.getInterfaceRole());
163 assertEquals("mac", actualInterface.getMacaddr());
164 assertEquals("active", actualInterface.getProvStatus());
165 assertEquals(1, actualInterface.getL3InterfaceIpv4AddressList().size());
166 assertEquals(null, actualInterface.getL3InterfaceIpv6AddressList());
167 assertEquals("networkProviderId", actualInterface.getL3InterfaceIpv4AddressList().get(0).getNeutronNetworkId());
168 assertEquals("1.2.3.4", actualInterface.getL3InterfaceIpv4AddressList().get(0).getL3InterfaceIpv4Address());
169 assertEquals("v3", lInterface.getResourceVersion());
170 assertRelation(actualInterface.getRelationshipList(), "generic-vnf", buildRelationshipData("generic-vnf.vnf-id", VNF_ID));
174 * test update success scenario for IPv6 address
177 public void testUpdateForIpv6() throws Exception {
178 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
179 affectedCp.setCpdId("cpdId");
180 affectedCp.setTenantId("myTenantId");
181 affectedCp.setProviderId("portProviderId");
182 affectedCp.setServerProviderId("serverProviderId");
183 affectedCp.setNetworkProviderId("networkProviderId");
184 affectedCp.setMacAddress("mac");
185 affectedCp.setIpAddress("::");
186 affectedCp.setEcpdId("ecpdId");
187 affectedCp.setName("name");
188 affectedCp.setCpId("cpId");
189 LInterface lInterface = new LInterface();
190 lInterface.setResourceVersion("v3");
191 lInterface.setRelationshipList(new ArrayList<>());
192 when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
193 when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), eq("cpId"), payload.capture())).thenReturn(null);
195 lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, false);
197 LInterface actualInterface = payload.getValue();
198 assertEquals(FALSE, actualInterface.isInMaint());
199 assertEquals(FALSE, actualInterface.isIsIpUnnumbered());
200 assertEquals(FALSE, actualInterface.isIsPortMirrored());
201 assertEquals("name", actualInterface.getInterfaceName());
202 assertEquals("cpId", actualInterface.getInterfaceId());
203 assertEquals("cpdId", actualInterface.getInterfaceRole());
204 assertEquals("mac", actualInterface.getMacaddr());
205 assertEquals("active", actualInterface.getProvStatus());
206 assertEquals(null, actualInterface.getL3InterfaceIpv4AddressList());
207 assertEquals(1, actualInterface.getL3InterfaceIpv6AddressList().size());
208 assertEquals("networkProviderId", actualInterface.getL3InterfaceIpv6AddressList().get(0).getNeutronNetworkId());
209 assertEquals("::", actualInterface.getL3InterfaceIpv6AddressList().get(0).getL3InterfaceIpv6Address());
210 assertRelation(actualInterface.getRelationshipList(), "generic-vnf", buildRelationshipData("generic-vnf.vnf-id", VNF_ID));
214 * test L3 network deletion
217 public void testDelete() throws Exception {
218 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
219 affectedCp.setCpId("cpId");
220 affectedCp.setCpdId("cpdId");
221 affectedCp.setTenantId("myTenantId");
222 affectedCp.setProviderId("portProviderId");
223 affectedCp.setServerProviderId("serverProviderId");
224 affectedCp.setNetworkProviderId("networkProviderId");
225 LInterface lInterface = new LInterface();
226 lInterface.setResourceVersion("v3");
227 lInterface.setRelationshipList(new ArrayList<>());
228 when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", null, null, null, null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(lInterface));
230 lInterfaceManager.delete(VIM_ID, affectedCp);
232 cloudInfrastructureApi.deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", "v3");
239 public void testInheritence() {
240 assertEquals(logger, lInterfaceManager.getLogger());