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());