2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2020 Nokia
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
22 package org.onap.so.bpmn.infrastructure.aai.tasks;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertTrue;
26 import static org.mockito.ArgumentMatchers.any;
27 import static org.mockito.ArgumentMatchers.eq;
28 import static org.mockito.Mockito.doNothing;
29 import static org.mockito.Mockito.doReturn;
30 import static org.mockito.Mockito.doThrow;
31 import static org.mockito.Mockito.never;
32 import static org.mockito.Mockito.times;
33 import static org.mockito.Mockito.verify;
34 import static org.mockito.Mockito.when;
35 import java.util.Arrays;
36 import java.util.List;
37 import java.util.Optional;
38 import java.util.TreeSet;
39 import java.util.stream.Collectors;
40 import org.camunda.bpm.engine.delegate.BpmnError;
41 import org.junit.Before;
42 import org.junit.Rule;
43 import org.junit.Test;
44 import org.junit.rules.ExpectedException;
45 import org.junit.runner.RunWith;
46 import org.mockito.ArgumentCaptor;
47 import org.mockito.ArgumentMatchers;
48 import org.mockito.Captor;
49 import org.mockito.InjectMocks;
50 import org.mockito.Mock;
51 import org.mockito.Mockito;
52 import org.mockito.junit.MockitoJUnitRunner;
53 import org.onap.so.bpmn.common.BuildingBlockExecution;
54 import org.onap.so.bpmn.common.data.TestDataSetup;
55 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
56 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
57 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
58 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
59 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
60 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
61 import org.onap.so.bpmn.servicedecomposition.bbobjects.LineOfBusiness;
62 import org.onap.so.bpmn.servicedecomposition.bbobjects.NetworkPolicy;
63 import org.onap.so.bpmn.servicedecomposition.bbobjects.Platform;
64 import org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf;
65 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
66 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
67 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
68 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
69 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
70 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
71 import org.onap.aaiclient.client.aai.entities.uri.AAIBaseResourceUri;
72 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
73 import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
74 import org.onap.so.client.exception.BBObjectNotFoundException;
75 import org.onap.so.client.exception.ExceptionBuilder;
76 import org.onap.so.client.orchestration.AAIConfigurationResources;
77 import org.onap.so.client.orchestration.AAIInstanceGroupResources;
78 import org.onap.so.client.orchestration.AAINetworkResources;
79 import org.onap.so.client.orchestration.AAIPnfResources;
80 import org.onap.so.client.orchestration.AAIServiceInstanceResources;
81 import org.onap.so.client.orchestration.AAIVfModuleResources;
82 import org.onap.so.client.orchestration.AAIVnfResources;
83 import org.onap.so.client.orchestration.AAIVolumeGroupResources;
84 import org.onap.so.client.orchestration.AAIVpnBindingResources;
85 import org.onap.so.db.catalog.beans.OrchestrationStatus;
86 import org.springframework.core.env.Environment;
88 @RunWith(MockitoJUnitRunner.Silent.class)
89 public class AAICreateTasksTest extends TestDataSetup {
92 protected ExceptionBuilder exceptionUtil;
94 protected AAIServiceInstanceResources aaiServiceInstanceResources;
96 protected AAIVolumeGroupResources aaiVolumeGroupResources;
98 protected AAIVnfResources aaiVnfResources;
100 protected AAINetworkResources aaiNetworkResources;
102 protected AAIVfModuleResources aaiVfModuleResources;
104 protected AAIPnfResources aaiPnfResources;
106 protected AAIVpnBindingResources aaiVpnBindingResources;
108 protected AAIInstanceGroupResources aaiInstanceGroupResources;
110 protected AAIConfigurationResources aaiConfigurationResources;
112 protected Environment env;
114 protected ExtractPojosForBB extractPojosForBBMock;
116 private AAICreateTasks aaiCreateTasks;
118 private ServiceInstance serviceInstance;
119 private L3Network network;
120 private GenericVnf genericVnf;
122 private VolumeGroup volumeGroup;
123 private CloudRegion cloudRegion;
124 private VfModule vfModule;
125 private Customer customer;
126 private Configuration configuration;
127 private InstanceGroup instanceGroup;
130 ArgumentCaptor<NetworkPolicy> networkPolicyCaptor;
133 public final ExpectedException exception = ExpectedException.none();
136 public void before() throws BBObjectNotFoundException {
137 customer = setCustomer();
138 serviceInstance = setServiceInstance();
139 network = setL3Network();
140 genericVnf = setGenericVnf();
142 volumeGroup = setVolumeGroup();
143 cloudRegion = setCloudRegion();
144 vfModule = setVfModule();
145 configuration = setConfiguration();
146 instanceGroup = setInstanceGroupVnf();
148 when(extractPojosForBBMock.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID)))
149 .thenReturn(genericVnf);
150 when(extractPojosForBBMock.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID)))
151 .thenReturn(vfModule);
152 when(extractPojosForBBMock.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.NETWORK_ID)))
153 .thenReturn(network);
154 when(extractPojosForBBMock.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID)))
155 .thenReturn(volumeGroup);
156 when(extractPojosForBBMock.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID)))
157 .thenReturn(serviceInstance);
158 when(extractPojosForBBMock.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.CONFIGURATION_ID)))
159 .thenReturn(configuration);
160 when(extractPojosForBBMock.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID)))
161 .thenReturn(instanceGroup);
164 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil)
165 .buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
166 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil)
167 .buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
172 public void createServiceInstanceTest() {
173 doReturn(false).when(aaiServiceInstanceResources).checkInstanceServiceNameInUse(serviceInstance);
174 doNothing().when(aaiServiceInstanceResources).createServiceInstance(serviceInstance, customer);
175 aaiCreateTasks.createServiceInstance(execution);
176 verify(aaiServiceInstanceResources, times(1)).createServiceInstance(serviceInstance, customer);
180 public void createServiceInstanceExceptionTest() {
181 expectedException.expect(BpmnError.class);
183 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "notfound");
184 doThrow(RuntimeException.class).when(aaiServiceInstanceResources).createServiceInstance(serviceInstance,
186 aaiCreateTasks.createServiceInstance(execution);
190 public void createVolumeGroupTest() {
191 volumeGroup.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
192 execution.setVariable("aLaCarte", Boolean.FALSE);
193 doNothing().when(aaiVolumeGroupResources).createVolumeGroup(volumeGroup, cloudRegion);
194 doNothing().when(aaiVolumeGroupResources).connectVolumeGroupToVnf(genericVnf, volumeGroup, cloudRegion);
196 aaiCreateTasks.createVolumeGroup(execution);
198 verify(aaiVolumeGroupResources, times(1)).createVolumeGroup(volumeGroup, cloudRegion);
199 verify(aaiVolumeGroupResources, times(1)).connectVolumeGroupToVnf(genericVnf, volumeGroup, cloudRegion);
200 verify(aaiVolumeGroupResources, times(1)).connectVolumeGroupToTenant(volumeGroup, cloudRegion);
204 public void createVolumeGroupExceptionTest() {
205 expectedException.expect(BpmnError.class);
207 volumeGroup.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
209 doThrow(RuntimeException.class).when(aaiVolumeGroupResources).createVolumeGroup(volumeGroup, cloudRegion);
211 aaiCreateTasks.createVolumeGroup(execution);
215 public void createProjectTest() throws Exception {
216 doNothing().when(aaiServiceInstanceResources)
217 .createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
218 aaiCreateTasks.createProject(execution);
219 verify(aaiServiceInstanceResources, times(1))
220 .createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
224 public void createPlatformTest() {
225 doNothing().when(aaiVnfResources).createPlatformandConnectVnf(genericVnf.getPlatform(), genericVnf);
226 aaiCreateTasks.createPlatform(execution);
227 ArgumentCaptor<Platform> platformCaptor = ArgumentCaptor.forClass(Platform.class);
228 ArgumentCaptor<GenericVnf> genericVnf = ArgumentCaptor.forClass(GenericVnf.class);
229 Mockito.verify(aaiVnfResources, times(4)).createPlatformandConnectVnf(platformCaptor.capture(),
230 genericVnf.capture());
232 List<Platform> capturedPlatforms = platformCaptor.getAllValues();
233 assertTrue(capturedPlatforms.stream().anyMatch(item -> "testPlatformName".equals(item.getPlatformName())));
234 assertTrue(capturedPlatforms.stream().anyMatch(item -> "testPlatformName2".equals(item.getPlatformName())));
235 assertTrue(capturedPlatforms.stream().anyMatch(item -> "testPlatformName3".equals(item.getPlatformName())));
236 assertTrue(capturedPlatforms.stream().anyMatch(item -> "testPlatformName4".equals(item.getPlatformName())));
240 public void createPlatformNetworkTest() {
241 doNothing().when(aaiNetworkResources).createPlatformAndConnectNetwork(network.getPlatform(), network);
242 aaiCreateTasks.createPlatformForNetwork(execution);
243 ArgumentCaptor<Platform> platformCaptor = ArgumentCaptor.forClass(Platform.class);
244 ArgumentCaptor<L3Network> network = ArgumentCaptor.forClass(L3Network.class);
245 Mockito.verify(aaiNetworkResources, times(4)).createPlatformAndConnectNetwork(platformCaptor.capture(),
248 List<Platform> capturedPlatforms = platformCaptor.getAllValues();
250 String actual = capturedPlatforms.stream().map(item -> item.getPlatformName()).collect(Collectors.toList())
251 .stream().sorted().collect(Collectors.joining(" ,"));
253 Arrays.asList("testPlatformName", "testPlatformName2", "testPlatformName3", "testPlatformName4")
254 .stream().sorted().collect(Collectors.joining(" ,"));
256 assertEquals(expected, actual);
257 assertTrue(capturedPlatforms.stream().anyMatch(item -> "testPlatformName".equals(item.getPlatformName())));
258 assertTrue(capturedPlatforms.stream().anyMatch(item -> "testPlatformName2".equals(item.getPlatformName())));
259 assertTrue(capturedPlatforms.stream().anyMatch(item -> "testPlatformName3".equals(item.getPlatformName())));
260 assertTrue(capturedPlatforms.stream().anyMatch(item -> "testPlatformName4".equals(item.getPlatformName())));
264 public void createLineOfBusinessTest() {
265 doNothing().when(aaiVnfResources).createLineOfBusinessandConnectVnf(genericVnf.getLineOfBusiness(), genericVnf);
266 aaiCreateTasks.createLineOfBusiness(execution);
268 ArgumentCaptor<LineOfBusiness> lobCaptor = ArgumentCaptor.forClass(LineOfBusiness.class);
269 ArgumentCaptor<GenericVnf> genericVnf = ArgumentCaptor.forClass(GenericVnf.class);
270 Mockito.verify(aaiVnfResources, times(4)).createLineOfBusinessandConnectVnf(lobCaptor.capture(),
271 genericVnf.capture());
273 List<LineOfBusiness> capturedLOB = lobCaptor.getAllValues();
275 capturedLOB.stream().anyMatch(item -> "testLineOfBusinessName".equals(item.getLineOfBusinessName())));
277 capturedLOB.stream().anyMatch(item -> "testLineOfBusinessName2".equals(item.getLineOfBusinessName())));
279 capturedLOB.stream().anyMatch(item -> "testLineOfBusinessName3".equals(item.getLineOfBusinessName())));
281 capturedLOB.stream().anyMatch(item -> "testLineOfBusinessName4".equals(item.getLineOfBusinessName())));
286 public void splitCDL_Test() {
287 List<String> strings = aaiCreateTasks.splitCDL("Test");
288 assertEquals(strings.get(0), "Test");
290 List<String> strings2 = aaiCreateTasks.splitCDL("");
291 assertEquals(strings2.get(0), "");
295 public void createProjectExceptionTest() {
296 expectedException.expect(BpmnError.class);
298 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "notfound");
299 doThrow(RuntimeException.class).when(aaiServiceInstanceResources)
300 .createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
301 aaiCreateTasks.createProject(execution);
305 public void createProjectNullProjectNameTest() {
306 serviceInstance.getProject().setProjectName(null);
307 doNothing().when(aaiServiceInstanceResources)
308 .createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
309 aaiCreateTasks.createProject(execution);
310 verify(aaiServiceInstanceResources, times(0))
311 .createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
315 public void createProjectEmptyProjectNameTest() {
316 serviceInstance.getProject().setProjectName("");
317 doNothing().when(aaiServiceInstanceResources)
318 .createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
319 aaiCreateTasks.createProject(execution);
320 verify(aaiServiceInstanceResources, times(0))
321 .createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
325 public void createOwningEntityTest() {
326 doReturn(true).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
327 doNothing().when(aaiServiceInstanceResources)
328 .connectOwningEntityandServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
329 aaiCreateTasks.createOwningEntity(execution);
330 verify(aaiServiceInstanceResources, times(1)).existsOwningEntity(serviceInstance.getOwningEntity());
331 verify(aaiServiceInstanceResources, times(1))
332 .connectOwningEntityandServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
336 public void createOwningEntityNotExistsOwningEntityTest() {
337 doReturn(false).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
338 doNothing().when(aaiServiceInstanceResources)
339 .createOwningEntityandConnectServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
340 aaiCreateTasks.createOwningEntity(execution);
341 verify(aaiServiceInstanceResources, times(1)).existsOwningEntity(serviceInstance.getOwningEntity());
342 verify(aaiServiceInstanceResources, times(1))
343 .createOwningEntityandConnectServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
347 public void createOwningEntityShouldThrowExceptionWhenNameAndIDAreNull() {
348 boolean catchedBpmnError = false;
349 serviceInstance.getOwningEntity().setOwningEntityName(null);
350 serviceInstance.getOwningEntity().setOwningEntityId(null);
353 aaiCreateTasks.createOwningEntity(execution);
354 } catch (BpmnError err) {
355 catchedBpmnError = true;
358 assertTrue(catchedBpmnError);
359 assertEquals(execution.getVariable("ErrorCreateOEAAI"), aaiCreateTasks.EXCEPTION_NAME_AND_ID_ARE_NULL);
363 public void createOwningEntityNullOwningEntityNameTest() {
364 expectedException.expect(BpmnError.class);
366 serviceInstance.getOwningEntity().setOwningEntityName(null);
368 doReturn(false).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
370 aaiCreateTasks.createOwningEntity(execution);
374 public void createOwningEntityEmptyOwningEntityNameTest() {
375 expectedException.expect(BpmnError.class);
377 serviceInstance.getOwningEntity().setOwningEntityName("");
379 doReturn(false).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
381 aaiCreateTasks.createOwningEntity(execution);
385 public void createOwningEntityExceptionTest() {
386 expectedException.expect(BpmnError.class);
388 doReturn(true).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
390 doThrow(RuntimeException.class).when(aaiServiceInstanceResources)
391 .connectOwningEntityandServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
393 aaiCreateTasks.createOwningEntity(execution);
397 public void createVnfTest() {
398 doNothing().when(aaiVnfResources).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
399 execution.setVariable("aLaCarte", Boolean.FALSE);
400 aaiCreateTasks.createVnf(execution);
401 verify(aaiVnfResources, times(1)).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
405 public void createVnfExceptionTest() throws Exception {
406 expectedException.expect(BpmnError.class);
407 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "notfound");
408 doThrow(BBObjectNotFoundException.class).when(extractPojosForBBMock).extractByKey(any(),
409 ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID));
410 doNothing().when(aaiVnfResources).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
411 aaiCreateTasks.createVnf(execution);
412 verify(aaiVnfResources, times(1)).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
416 public void createPnfShouldCallCreatePnfAndConnectServiceInstance() throws BBObjectNotFoundException {
417 when(extractPojosForBBMock.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.PNF))).thenReturn(pnf);
418 aaiCreateTasks.createPnf(execution);
419 verify(aaiPnfResources, times(1)).createPnfAndConnectServiceInstance(pnf, serviceInstance);
423 public void createPnfShouldThrowBpmnErrorWhenPnfIsNotFound() throws BBObjectNotFoundException {
424 expectedException.expect(BpmnError.class);
425 doThrow(BBObjectNotFoundException.class).when(extractPojosForBBMock).extractByKey(execution, ResourceKey.PNF);
426 aaiCreateTasks.createPnf(execution);
430 public void createVfModuleTest() throws Exception {
432 VfModule newVfModule = setVfModule(false);
433 newVfModule.setModuleIndex(null);
434 newVfModule.getModelInfoVfModule().setModelInvariantUUID("testModelInvariantUUID1");
435 doNothing().when(aaiVfModuleResources).createVfModule(newVfModule, genericVnf);
436 when(extractPojosForBBMock.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID)))
437 .thenReturn(newVfModule);
439 assertEquals(null, newVfModule.getModuleIndex());
440 execution.setVariable("aLaCarte", Boolean.FALSE);
441 aaiCreateTasks.createVfModule(execution);
442 assertEquals(1, newVfModule.getModuleIndex().intValue());
443 verify(aaiVfModuleResources, times(1)).createVfModule(newVfModule, genericVnf);
447 public void createServiceSubscriptionTest() {
448 doNothing().when(aaiServiceInstanceResources).createServiceSubscription(customer);
449 aaiCreateTasks.createServiceSubscription(execution);
450 verify(aaiServiceInstanceResources, times(1)).createServiceSubscription(customer);
454 public void createServiceSubscriptionTestExceptionHandling() {
455 expectedException.expect(BpmnError.class);
456 doThrow(RuntimeException.class).when(aaiServiceInstanceResources).createServiceSubscription(customer);
457 aaiCreateTasks.createServiceSubscription(execution);
461 public void createServiceSubscriptionTestCustomerIsNull() {
462 expectedException.expect(BpmnError.class);
463 gBBInput.setCustomer(null);
464 aaiCreateTasks.createServiceSubscription(execution);
468 public void createVfModuleExceptionTest() {
469 expectedException.expect(BpmnError.class);
471 doThrow(RuntimeException.class).when(aaiVfModuleResources).createVfModule(vfModule, genericVnf);
472 aaiCreateTasks.createVfModule(execution);
476 public void connectVfModuleToVolumeGroupTest() {
477 doNothing().when(aaiVfModuleResources).connectVfModuleToVolumeGroup(genericVnf, vfModule, volumeGroup,
479 aaiCreateTasks.connectVfModuleToVolumeGroup(execution);
480 verify(aaiVfModuleResources, times(1)).connectVfModuleToVolumeGroup(genericVnf, vfModule, volumeGroup,
485 public void createNetworkTest() {
486 network.getModelInfoNetwork().setNeutronNetworkType("PROVIDER");
487 execution.setVariable("aLaCarte", Boolean.FALSE);
488 doNothing().when(aaiNetworkResources).createNetworkConnectToServiceInstance(network, serviceInstance);
489 aaiCreateTasks.createNetwork(execution);
490 verify(aaiNetworkResources, times(1)).createNetworkConnectToServiceInstance(network, serviceInstance);
494 public void createNetworkExceptionTest() {
495 expectedException.expect(BpmnError.class);
497 lookupKeyMap.put(ResourceKey.NETWORK_ID, "notfound");
498 doThrow(RuntimeException.class).when(aaiNetworkResources).createNetworkConnectToServiceInstance(network,
500 aaiCreateTasks.createNetwork(execution);
504 public void createCustomerTest() throws Exception {
505 doNothing().when(aaiVpnBindingResources).createCustomer(customer);
507 aaiCreateTasks.createCustomer(execution);
509 verify(aaiVpnBindingResources, times(1)).createCustomer(customer);
513 public void createCustomerExceptionTest() throws Exception {
514 expectedException.expect(BpmnError.class);
516 doThrow(RuntimeException.class).when(aaiVpnBindingResources).createCustomer(customer);
518 aaiCreateTasks.createCustomer(execution);
522 public void createNetworkCollectionTest() {
523 doNothing().when(aaiNetworkResources).createNetworkCollection(serviceInstance.getCollection());
524 execution.setVariable("networkCollectionName", "testNetworkCollectionName");
525 aaiCreateTasks.createNetworkCollection(execution);
526 verify(aaiNetworkResources, times(1)).createNetworkCollection(serviceInstance.getCollection());
530 public void createNetworkCollectionInstanceGroupTest() {
531 doNothing().when(aaiNetworkResources)
532 .createNetworkInstanceGroup(serviceInstance.getCollection().getInstanceGroup());
533 execution.setVariable("aLaCarte", Boolean.FALSE);
534 aaiCreateTasks.createNetworkCollectionInstanceGroup(execution);
535 verify(aaiNetworkResources, times(1))
536 .createNetworkInstanceGroup(serviceInstance.getCollection().getInstanceGroup());
540 public void connectNetworkToNetworkCollectionServiceInstanceTest() {
541 doNothing().when(aaiNetworkResources).connectNetworkToNetworkCollectionServiceInstance(network,
543 aaiCreateTasks.connectNetworkToNetworkCollectionServiceInstance(execution);
544 verify(aaiNetworkResources, times(1)).connectNetworkToNetworkCollectionServiceInstance(network,
549 public void connectNetworkToNetworkCollectionInstanceGroupTest() {
550 doNothing().when(aaiNetworkResources).connectNetworkToNetworkCollectionInstanceGroup(network,
551 serviceInstance.getCollection().getInstanceGroup());
552 aaiCreateTasks.connectNetworkToNetworkCollectionInstanceGroup(execution);
553 verify(aaiNetworkResources, times(1)).connectNetworkToNetworkCollectionInstanceGroup(network,
554 serviceInstance.getCollection().getInstanceGroup());
558 public void connectNetworkToNullNetworkCollectionInstanceGroupTest() throws Exception {
559 // reset test data to have no network collection instance group
560 ServiceInstance serviceInstance = new ServiceInstance();
561 serviceInstance.setServiceInstanceId("testServiceInstanceId");
562 L3Network network = new L3Network();
563 network.setNetworkId("testNetworkId");
564 serviceInstance.getNetworks().add(network);
565 lookupKeyMap.put(ResourceKey.NETWORK_ID, network.getNetworkId());
566 gBBInput.setServiceInstance(serviceInstance);
567 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, serviceInstance.getServiceInstanceId());
569 when(extractPojosForBBMock.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID)))
570 .thenReturn(serviceInstance);
571 when(extractPojosForBBMock.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.NETWORK_ID)))
572 .thenReturn(serviceInstance);
573 // verify connection call was not executednetwork
574 exception.expect(BpmnError.class);
575 aaiCreateTasks.connectNetworkToNetworkCollectionInstanceGroup(execution);
576 verify(aaiNetworkResources, never()).connectNetworkToNetworkCollectionInstanceGroup(network, null);
580 public void connectNetworkToCloudRegionTest() {
581 gBBInput = execution.getGeneralBuildingBlock();
582 doNothing().when(aaiNetworkResources).connectNetworkToCloudRegion(network, gBBInput.getCloudRegion());
583 aaiCreateTasks.connectNetworkToCloudRegion(execution);
584 verify(aaiNetworkResources, times(1)).connectNetworkToCloudRegion(network, gBBInput.getCloudRegion());
588 public void connectNetworkToTenantTest() {
589 gBBInput = execution.getGeneralBuildingBlock();
590 doNothing().when(aaiNetworkResources).connectNetworkToTenant(network, gBBInput.getCloudRegion());
591 aaiCreateTasks.connectNetworkToTenant(execution);
592 verify(aaiNetworkResources, times(1)).connectNetworkToTenant(network, gBBInput.getCloudRegion());
596 public void createConfigurationTest() {
597 gBBInput = execution.getGeneralBuildingBlock();
598 doNothing().when(aaiConfigurationResources).createConfiguration(configuration);
599 execution.setVariable("aLaCarte", Boolean.FALSE);
600 aaiCreateTasks.createConfiguration(execution);
601 verify(aaiConfigurationResources, times(1)).createConfiguration(configuration);
605 public void connectVnfToCloudRegionTest() {
606 gBBInput = execution.getGeneralBuildingBlock();
607 doNothing().when(aaiVnfResources).connectVnfToCloudRegion(genericVnf, gBBInput.getCloudRegion());
608 aaiCreateTasks.connectVnfToCloudRegion(execution);
609 verify(aaiVnfResources, times(1)).connectVnfToCloudRegion(genericVnf, gBBInput.getCloudRegion());
613 public void connectNoneToVnfToCloudRegionTest() {
614 String[] arr = new String[1];
615 arr[0] = "test25Region2";
616 doReturn(arr).when(env).getProperty("mso.bpmn.cloudRegionIdsToSkipAddingVnfEdgesTo", String[].class);
617 gBBInput = execution.getGeneralBuildingBlock();
618 gBBInput.getCloudRegion().setLcpCloudRegionId("test25Region2");
619 doNothing().when(aaiVnfResources).connectVnfToCloudRegion(genericVnf, gBBInput.getCloudRegion());
620 aaiCreateTasks.connectVnfToCloudRegion(execution);
621 verify(aaiVnfResources, times(0)).connectVnfToCloudRegion(genericVnf, gBBInput.getCloudRegion());
625 public void connectVnfTenantTest() {
626 gBBInput = execution.getGeneralBuildingBlock();
627 doNothing().when(aaiVnfResources).connectVnfToTenant(genericVnf, gBBInput.getCloudRegion());
628 aaiCreateTasks.connectVnfToTenant(execution);
629 verify(aaiVnfResources, times(1)).connectVnfToTenant(genericVnf, gBBInput.getCloudRegion());
633 public void createInstanceGroupVnfTest() {
634 doReturn(false).when(aaiInstanceGroupResources)
635 .checkInstanceGroupNameInUse(instanceGroup.getInstanceGroupName());
636 doNothing().when(aaiInstanceGroupResources).createInstanceGroupandConnectServiceInstance(instanceGroup,
638 execution.setVariable("aLaCarte", Boolean.FALSE);
639 aaiCreateTasks.createInstanceGroupVnf(execution);
640 verify(aaiInstanceGroupResources, times(1)).createInstanceGroupandConnectServiceInstance(instanceGroup,
645 public void createInstanceGroupVnfExceptionTest() {
646 expectedException.expect(BpmnError.class);
647 doThrow(RuntimeException.class).when(aaiInstanceGroupResources)
648 .createInstanceGroupandConnectServiceInstance(instanceGroup, serviceInstance);
649 aaiCreateTasks.createInstanceGroupVnf(execution);
653 public void createNetworkPolicyNeedToCreateAllTest() {
654 execution.setVariable("heatStackId", "testHeatStackId");
655 execution.setVariable("contrailNetworkPolicyFqdnList", "ABC123,ED456");
656 Optional<NetworkPolicy> networkPolicy = Optional.empty();
657 doReturn(networkPolicy).when(aaiNetworkResources).getNetworkPolicy(any(AAIResourceUri.class));
658 doNothing().when(aaiNetworkResources).createNetworkPolicy(any(NetworkPolicy.class));
659 aaiCreateTasks.createNetworkPolicies(execution);
660 verify(aaiNetworkResources, times(2)).createNetworkPolicy(networkPolicyCaptor.capture());
661 assertEquals("ABC123", networkPolicyCaptor.getAllValues().get(0).getNetworkPolicyFqdn());
662 assertEquals("ED456", networkPolicyCaptor.getAllValues().get(1).getNetworkPolicyFqdn());
663 assertEquals("testHeatStackId", networkPolicyCaptor.getAllValues().get(0).getHeatStackId());
664 assertEquals("testHeatStackId", networkPolicyCaptor.getAllValues().get(1).getHeatStackId());
668 public void createNetworkPolicyNeedToCreateNoneTest() {
669 execution.setVariable("heatStackId", "testHeatStackId");
670 execution.setVariable("contrailNetworkPolicyFqdnList", "ABC123");
671 NetworkPolicy networkPolicy = new NetworkPolicy();
672 doReturn(Optional.of(networkPolicy)).when(aaiNetworkResources).getNetworkPolicy(any(AAIBaseResourceUri.class));
673 doNothing().when(aaiNetworkResources).createNetworkPolicy(any(NetworkPolicy.class));
674 aaiCreateTasks.createNetworkPolicies(execution);
675 verify(aaiNetworkResources, times(0)).createNetworkPolicy(any(NetworkPolicy.class));
679 public void createNetworkPolicyNoNetworkPoliciesTest() {
680 execution.setVariable("heatStackId", "testHeatStackId");
681 aaiCreateTasks.createNetworkPolicies(execution);
682 verify(aaiNetworkResources, times(0)).createNetworkPolicy(any(NetworkPolicy.class));
686 public void createVfModuleGetLowestIndexTest() {
687 GenericVnf vnf = new GenericVnf();
688 ModelInfoGenericVnf vnfInfo = new ModelInfoGenericVnf();
689 vnf.setModelInfoGenericVnf(vnfInfo);
690 vnfInfo.setModelInvariantUuid("my-uuid");
692 ModelInfoVfModule infoA = new ModelInfoVfModule();
693 infoA.setIsBaseBoolean(false);
694 infoA.setModelInvariantUUID("A");
696 ModelInfoVfModule infoB = new ModelInfoVfModule();
697 infoB.setIsBaseBoolean(false);
698 infoB.setModelInvariantUUID("B");
700 ModelInfoVfModule infoC = new ModelInfoVfModule();
701 infoC.setIsBaseBoolean(false);
702 infoC.setModelInvariantUUID("C");
704 VfModule newVfModuleA = new VfModule();
705 newVfModuleA.setVfModuleId("a");
706 VfModule newVfModuleB = new VfModule();
707 newVfModuleB.setVfModuleId("b");
708 VfModule newVfModuleC = new VfModule();
709 newVfModuleC.setVfModuleId("c");
711 VfModule vfModule = new VfModule();
712 vnf.getVfModules().add(vfModule);
713 vfModule.setVfModuleId("1");
715 VfModule vfModule2 = new VfModule();
716 vnf.getVfModules().add(vfModule2);
717 vfModule2.setVfModuleId("2");
719 VfModule vfModule3 = new VfModule();
720 vnf.getVfModules().add(vfModule3);
721 vfModule3.setVfModuleId("3");
723 VfModule vfModule4 = new VfModule();
724 vnf.getVfModules().add(vfModule4);
725 vfModule4.setVfModuleId("4");
727 VfModule vfModule5 = new VfModule();
728 vnf.getVfModules().add(vfModule5);
729 vfModule5.setVfModuleId("5");
731 // modules are included in the vnf already
732 vnf.getVfModules().add(newVfModuleA);
733 vnf.getVfModules().add(newVfModuleB);
734 vnf.getVfModules().add(newVfModuleC);
737 newVfModuleA.setModelInfoVfModule(infoA);
738 vfModule.setModelInfoVfModule(infoA);
739 vfModule2.setModelInfoVfModule(infoA);
740 vfModule3.setModelInfoVfModule(infoA);
744 newVfModuleB.setModelInfoVfModule(infoB);
745 vfModule4.setModelInfoVfModule(infoB);
746 vfModule5.setModelInfoVfModule(infoB);
749 newVfModuleC.setModelInfoVfModule(infoC);
753 vfModule.setModuleIndex(2);
754 vfModule2.setModuleIndex(0);
755 vfModule3.setModuleIndex(3);
758 vfModule4.setModuleIndex(null);
759 vfModule5.setModuleIndex(1);
761 assertEquals(1, aaiCreateTasks.getLowestUnusedVfModuleIndexFromAAIVnfResponse(vnf, newVfModuleA));
763 assertEquals(2, aaiCreateTasks.getLowestUnusedVfModuleIndexFromAAIVnfResponse(vnf, newVfModuleB));
765 assertEquals(0, aaiCreateTasks.getLowestUnusedVfModuleIndexFromAAIVnfResponse(vnf, newVfModuleC));
770 public void calculateUnusedIndexTest() {
772 TreeSet<Integer> a = new TreeSet<>(Arrays.asList(0, 1, 3));
773 TreeSet<Integer> b = new TreeSet<>(Arrays.asList(0, 1, 8));
774 TreeSet<Integer> c = new TreeSet<>(Arrays.asList(0, 2, 4));
775 assertEquals(2, aaiCreateTasks.calculateUnusedIndex(a, 0));
776 assertEquals(5, aaiCreateTasks.calculateUnusedIndex(a, 2));
778 assertEquals(4, aaiCreateTasks.calculateUnusedIndex(b, 2));
779 assertEquals(3, aaiCreateTasks.calculateUnusedIndex(b, 1));
781 assertEquals(5, aaiCreateTasks.calculateUnusedIndex(c, 2));
782 assertEquals(9, aaiCreateTasks.calculateUnusedIndex(c, 6));
783 assertEquals(1, aaiCreateTasks.calculateUnusedIndex(c, 0));