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.
17 package org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.impl;
19 import static org.mockito.Mockito.when;
21 import java.io.IOException;
22 import java.util.ArrayList;
23 import java.util.HashMap;
24 import java.util.List;
26 import org.apache.http.client.ClientProtocolException;
27 import org.junit.Assert;
28 import org.junit.Before;
29 import org.junit.Test;
30 import org.mockito.InjectMocks;
31 import org.mockito.Mock;
32 import org.mockito.Mockito;
33 import org.mockito.MockitoAnnotations;
34 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMCreateSubscriptionRequest;
35 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMCreateSubscriptionResponse;
36 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMCreateVnfRequest;
37 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMCreateVnfResponse;
38 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMHealVnfRequest;
39 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMHealVnfResponse;
40 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMInstantiateVnfRequest;
41 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMInstantiateVnfResponse;
42 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMModifyVnfRequest;
43 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMModifyVnfResponse;
44 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMQueryOperExecutionResponse;
45 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMQueryVnfResponse;
46 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMScaleVnfRequest;
47 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMScaleVnfResponse;
48 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMTerminateVnfRequest;
49 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMTerminateVnfResponse;
50 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMVnfNotificationRequest;
51 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMVnfNotificationResponse;
52 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.ExtManagedVirtualLinkData;
53 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.ExtVirtualLinkData;
54 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.NetworkAddress;
55 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.Subscription;
56 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.VimComputeResourceFlavour;
57 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.VimInfo;
58 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.VimSoftwareImage;
59 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.VnfExtCpData;
60 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.VnfcResourceInfo;
61 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.ZoneInfo;
62 import org.onap.vfc.nfvo.driver.vnfm.svnfm.common.bo.AdaptorEnv;
63 import org.onap.vfc.nfvo.driver.vnfm.svnfm.http.client.HttpClientProcessorInf;
64 import org.onap.vfc.nfvo.driver.vnfm.svnfm.http.client.HttpResult;
65 import org.springframework.web.bind.annotation.RequestMethod;
67 public class CbamMgmrImplTest {
69 private CbamMgmrImpl cbamMgmr;
72 private HttpClientProcessorInf httpClientProcessor;
74 private String vnfInstanceId = "vnfInstanceId_001";
76 private String json = "{"
77 + "'access_token':'1234567',"
80 + "'description':'description',"
81 + "'vnfdId':'vnfdId',"
82 + "'vnfProvider':'vnfProvider',"
83 + "'onboardedVnfPkgInfoId':'onboardedVnfPkgInfoId',"
84 + "'vnfProductName':'vnfProductName'"
87 HttpResult httpResult = new HttpResult();
88 private int statusCode = 200;
91 public void setUp() throws Exception {
92 MockitoAnnotations.initMocks(this);
93 AdaptorEnv env = new AdaptorEnv();
94 cbamMgmr.setAdaptorEnv(env);
96 httpResult.setStatusCode(statusCode);
97 httpResult.setContent(json);
99 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
103 public void testCreateVnfSuccess() throws ClientProtocolException, IOException
105 httpResult.setStatusCode(201);
107 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
109 CBAMCreateVnfRequest cbamRequest = new CBAMCreateVnfRequest();
110 CBAMCreateVnfResponse response = cbamMgmr.createVnf(cbamRequest);
114 public void testCreateVnfError() throws ClientProtocolException, IOException
116 CBAMCreateVnfRequest cbamRequest = new CBAMCreateVnfRequest();
117 CBAMCreateVnfResponse response = cbamMgmr.createVnf(cbamRequest);
121 public void testInstantiateVnfSucess() throws ClientProtocolException, IOException
123 httpResult.setStatusCode(202);
125 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
127 CBAMInstantiateVnfRequest cbamRequest = new CBAMInstantiateVnfRequest();
128 cbamRequest.setFlavourId("flavourId");
129 cbamRequest.setGrantlessMode(false);
131 VimInfo vimInfo = new VimInfo();
133 vimInfo.setInterfaceEndpoint("interfaceEndpoint");
135 List<VimInfo> vims = new ArrayList<>();
137 cbamRequest.setVims(vims);
139 cbamRequest.setInstantiationLevelId("instantiationLevelId");
141 ExtVirtualLinkData linkData = new ExtVirtualLinkData();
142 linkData.setExtVirtualLinkId("extVirtualLinkId");
143 linkData.setResourceId("resourceId");
144 linkData.setVimId("vimId");
146 List<VnfExtCpData> extCps = new ArrayList<>();
147 VnfExtCpData vnfExtCpData = new VnfExtCpData();
148 vnfExtCpData.setCpdId("cpdId");
149 vnfExtCpData.setNumDynamicAddresses(10000);
150 List<NetworkAddress> addresses = new ArrayList<>();
151 NetworkAddress address = new NetworkAddress();
153 address.setMac("mac");
154 address.setSubnetId("subnetId");
155 addresses.add(address);
156 vnfExtCpData.setAddresses(addresses );
158 extCps.add(vnfExtCpData);
159 linkData.setExtCps(extCps);
161 List<ExtVirtualLinkData> extVirtualLinks = new ArrayList<>();
162 extVirtualLinks.add(linkData);
163 cbamRequest.setExtVirtualLinks(extVirtualLinks);
166 List<ExtManagedVirtualLinkData> managedVirtualLinks = new ArrayList<>();
167 ExtManagedVirtualLinkData managedVirtualLink = new ExtManagedVirtualLinkData();
168 managedVirtualLink.setResourceId("resourceId");
169 managedVirtualLink.setExtManagedVirtualLinkId("extManagedVirtualLinkId");
170 managedVirtualLink.setVimId("vimId");
171 managedVirtualLink.setVirtualLinkDescId("virtualLinkDescId");
172 managedVirtualLinks.add(managedVirtualLink );
174 cbamRequest.setExtManagedVirtualLinks(managedVirtualLinks);
177 List<VimSoftwareImage> softwareImages = new ArrayList<>();
178 VimSoftwareImage vimSoftwareImage = new VimSoftwareImage();
179 vimSoftwareImage.setResourceId("resourceId");
180 vimSoftwareImage.setVimId("vimId");
181 vimSoftwareImage.setVnfdSoftwareImageId("vnfdSoftwareImageId");
182 softwareImages.add(vimSoftwareImage);
183 cbamRequest.setSoftwareImages(softwareImages);
186 List<VimComputeResourceFlavour> computeResourceFlavours = new ArrayList<>();
187 VimComputeResourceFlavour computeResourceFlavour = new VimComputeResourceFlavour();
188 computeResourceFlavour.setResourceId("resourceId");
189 computeResourceFlavour.setVimId("vimId");
190 computeResourceFlavour.setVnfdVirtualComputeDescId("vnfdVirtualComputeDescId");
191 computeResourceFlavours.add(computeResourceFlavour);
192 cbamRequest.setComputeResourceFlavours(computeResourceFlavours);
194 List<ZoneInfo> zoneInfos = new ArrayList<>();
195 ZoneInfo zoneInfo = new ZoneInfo();
196 zoneInfo.setResourceId("resourceId");
197 zoneInfo.setId("id");
198 zoneInfos.add(zoneInfo);
199 cbamRequest.setZones(zoneInfos);
201 cbamRequest.setAdditionalParams("additionalParams");
203 CBAMInstantiateVnfResponse response = cbamMgmr.instantiateVnf(cbamRequest, vnfInstanceId);
205 Assert.assertEquals("result is ", "instantiationLevelId", cbamRequest.getInstantiationLevelId());
206 Assert.assertEquals("result is ", "flavourId", cbamRequest.getFlavourId());
207 Assert.assertEquals("result is ", false, cbamRequest.isGrantlessMode());
208 Assert.assertEquals("result is ", "id", cbamRequest.getVims().get(0).getId());
209 Assert.assertEquals("result is ", "interfaceEndpoint", cbamRequest.getVims().get(0).getInterfaceEndpoint());
211 Assert.assertEquals("result is ", "extVirtualLinkId", cbamRequest.getExtVirtualLinks().get(0).getExtVirtualLinkId());
212 Assert.assertEquals("result is ", "resourceId", cbamRequest.getExtVirtualLinks().get(0).getResourceId());
213 Assert.assertEquals("result is ", "vimId", cbamRequest.getExtVirtualLinks().get(0).getVimId());
215 Assert.assertEquals("result is ", "cpdId", cbamRequest.getExtVirtualLinks().get(0).getExtCps().get(0).getCpdId());
216 Assert.assertEquals("result is ", "ip", cbamRequest.getExtVirtualLinks().get(0).getExtCps().get(0).getAddresses().get(0).getIp());
217 Assert.assertEquals("result is ", "mac", cbamRequest.getExtVirtualLinks().get(0).getExtCps().get(0).getAddresses().get(0).getMac());
218 Assert.assertEquals("result is ", "subnetId", cbamRequest.getExtVirtualLinks().get(0).getExtCps().get(0).getAddresses().get(0).getSubnetId());
220 Assert.assertEquals("result is ", "extManagedVirtualLinkId", cbamRequest.getExtManagedVirtualLinks().get(0).getExtManagedVirtualLinkId());
221 Assert.assertEquals("result is ", "resourceId", cbamRequest.getExtManagedVirtualLinks().get(0).getResourceId());
222 Assert.assertEquals("result is ", "vimId", cbamRequest.getExtManagedVirtualLinks().get(0).getVimId());
223 Assert.assertEquals("result is ", "virtualLinkDescId", cbamRequest.getExtManagedVirtualLinks().get(0).getVirtualLinkDescId());
225 Assert.assertEquals("result is ", "resourceId", cbamRequest.getSoftwareImages().get(0).getResourceId());
226 Assert.assertEquals("result is ", "vimId", cbamRequest.getSoftwareImages().get(0).getVimId());
227 Assert.assertEquals("result is ", "vnfdSoftwareImageId", cbamRequest.getSoftwareImages().get(0).getVnfdSoftwareImageId());
229 Assert.assertEquals("result is ", "resourceId", cbamRequest.getComputeResourceFlavours().get(0).getResourceId());
230 Assert.assertEquals("result is ", "vimId", cbamRequest.getComputeResourceFlavours().get(0).getVimId());
231 Assert.assertEquals("result is ", "vnfdVirtualComputeDescId", cbamRequest.getComputeResourceFlavours().get(0).getVnfdVirtualComputeDescId());
233 Assert.assertEquals("result is ", "id", cbamRequest.getZones().get(0).getId());
234 Assert.assertEquals("result is ", "resourceId", cbamRequest.getZones().get(0).getResourceId());
236 Assert.assertEquals("result is ", "additionalParams", cbamRequest.getAdditionalParams());
240 public void testInstantiateVnfError() throws ClientProtocolException, IOException
242 CBAMInstantiateVnfRequest cbamRequest = new CBAMInstantiateVnfRequest();
243 CBAMInstantiateVnfResponse response = cbamMgmr.instantiateVnf(cbamRequest, vnfInstanceId);
247 public void testModifyVnfSuccess() throws ClientProtocolException, IOException
249 httpResult.setStatusCode(202);
251 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
254 CBAMModifyVnfRequest cbamRequest = new CBAMModifyVnfRequest();
255 CBAMModifyVnfResponse response = cbamMgmr.modifyVnf(cbamRequest, vnfInstanceId);
259 public void testModifyVnfError() throws ClientProtocolException, IOException
261 CBAMModifyVnfRequest cbamRequest = new CBAMModifyVnfRequest();
262 CBAMModifyVnfResponse response = cbamMgmr.modifyVnf(cbamRequest, vnfInstanceId);
266 public void testTerminateVnfSuccess() throws ClientProtocolException, IOException
268 httpResult.setStatusCode(202);
270 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
272 CBAMTerminateVnfRequest cbamRequest = new CBAMTerminateVnfRequest();
273 CBAMTerminateVnfResponse response = cbamMgmr.terminateVnf(cbamRequest, vnfInstanceId);
277 public void testTerminateVnfError() throws ClientProtocolException, IOException
279 CBAMTerminateVnfRequest cbamRequest = new CBAMTerminateVnfRequest();
280 CBAMTerminateVnfResponse response = cbamMgmr.terminateVnf(cbamRequest, vnfInstanceId);
284 public void testDeleteVnfSuccess() throws ClientProtocolException, IOException
286 httpResult.setStatusCode(204);
288 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
290 cbamMgmr.deleteVnf(vnfInstanceId);
294 public void testDeleteVnfError() throws ClientProtocolException, IOException
296 cbamMgmr.deleteVnf(vnfInstanceId);
300 public void testScaleVnfSuccess() throws ClientProtocolException, IOException
302 httpResult.setStatusCode(202);
304 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
306 CBAMScaleVnfRequest cbamRequest = new CBAMScaleVnfRequest();
307 CBAMScaleVnfResponse response = cbamMgmr.scaleVnf(cbamRequest, vnfInstanceId);
311 public void testScaleVnfError() throws ClientProtocolException, IOException
313 CBAMScaleVnfRequest cbamRequest = new CBAMScaleVnfRequest();
314 CBAMScaleVnfResponse response = cbamMgmr.scaleVnf(cbamRequest, vnfInstanceId);
318 public void testHealVnfSuccess() throws ClientProtocolException, IOException
320 httpResult.setStatusCode(202);
322 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
324 CBAMHealVnfRequest cbamRequest = new CBAMHealVnfRequest();
325 CBAMHealVnfResponse response = cbamMgmr.healVnf(cbamRequest, vnfInstanceId);
329 public void testHealVnfError() throws ClientProtocolException, IOException
331 CBAMHealVnfRequest cbamRequest = new CBAMHealVnfRequest();
332 CBAMHealVnfResponse response = cbamMgmr.healVnf(cbamRequest, vnfInstanceId);
336 public void testQueryVnfSuccess() throws ClientProtocolException, IOException
338 CBAMQueryVnfResponse response = cbamMgmr.queryVnf(vnfInstanceId);
342 public void testQueryVnf() throws ClientProtocolException, IOException
344 httpResult.setStatusCode(400);
346 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
348 CBAMQueryVnfResponse response = cbamMgmr.queryVnf(vnfInstanceId);
352 public void testCreateSubscriptionSuccess() throws ClientProtocolException, IOException
354 httpResult.setStatusCode(201);
356 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
358 CBAMCreateSubscriptionRequest cbamRequest = new CBAMCreateSubscriptionRequest();
359 CBAMCreateSubscriptionResponse response = cbamMgmr.createSubscription(cbamRequest);
363 public void testCreateSubscriptionError() throws ClientProtocolException, IOException
365 CBAMCreateSubscriptionRequest cbamRequest = new CBAMCreateSubscriptionRequest();
366 CBAMCreateSubscriptionResponse response = cbamMgmr.createSubscription(cbamRequest);
370 public void testGetNotification() throws ClientProtocolException, IOException
372 CBAMVnfNotificationRequest cbamRequest = new CBAMVnfNotificationRequest();
373 CBAMVnfNotificationResponse response = cbamMgmr.getNotification(cbamRequest);
377 public void testGetSubscriptionSuccess() throws ClientProtocolException, IOException
379 String subscriptionId = "subscriptionId_001";
380 Subscription response = cbamMgmr.getSubscription(subscriptionId);
384 public void testGetSubscriptionError() throws ClientProtocolException, IOException
386 httpResult.setStatusCode(400);
388 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
390 String subscriptionId = "subscriptionId_001";
391 Subscription response = cbamMgmr.getSubscription(subscriptionId);
395 public void testQueryVnfcResourceSuccess() throws ClientProtocolException, IOException
397 String json = "[{'id':'id_001'}]";
398 HttpResult httpResult = new HttpResult();
399 httpResult.setStatusCode(200);
400 httpResult.setContent(json);
402 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
403 List<VnfcResourceInfo> response = cbamMgmr.queryVnfcResource(vnfInstanceId);
407 public void testQueryVnfcResourceErrot() throws ClientProtocolException, IOException
409 String json = "[{'id':'id_001'}]";
410 HttpResult httpResult = new HttpResult();
411 httpResult.setStatusCode(400);
412 httpResult.setContent(json);
414 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
415 List<VnfcResourceInfo> response = cbamMgmr.queryVnfcResource(vnfInstanceId);
419 public void testQueryOperExecutionSuccess() throws ClientProtocolException, IOException
421 String execId = "execId_001";
422 CBAMQueryOperExecutionResponse response = cbamMgmr.queryOperExecution(execId);
423 Assert.assertEquals("id", response.getId());
424 Assert.assertEquals(null, response.getGrantId());
425 Assert.assertEquals(null, response.get_links());
426 Assert.assertEquals(null, response.getAdditionalData());
427 Assert.assertEquals(null, response.getCancelMode());
428 Assert.assertEquals(false, response.isCancelPending());
429 Assert.assertEquals(null, response.getMetadata());
430 Assert.assertEquals(null, response.getOperationName());
431 Assert.assertEquals(null, response.getOperationParams());
432 Assert.assertEquals(null, response.getOperationType());
433 Assert.assertEquals(null, response.getStartTime());
434 Assert.assertEquals(null, response.getStatus());
435 Assert.assertEquals(null, response.getVnfInstanceId());
439 public void testQueryOperExecutionOngoing() throws ClientProtocolException, IOException
441 httpResult.setStatusCode(202);
443 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
446 String execId = "execId_001";
447 CBAMQueryOperExecutionResponse response = cbamMgmr.queryOperExecution(execId);
451 public void testQueryOperExecutionError() throws ClientProtocolException, IOException
453 httpResult.setStatusCode(400);
455 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
458 String execId = "execId_001";
459 CBAMQueryOperExecutionResponse response = cbamMgmr.queryOperExecution(execId);
463 public void testUploadVnfPackageSuccess() throws ClientProtocolException, IOException
465 String cbamPackageFilePath = "cbamPackageFilePath_001";
466 cbamMgmr.uploadVnfPackage(cbamPackageFilePath);
470 public void testUploadVnfPackageError() throws ClientProtocolException, IOException
472 httpResult.setStatusCode(400);
474 when(httpClientProcessor.process(Mockito.anyString(), Mockito.any(RequestMethod.class), Mockito.any(HashMap.class), Mockito.anyString())).thenReturn(httpResult);
476 String cbamPackageFilePath = "cbamPackageFilePath_001";
477 cbamMgmr.uploadVnfPackage(cbamPackageFilePath);