ef9f569e4c4a0d8d29c1d94687a91cf577147515
[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 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;
28
29 import java.util.NoSuchElementException;
30
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;
39
40 public class TestLInterfaceManager extends TestBase {
41     private ObjectFactory OBJECT_FACTORY = new ObjectFactory();
42     private ArgumentCaptor<LInterface> payload = ArgumentCaptor.forClass(LInterface.class);
43
44     @Mock
45     private AAIRestApiProvider aaiRestApiProvider;
46     private LInterfaceManager lInterfaceManager;
47
48     @Before
49     public void init() {
50         lInterfaceManager = new LInterfaceManager(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
51         setField(LInterfaceManager.class, "logger", logger);
52     }
53
54     /**
55      * test update success scenario
56      */
57     @Test
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);
72         //when
73         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
74         //verify
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));
89     }
90
91     /**
92      * test update success scenario without IP
93      */
94     @Test
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);
108         //when
109         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
110         //verify
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));
123     }
124
125     /**
126      * test update success scenario
127      */
128     @Test
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);
146         //when
147         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, true);
148         //verify
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));
164     }
165
166     /**
167      * test update success scenario for IPv6 address
168      */
169     @Test
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);
184         //when
185         lInterfaceManager.update(VNF_ID, VIM_ID, affectedCp, false);
186         //verify
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));
201     }
202
203     /**
204      * test L3 network deletion
205      */
206     @Test
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");
215         //when
216         lInterfaceManager.delete(VIM_ID, affectedCp);
217         //verify
218         verify(aaiRestApiProvider).delete(logger, CLOUD, "/cloud-regions/cloud-region/myCloudOwnerId/myRegionName/tenants/tenant/myTenantId/vservers/vserver/serverProviderId/l-interfaces/l-interface/cpId");
219     }
220
221     /**
222      * test inheritence
223      */
224     @Test
225     public void testInheritence() {
226         assertEquals(logger, lInterfaceManager.getLogger());
227     }
228
229
230 }