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 org.junit.Before;
19 import org.junit.Test;
20 import org.mockito.ArgumentCaptor;
21 import org.mockito.Mock;
22 import org.onap.aai.domain.yang.v11.LInterface;
23 import org.onap.aai.domain.yang.v11.ObjectFactory;
24 import org.onap.aai.domain.yang.v11.RelationshipList;
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 java.util.NoSuchElementException;
31 import static junit.framework.TestCase.assertEquals;
32 import static org.mockito.Matchers.eq;
33 import static org.mockito.Mockito.verify;
34 import static org.mockito.Mockito.when;
35 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider.AAIService.CLOUD;
36 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.AbstractManager.buildRelationshipData;
37 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.TestGenericVnfManager.assertRelation;
38 import static org.springframework.test.util.ReflectionTestUtils.setField;
40 public class TestLInterfaceManager extends TestBase {
41 private ObjectFactory OBJECT_FACTORY = new ObjectFactory();
42 private ArgumentCaptor<LInterface> payload = ArgumentCaptor.forClass(LInterface.class);
45 private AAIRestApiProvider aaiRestApiProvider;
46 private LInterfaceManager lInterfaceManager;
50 lInterfaceManager = new LInterfaceManager(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
51 setField(LInterfaceManager.class, "logger", logger);
55 * test update success scenario
58 public void testUpdate() throws Exception {
59 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
60 affectedCp.setCpdId("cpdId");
61 affectedCp.setTenantId("myTenantId");
62 affectedCp.setProviderId("portProviderId");
63 affectedCp.setServerProviderId("serverProviderId");
64 affectedCp.setNetworkProviderId("networkProviderId");
65 affectedCp.setMacAddress("mac");
66 affectedCp.setIpAddress("1.2.3.4");
67 affectedCp.setEcpdId("ecpdId");
68 affectedCp.setName("name");
69 affectedCp.setCpId("cpId");
70 when(aaiRestApiProvider.get(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), eq(LInterface.class))).thenThrow(new NoSuchElementException());
71 when(aaiRestApiProvider.put(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), payload.capture(), eq(Void.class))).thenReturn(null);
73 lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
75 LInterface actualInterface = payload.getValue();
76 assertEquals(true, actualInterface.isInMaint());
77 assertEquals(false, actualInterface.isIsIpUnnumbered());
78 assertEquals(false, actualInterface.isIsPortMirrored());
79 assertEquals("name", actualInterface.getInterfaceName());
80 assertEquals("cpId", actualInterface.getInterfaceId());
81 assertEquals("cpdId", actualInterface.getInterfaceRole());
82 assertEquals("mac", actualInterface.getMacaddr());
83 assertEquals("active", actualInterface.getProvStatus());
84 assertEquals(1, actualInterface.getL3InterfaceIpv4AddressList().size());
85 assertEquals(0, actualInterface.getL3InterfaceIpv6AddressList().size());
86 assertEquals("networkProviderId", actualInterface.getL3InterfaceIpv4AddressList().get(0).getNeutronNetworkId());
87 assertEquals("1.2.3.4", actualInterface.getL3InterfaceIpv4AddressList().get(0).getL3InterfaceIpv4Address());
88 assertRelation(actualInterface.getRelationshipList(), "generic-vnf", buildRelationshipData("generic-vnf.vnf-id", VNF_ID));
92 * test update success scenario without IP
95 public void testUpdateWithoutIp() throws Exception {
96 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
97 affectedCp.setCpdId("cpdId");
98 affectedCp.setTenantId("myTenantId");
99 affectedCp.setProviderId("portProviderId");
100 affectedCp.setServerProviderId("serverProviderId");
101 affectedCp.setNetworkProviderId("networkProviderId");
102 affectedCp.setMacAddress("mac");
103 affectedCp.setEcpdId("ecpdId");
104 affectedCp.setName("name");
105 affectedCp.setCpId("cpId");
106 when(aaiRestApiProvider.get(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), eq(LInterface.class))).thenThrow(new NoSuchElementException());
107 when(aaiRestApiProvider.put(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), payload.capture(), eq(Void.class))).thenReturn(null);
109 lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
111 LInterface actualInterface = payload.getValue();
112 assertEquals(true, actualInterface.isInMaint());
113 assertEquals(false, actualInterface.isIsIpUnnumbered());
114 assertEquals(false, actualInterface.isIsPortMirrored());
115 assertEquals("name", actualInterface.getInterfaceName());
116 assertEquals("cpId", actualInterface.getInterfaceId());
117 assertEquals("cpdId", actualInterface.getInterfaceRole());
118 assertEquals("mac", actualInterface.getMacaddr());
119 assertEquals("active", actualInterface.getProvStatus());
120 assertEquals(0, actualInterface.getL3InterfaceIpv6AddressList().size());
121 assertEquals(0, actualInterface.getL3InterfaceIpv4AddressList().size());
122 assertRelation(actualInterface.getRelationshipList(), "generic-vnf", buildRelationshipData("generic-vnf.vnf-id", VNF_ID));
126 * test update success scenario
129 public void testExistingUpdate() throws Exception {
130 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
131 affectedCp.setCpdId("cpdId");
132 affectedCp.setTenantId("myTenantId");
133 affectedCp.setProviderId("portProviderId");
134 affectedCp.setServerProviderId("serverProviderId");
135 affectedCp.setNetworkProviderId("networkProviderId");
136 affectedCp.setMacAddress("mac");
137 affectedCp.setIpAddress("1.2.3.4");
138 affectedCp.setEcpdId("ecpdId");
139 affectedCp.setName("name");
140 affectedCp.setCpId("cpId");
141 LInterface lInterface = OBJECT_FACTORY.createLInterface();
142 lInterface.setResourceVersion("v3");
143 lInterface.setRelationshipList(new RelationshipList());
144 when(aaiRestApiProvider.get(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), eq(LInterface.class))).thenReturn(lInterface);
145 when(aaiRestApiProvider.put(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), payload.capture(), eq(Void.class))).thenReturn(null);
147 lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
149 LInterface actualInterface = payload.getValue();
150 assertEquals(true, actualInterface.isInMaint());
151 assertEquals(false, actualInterface.isIsIpUnnumbered());
152 assertEquals(false, actualInterface.isIsPortMirrored());
153 assertEquals("name", actualInterface.getInterfaceName());
154 assertEquals("cpId", actualInterface.getInterfaceId());
155 assertEquals("cpdId", actualInterface.getInterfaceRole());
156 assertEquals("mac", actualInterface.getMacaddr());
157 assertEquals("active", actualInterface.getProvStatus());
158 assertEquals(1, actualInterface.getL3InterfaceIpv4AddressList().size());
159 assertEquals(0, actualInterface.getL3InterfaceIpv6AddressList().size());
160 assertEquals("networkProviderId", actualInterface.getL3InterfaceIpv4AddressList().get(0).getNeutronNetworkId());
161 assertEquals("1.2.3.4", actualInterface.getL3InterfaceIpv4AddressList().get(0).getL3InterfaceIpv4Address());
162 assertEquals("v3", lInterface.getResourceVersion());
163 assertRelation(actualInterface.getRelationshipList(), "generic-vnf", buildRelationshipData("generic-vnf.vnf-id", VNF_ID));
167 * test update success scenario for IPv6 address
170 public void testUpdateForIpv6() throws Exception {
171 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
172 affectedCp.setCpdId("cpdId");
173 affectedCp.setTenantId("myTenantId");
174 affectedCp.setProviderId("portProviderId");
175 affectedCp.setServerProviderId("serverProviderId");
176 affectedCp.setNetworkProviderId("networkProviderId");
177 affectedCp.setMacAddress("mac");
178 affectedCp.setIpAddress("::");
179 affectedCp.setEcpdId("ecpdId");
180 affectedCp.setName("name");
181 affectedCp.setCpId("cpId");
182 when(aaiRestApiProvider.get(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), eq(LInterface.class))).thenThrow(new NoSuchElementException());
183 when(aaiRestApiProvider.put(eq(logger), eq(CLOUD), eq("/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId"), payload.capture(), eq(Void.class))).thenReturn(null);
185 lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, false);
187 LInterface actualInterface = payload.getValue();
188 assertEquals(false, actualInterface.isInMaint());
189 assertEquals(false, actualInterface.isIsIpUnnumbered());
190 assertEquals(false, actualInterface.isIsPortMirrored());
191 assertEquals("name", actualInterface.getInterfaceName());
192 assertEquals("cpId", actualInterface.getInterfaceId());
193 assertEquals("cpdId", actualInterface.getInterfaceRole());
194 assertEquals("mac", actualInterface.getMacaddr());
195 assertEquals("active", actualInterface.getProvStatus());
196 assertEquals(0, actualInterface.getL3InterfaceIpv4AddressList().size());
197 assertEquals(1, actualInterface.getL3InterfaceIpv6AddressList().size());
198 assertEquals("networkProviderId", actualInterface.getL3InterfaceIpv6AddressList().get(0).getNeutronNetworkId());
199 assertEquals("::", actualInterface.getL3InterfaceIpv6AddressList().get(0).getL3InterfaceIpv6Address());
200 assertRelation(actualInterface.getRelationshipList(), "generic-vnf", buildRelationshipData("generic-vnf.vnf-id", VNF_ID));
204 * test L3 network deletion
207 public void testDelete() throws Exception {
208 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
209 affectedCp.setCpId("cpId");
210 affectedCp.setCpdId("cpdId");
211 affectedCp.setTenantId("myTenantId");
212 affectedCp.setProviderId("portProviderId");
213 affectedCp.setServerProviderId("serverProviderId");
214 affectedCp.setNetworkProviderId("networkProviderId");
216 lInterfaceManager.delete(VIM_ID, affectedCp);
218 verify(aaiRestApiProvider).delete(logger, CLOUD, "/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId");
225 public void testInheritence() {
226 assertEquals(logger, lInterfaceManager.getLogger());