0ac93330c1ec18314e1243fc1fdbb20742fc23a2
[vfc/nfvo/driver/vnfm/svnfm.git] / nokiav2 / driver / src / test / java / org / onap / vfc / nfvo / driver / vnfm / svnfm / nokia / onap / direct / notification / TestLInterfaceManager.java
1 /*
2  * Copyright 2016-2017, Nokia Corporation
3  *
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
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
17
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;
28
29 import static java.lang.Boolean.FALSE;
30 import static java.lang.Boolean.TRUE;
31
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;
38
39 public class TestLInterfaceManager extends TestBase {
40     private ArgumentCaptor<LInterface> payload = ArgumentCaptor.forClass(LInterface.class);
41
42     @Mock
43     private AAIRestApiProvider aaiRestApiProvider;
44     private LInterfaceManager lInterfaceManager;
45     @Mock
46     private CloudInfrastructureApi cloudInfrastructureApi;
47
48     @Before
49     public void init() {
50         lInterfaceManager = new LInterfaceManager(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
51         setField(LInterfaceManager.class, "logger", logger);
52         when(aaiRestApiProvider.getCloudInfrastructureApi()).thenReturn(cloudInfrastructureApi);
53     }
54
55     /**
56      * test update success scenario
57      */
58     @Test
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());
76         //when
77         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
78         //verify
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();
94     }
95
96     /**
97      * test update success scenario without IP
98      */
99     @Test
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());
115         //when
116         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
117         //verify
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();
131     }
132
133     /**
134      * test update success scenario
135      */
136     @Test
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());
155         //when
156         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
157         //verify
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();
175     }
176
177     /**
178      * test update success scenario for IPv6 address
179      */
180     @Test
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());
198         //when
199         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, false);
200         //verify
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));
215     }
216
217     /**
218      * test L3 network deletion
219      */
220     @Test
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));
233         //when
234         lInterfaceManager.delete(VIM_ID, affectedCp);
235         //verify
236         cloudInfrastructureApi.deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserverLInterfacesLInterface("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "cpId", "v3");
237         VOID_OBSERVABLE.assertCalled();
238     }
239
240     /**
241      * test inheritence
242      */
243     @Test
244     public void testInheritence() {
245         assertEquals(logger, lInterfaceManager.getLogger());
246     }
247
248
249 }