2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
20 package org.onap.so.bpmn.infrastructure.aai.tasks;
22 import static org.junit.Assert.assertEquals;
23 import static org.mockito.ArgumentMatchers.any;
24 import static org.mockito.ArgumentMatchers.eq;
25 import static org.mockito.Mockito.doNothing;
26 import static org.mockito.Mockito.doReturn;
27 import static org.mockito.Mockito.doThrow;
28 import static org.mockito.Mockito.never;
29 import static org.mockito.Mockito.times;
30 import static org.mockito.Mockito.verify;
31 import static org.mockito.Mockito.when;
33 import java.util.Arrays;
34 import java.util.Optional;
35 import java.util.TreeSet;
37 import org.camunda.bpm.engine.delegate.BpmnError;
38 import org.junit.Before;
39 import org.junit.Rule;
40 import org.junit.Test;
41 import org.junit.rules.ExpectedException;
42 import org.mockito.ArgumentCaptor;
43 import org.mockito.ArgumentMatchers;
44 import org.mockito.Captor;
45 import org.mockito.InjectMocks;
46 import org.onap.so.bpmn.BaseTaskTest;
47 import org.onap.so.bpmn.common.BuildingBlockExecution;
48 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
49 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
50 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
51 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
52 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
53 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
54 import org.onap.so.bpmn.servicedecomposition.bbobjects.NetworkPolicy;
55 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
56 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
57 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
58 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
59 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
60 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
61 import org.onap.so.client.exception.BBObjectNotFoundException;
62 import org.onap.so.db.catalog.beans.OrchestrationStatus;
63 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
65 public class AAICreateTasksTest extends BaseTaskTest{
68 private AAICreateTasks aaiCreateTasks = new AAICreateTasks();
71 private ServiceInstance serviceInstance;
72 private L3Network network;
73 private GenericVnf genericVnf;
74 private VolumeGroup volumeGroup;
75 private CloudRegion cloudRegion;
76 private VfModule vfModule;
77 private Customer customer;
78 private Configuration configuration;
79 private InstanceGroup instanceGroup;
82 ArgumentCaptor<NetworkPolicy> networkPolicyCaptor;
85 public final ExpectedException exception = ExpectedException.none();
88 public void before() throws BBObjectNotFoundException {
89 customer = setCustomer();
90 serviceInstance = setServiceInstance();
91 network = setL3Network();
92 genericVnf = setGenericVnf();
93 volumeGroup = setVolumeGroup();
94 cloudRegion = setCloudRegion();
95 vfModule = setVfModule();
96 configuration = setConfiguration();
97 instanceGroup = setInstanceGroupVnf();
99 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID))).thenReturn(genericVnf);
100 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
101 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(network);
102 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VOLUME_GROUP_ID))).thenReturn(volumeGroup);
103 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
104 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.CONFIGURATION_ID))).thenReturn(configuration);
105 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID))).thenReturn(instanceGroup);
108 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
109 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
114 public void createServiceInstanceTest() throws Exception {
115 doNothing().when(aaiServiceInstanceResources).createServiceInstance(serviceInstance, customer);
116 aaiCreateTasks.createServiceInstance(execution);
117 verify(aaiServiceInstanceResources, times(1)).createServiceInstance(serviceInstance, customer);
121 public void createServiceInstanceExceptionTest() throws Exception {
122 expectedException.expect(BpmnError.class);
124 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "notfound");
125 doThrow(RuntimeException.class).when(aaiServiceInstanceResources).createServiceInstance(serviceInstance, customer);
126 aaiCreateTasks.createServiceInstance(execution);
130 public void createVolumeGroupTest() throws Exception {
131 volumeGroup.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
133 doNothing().when(aaiVolumeGroupResources).createVolumeGroup(volumeGroup, cloudRegion);
134 doNothing().when(aaiVolumeGroupResources).connectVolumeGroupToVnf(genericVnf, volumeGroup, cloudRegion);
136 aaiCreateTasks.createVolumeGroup(execution);
138 verify(aaiVolumeGroupResources, times(1)).createVolumeGroup(volumeGroup, cloudRegion);
139 verify(aaiVolumeGroupResources, times(1)).connectVolumeGroupToVnf(genericVnf, volumeGroup, cloudRegion);
140 verify(aaiVolumeGroupResources, times(1)).connectVolumeGroupToTenant(volumeGroup, cloudRegion);
144 public void createVolumeGroupExceptionTest() throws Exception {
145 expectedException.expect(BpmnError.class);
147 volumeGroup.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
149 doThrow(RuntimeException.class).when(aaiVolumeGroupResources).createVolumeGroup(volumeGroup, cloudRegion);
151 aaiCreateTasks.createVolumeGroup(execution);
155 public void createProjectTest() throws Exception {
156 doNothing().when(aaiServiceInstanceResources).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
157 aaiCreateTasks.createProject(execution);
158 verify(aaiServiceInstanceResources, times(1)).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
162 public void createPlatformTest() throws Exception {
163 doNothing().when(aaiVnfResources).createPlatformandConnectVnf(genericVnf.getPlatform(), genericVnf);
164 aaiCreateTasks.createPlatform(execution);
165 verify(aaiVnfResources, times(1)).createPlatformandConnectVnf(genericVnf.getPlatform(), genericVnf);
169 public void createLineOfBusinessTest() throws Exception {
170 doNothing().when(aaiVnfResources).createLineOfBusinessandConnectVnf(genericVnf.getLineOfBusiness(), genericVnf);
171 aaiCreateTasks.createLineOfBusiness(execution);
172 verify(aaiVnfResources, times(1)).createLineOfBusinessandConnectVnf(genericVnf.getLineOfBusiness(), genericVnf);
176 public void createProjectExceptionTest() throws Exception {
177 expectedException.expect(BpmnError.class);
179 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, "notfound");
180 doThrow(RuntimeException.class).when(aaiServiceInstanceResources).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
181 aaiCreateTasks.createProject(execution);
185 public void createProjectNullProjectNameTest() throws Exception {
186 serviceInstance.getProject().setProjectName(null);
187 doNothing().when(aaiServiceInstanceResources).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
188 aaiCreateTasks.createProject(execution);
189 verify(aaiServiceInstanceResources, times(0)).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
193 public void createProjectEmptyProjectNameTest() throws Exception {
194 serviceInstance.getProject().setProjectName("");
195 doNothing().when(aaiServiceInstanceResources).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
196 aaiCreateTasks.createProject(execution);
197 verify(aaiServiceInstanceResources, times(0)).createProjectandConnectServiceInstance(serviceInstance.getProject(), serviceInstance);
201 public void createOwningEntityTest() throws Exception {
202 doReturn(true).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
203 doNothing().when(aaiServiceInstanceResources).connectOwningEntityandServiceInstance(serviceInstance.getOwningEntity(),serviceInstance);
204 aaiCreateTasks.createOwningEntity(execution);
205 verify(aaiServiceInstanceResources, times(1)).existsOwningEntity(serviceInstance.getOwningEntity());
206 verify(aaiServiceInstanceResources, times(1)).connectOwningEntityandServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
210 public void createOwningEntityNotExistsOwningEntityTest() throws Exception {
211 doReturn(false).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
212 doNothing().when(aaiServiceInstanceResources).createOwningEntityandConnectServiceInstance(serviceInstance.getOwningEntity(),serviceInstance);
213 aaiCreateTasks.createOwningEntity(execution);
214 verify(aaiServiceInstanceResources, times(1)).existsOwningEntity(serviceInstance.getOwningEntity());
215 verify(aaiServiceInstanceResources, times(1)).createOwningEntityandConnectServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
219 public void createOwningEntityNullOwningEntityIdTest() throws Exception {
220 expectedException.expect(BpmnError.class);
222 serviceInstance.getOwningEntity().setOwningEntityId(null);
224 aaiCreateTasks.createOwningEntity(execution);
228 public void createOwningEntityEmptyOwningEntityIdTest() throws Exception {
229 expectedException.expect(BpmnError.class);
231 serviceInstance.getOwningEntity().setOwningEntityId("");
233 aaiCreateTasks.createOwningEntity(execution);
237 public void createOwningEntityNullOwningEntityNameTest() throws Exception {
238 expectedException.expect(BpmnError.class);
240 serviceInstance.getOwningEntity().setOwningEntityName(null);
242 doReturn(false).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
244 aaiCreateTasks.createOwningEntity(execution);
248 public void createOwningEntityEmptyOwningEntityNameTest() throws Exception {
249 expectedException.expect(BpmnError.class);
251 serviceInstance.getOwningEntity().setOwningEntityName("");
253 doReturn(false).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
255 aaiCreateTasks.createOwningEntity(execution);
259 public void createOwningEntityExceptionTest() throws Exception {
260 expectedException.expect(BpmnError.class);
262 doReturn(true).when(aaiServiceInstanceResources).existsOwningEntity(serviceInstance.getOwningEntity());
264 doThrow(RuntimeException.class).when(aaiServiceInstanceResources).connectOwningEntityandServiceInstance(serviceInstance.getOwningEntity(), serviceInstance);
266 aaiCreateTasks.createOwningEntity(execution);
270 public void createVnfTest() throws Exception {
271 doNothing().when(aaiVnfResources).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
272 aaiCreateTasks.createVnf(execution);
273 verify(aaiVnfResources, times(1)).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
277 public void createVnfExceptionTest() throws Exception {
278 expectedException.expect(BpmnError.class);
279 lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "notfound");
280 doThrow(BBObjectNotFoundException.class).when(extractPojosForBB).extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID));
281 doNothing().when(aaiVnfResources).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
282 aaiCreateTasks.createVnf(execution);
283 verify(aaiVnfResources, times(1)).createVnfandConnectServiceInstance(genericVnf, serviceInstance);
288 public void createVfModuleTest() throws Exception {
290 VfModule newVfModule = setVfModule(false);
291 newVfModule.setModuleIndex(null);
292 newVfModule.getModelInfoVfModule().setModelInvariantUUID("testModelInvariantUUID1");
293 doNothing().when(aaiVfModuleResources).createVfModule(newVfModule, genericVnf);
294 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(newVfModule);
296 assertEquals(null, newVfModule.getModuleIndex());
297 aaiCreateTasks.createVfModule(execution);
298 assertEquals(1, newVfModule.getModuleIndex().intValue());
299 verify(aaiVfModuleResources, times(1)).createVfModule(newVfModule, genericVnf);
303 public void createServiceSubscriptionTest(){
304 doNothing().when(aaiServiceInstanceResources).createServiceSubscription(customer);
305 aaiCreateTasks.createServiceSubscription(execution);
306 verify(aaiServiceInstanceResources, times(1)).createServiceSubscription(customer);
310 public void createServiceSubscriptionTestExceptionHandling(){
311 expectedException.expect(BpmnError.class);
312 doThrow(RuntimeException.class).when(aaiServiceInstanceResources).createServiceSubscription(customer);
313 aaiCreateTasks.createServiceSubscription(execution);
317 public void createServiceSubscriptionTestCustomerIsNull(){
318 expectedException.expect(BpmnError.class);
319 gBBInput.setCustomer(null);
320 aaiCreateTasks.createServiceSubscription(execution);
324 public void createVfModuleExceptionTest() throws Exception {
325 expectedException.expect(BpmnError.class);
327 doThrow(RuntimeException.class).when(aaiVfModuleResources).createVfModule(vfModule, genericVnf);
328 aaiCreateTasks.createVfModule(execution);
332 public void connectVfModuleToVolumeGroupTest() throws Exception {
333 doNothing().when(aaiVfModuleResources).connectVfModuleToVolumeGroup(genericVnf, vfModule, volumeGroup, cloudRegion);
334 aaiCreateTasks.connectVfModuleToVolumeGroup(execution);
335 verify(aaiVfModuleResources, times(1)).connectVfModuleToVolumeGroup(genericVnf, vfModule, volumeGroup, cloudRegion);
339 public void createNetworkTest() throws Exception {
340 network.getModelInfoNetwork().setNeutronNetworkType("PROVIDER");
342 doNothing().when(aaiNetworkResources).createNetworkConnectToServiceInstance(network,serviceInstance);
343 aaiCreateTasks.createNetwork(execution);
344 verify(aaiNetworkResources, times(1)).createNetworkConnectToServiceInstance(network, serviceInstance);
348 public void createNetworkExceptionTest() throws Exception {
349 expectedException.expect(BpmnError.class);
351 lookupKeyMap.put(ResourceKey.NETWORK_ID, "notfound");
352 doThrow(RuntimeException.class).when(aaiNetworkResources).createNetworkConnectToServiceInstance(network,serviceInstance);
353 aaiCreateTasks.createNetwork(execution);
357 public void createCustomerTest() throws Exception {
358 doNothing().when(aaiVpnBindingResources).createCustomer(customer);
360 aaiCreateTasks.createCustomer(execution);
362 verify(aaiVpnBindingResources, times(1)).createCustomer(customer);
366 public void createCustomerExceptionTest() throws Exception {
367 expectedException.expect(BpmnError.class);
369 doThrow(RuntimeException.class).when(aaiVpnBindingResources).createCustomer(customer);
371 aaiCreateTasks.createCustomer(execution);
375 public void createNetworkCollectionTest() throws Exception {
376 doNothing().when(aaiNetworkResources).createNetworkCollection(serviceInstance.getCollection());
377 execution.setVariable("networkCollectionName", "testNetworkCollectionName");
378 aaiCreateTasks.createNetworkCollection(execution);
379 verify(aaiNetworkResources, times(1)).createNetworkCollection(serviceInstance.getCollection());
383 public void createNetworkCollectionInstanceGroupTest() throws Exception {
384 doNothing().when(aaiNetworkResources).createNetworkInstanceGroup(serviceInstance.getCollection().getInstanceGroup());
385 aaiCreateTasks.createNetworkCollectionInstanceGroup(execution);
386 verify(aaiNetworkResources, times(1)).createNetworkInstanceGroup(serviceInstance.getCollection().getInstanceGroup());
390 public void connectNetworkToNetworkCollectionServiceInstanceTest() throws Exception {
391 doNothing().when(aaiNetworkResources).connectNetworkToNetworkCollectionServiceInstance(network, serviceInstance);
392 aaiCreateTasks.connectNetworkToNetworkCollectionServiceInstance(execution);
393 verify(aaiNetworkResources, times(1)).connectNetworkToNetworkCollectionServiceInstance(network, serviceInstance);
397 public void connectNetworkToNetworkCollectionInstanceGroupTest() throws Exception {
398 doNothing().when(aaiNetworkResources).connectNetworkToNetworkCollectionInstanceGroup(network, serviceInstance.getCollection().getInstanceGroup());
399 aaiCreateTasks.connectNetworkToNetworkCollectionInstanceGroup(execution);
400 verify(aaiNetworkResources, times(1)).connectNetworkToNetworkCollectionInstanceGroup(network, serviceInstance.getCollection().getInstanceGroup());
404 public void connectNetworkToNullNetworkCollectionInstanceGroupTest() throws Exception {
405 //reset test data to have no network collection instance group
406 ServiceInstance serviceInstance = new ServiceInstance();
407 serviceInstance.setServiceInstanceId("testServiceInstanceId");
408 L3Network network = new L3Network();
409 network.setNetworkId("testNetworkId");
410 serviceInstance.getNetworks().add(network);
411 lookupKeyMap.put(ResourceKey.NETWORK_ID, network.getNetworkId());
412 gBBInput.setServiceInstance(serviceInstance);
413 lookupKeyMap.put(ResourceKey.SERVICE_INSTANCE_ID, serviceInstance.getServiceInstanceId());
415 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID))).thenReturn(serviceInstance);
416 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.NETWORK_ID))).thenReturn(serviceInstance);
417 //verify connection call was not executednetwork
418 exception.expect(BpmnError.class);
419 aaiCreateTasks.connectNetworkToNetworkCollectionInstanceGroup(execution);
420 verify(aaiNetworkResources, never()).connectNetworkToNetworkCollectionInstanceGroup(network, null);
424 public void connectNetworkToCloudRegionTest() throws Exception {
425 gBBInput = execution.getGeneralBuildingBlock();
426 doNothing().when(aaiNetworkResources).connectNetworkToCloudRegion(network, gBBInput.getCloudRegion());
427 aaiCreateTasks.connectNetworkToCloudRegion(execution);
428 verify(aaiNetworkResources, times(1)).connectNetworkToCloudRegion(network, gBBInput.getCloudRegion());
432 public void connectNetworkToTenantTest() throws Exception {
433 gBBInput = execution.getGeneralBuildingBlock();
434 doNothing().when(aaiNetworkResources).connectNetworkToTenant(network, gBBInput.getCloudRegion());
435 aaiCreateTasks.connectNetworkToTenant(execution);
436 verify(aaiNetworkResources, times(1)).connectNetworkToTenant(network, gBBInput.getCloudRegion());
440 public void createConfigurationTest() throws Exception {
441 gBBInput = execution.getGeneralBuildingBlock();
442 doNothing().when(aaiConfigurationResources).createConfiguration(configuration);
443 aaiCreateTasks.createConfiguration(execution);
444 verify(aaiConfigurationResources, times(1)).createConfiguration(configuration);
448 public void connectVnfToCloudRegionTest() throws Exception {
449 gBBInput = execution.getGeneralBuildingBlock();
450 doNothing().when(aaiVnfResources).connectVnfToCloudRegion(genericVnf, gBBInput.getCloudRegion());
451 aaiCreateTasks.connectVnfToCloudRegion(execution);
452 verify(aaiVnfResources, times(1)).connectVnfToCloudRegion(genericVnf, gBBInput.getCloudRegion());
456 public void connectNoneToVnfToCloudRegionTest() throws Exception {
457 String[] arr = new String[1];
458 arr[0] = "test25Region2";
459 doReturn(arr).when(env).getProperty("mso.bpmn.cloudRegionIdsToSkipAddingVnfEdgesTo", String[].class);
460 gBBInput = execution.getGeneralBuildingBlock();
461 gBBInput.getCloudRegion().setLcpCloudRegionId("test25Region2");
462 doNothing().when(aaiVnfResources).connectVnfToCloudRegion(genericVnf, gBBInput.getCloudRegion());
463 aaiCreateTasks.connectVnfToCloudRegion(execution);
464 verify(aaiVnfResources, times(0)).connectVnfToCloudRegion(genericVnf, gBBInput.getCloudRegion());
468 public void connectVnfTenantTest() throws Exception {
469 gBBInput = execution.getGeneralBuildingBlock();
470 doNothing().when(aaiVnfResources).connectVnfToTenant(genericVnf, gBBInput.getCloudRegion());
471 aaiCreateTasks.connectVnfToTenant(execution);
472 verify(aaiVnfResources, times(1)).connectVnfToTenant(genericVnf, gBBInput.getCloudRegion());
476 public void createInstanceGroupVnfTest() throws Exception {
477 doNothing().when(aaiInstanceGroupResources).createInstanceGroupandConnectServiceInstance(instanceGroup, serviceInstance);
478 aaiCreateTasks.createInstanceGroupVnf(execution);
479 verify(aaiInstanceGroupResources, times(1)).createInstanceGroupandConnectServiceInstance(instanceGroup, serviceInstance);
483 public void createInstanceGroupVnfExceptionTest() throws Exception {
484 expectedException.expect(BpmnError.class);
485 doThrow(RuntimeException.class).when(aaiInstanceGroupResources).createInstanceGroupandConnectServiceInstance(instanceGroup, serviceInstance);
486 aaiCreateTasks.createInstanceGroupVnf(execution);
490 public void createNetworkPolicyNeedToCreateAllTest() throws Exception {
491 execution.setVariable("heatStackId", "testHeatStackId");
492 execution.setVariable("contrailNetworkPolicyFqdnList", "ABC123,ED456");
493 Optional<NetworkPolicy> networkPolicy = Optional.empty();
494 doReturn(networkPolicy).when(aaiNetworkResources).getNetworkPolicy(any(AAIResourceUri.class));
495 doNothing().when(aaiNetworkResources).createNetworkPolicy(any(NetworkPolicy.class));
496 aaiCreateTasks.createNetworkPolicies(execution);
497 verify(aaiNetworkResources, times(2)).createNetworkPolicy(networkPolicyCaptor.capture());
498 assertEquals("ABC123", networkPolicyCaptor.getAllValues().get(0).getNetworkPolicyFqdn());
499 assertEquals("ED456", networkPolicyCaptor.getAllValues().get(1).getNetworkPolicyFqdn());
500 assertEquals("testHeatStackId", networkPolicyCaptor.getAllValues().get(0).getHeatStackId());
501 assertEquals("testHeatStackId", networkPolicyCaptor.getAllValues().get(1).getHeatStackId());
505 public void createNetworkPolicyNeedToCreateNoneTest() throws Exception {
506 execution.setVariable("heatStackId", "testHeatStackId");
507 execution.setVariable("contrailNetworkPolicyFqdnList", "ABC123");
508 NetworkPolicy networkPolicy = new NetworkPolicy();
509 doReturn(Optional.of(networkPolicy)).when(aaiNetworkResources).getNetworkPolicy(any(AAIResourceUri.class));
510 doNothing().when(aaiNetworkResources).createNetworkPolicy(any(NetworkPolicy.class));
511 aaiCreateTasks.createNetworkPolicies(execution);
512 verify(aaiNetworkResources, times(0)).createNetworkPolicy(any(NetworkPolicy.class));
516 public void createNetworkPolicyNoNetworkPoliciesTest() throws Exception {
517 execution.setVariable("heatStackId", "testHeatStackId");
518 aaiCreateTasks.createNetworkPolicies(execution);
519 verify(aaiNetworkResources, times(0)).createNetworkPolicy(any(NetworkPolicy.class));
523 public void createVfModuleGetLowestIndexTest() throws Exception {
524 GenericVnf vnf = new GenericVnf();
525 ModelInfoGenericVnf vnfInfo = new ModelInfoGenericVnf();
526 vnf.setModelInfoGenericVnf(vnfInfo);
527 vnfInfo.setModelInvariantUuid("my-uuid");
529 ModelInfoVfModule infoA = new ModelInfoVfModule();
530 infoA.setIsBaseBoolean(false);
531 infoA.setModelInvariantUUID("A");
533 ModelInfoVfModule infoB = new ModelInfoVfModule();
534 infoB.setIsBaseBoolean(false);
535 infoB.setModelInvariantUUID("B");
537 ModelInfoVfModule infoC = new ModelInfoVfModule();
538 infoC.setIsBaseBoolean(false);
539 infoC.setModelInvariantUUID("C");
541 VfModule newVfModuleA = new VfModule();
542 newVfModuleA.setVfModuleId("a");
543 VfModule newVfModuleB = new VfModule();
544 newVfModuleB.setVfModuleId("b");
545 VfModule newVfModuleC = new VfModule();
546 newVfModuleC.setVfModuleId("c");
548 VfModule vfModule = new VfModule();
549 vnf.getVfModules().add(vfModule);
550 vfModule.setVfModuleId("1");
552 VfModule vfModule2 = new VfModule();
553 vnf.getVfModules().add(vfModule2);
554 vfModule2.setVfModuleId("2");
556 VfModule vfModule3 = new VfModule();
557 vnf.getVfModules().add(vfModule3);
558 vfModule3.setVfModuleId("3");
560 VfModule vfModule4 = new VfModule();
561 vnf.getVfModules().add(vfModule4);
562 vfModule4.setVfModuleId("4");
564 VfModule vfModule5 = new VfModule();
565 vnf.getVfModules().add(vfModule5);
566 vfModule5.setVfModuleId("5");
568 //modules are included in the vnf already
569 vnf.getVfModules().add(newVfModuleA);
570 vnf.getVfModules().add(newVfModuleB);
571 vnf.getVfModules().add(newVfModuleC);
574 newVfModuleA.setModelInfoVfModule(infoA);
575 vfModule.setModelInfoVfModule(infoA);
576 vfModule2.setModelInfoVfModule(infoA);
577 vfModule3.setModelInfoVfModule(infoA);
581 newVfModuleB.setModelInfoVfModule(infoB);
582 vfModule4.setModelInfoVfModule(infoB);
583 vfModule5.setModelInfoVfModule(infoB);
586 newVfModuleC.setModelInfoVfModule(infoC);
590 vfModule.setModuleIndex(2);
591 vfModule2.setModuleIndex(0);
592 vfModule3.setModuleIndex(3);
595 vfModule4.setModuleIndex(null);
596 vfModule5.setModuleIndex(1);
598 assertEquals(1, aaiCreateTasks.getLowestUnusedVfModuleIndexFromAAIVnfResponse(vnf, newVfModuleA));
600 assertEquals(2, aaiCreateTasks.getLowestUnusedVfModuleIndexFromAAIVnfResponse(vnf, newVfModuleB));
602 assertEquals(0, aaiCreateTasks.getLowestUnusedVfModuleIndexFromAAIVnfResponse(vnf, newVfModuleC));
607 public void calculateUnusedIndexTest() {
609 TreeSet<Integer> a = new TreeSet<>(Arrays.asList(0,1,3));
610 TreeSet<Integer> b = new TreeSet<>(Arrays.asList(0,1,8));
611 TreeSet<Integer> c = new TreeSet<>(Arrays.asList(0,2,4));
612 assertEquals(2, aaiCreateTasks.calculateUnusedIndex(a, 0));
613 assertEquals(5, aaiCreateTasks.calculateUnusedIndex(a, 2));
615 assertEquals(4, aaiCreateTasks.calculateUnusedIndex(b, 2));
616 assertEquals(3, aaiCreateTasks.calculateUnusedIndex(b, 1));
618 assertEquals(5, aaiCreateTasks.calculateUnusedIndex(c, 2));
619 assertEquals(9, aaiCreateTasks.calculateUnusedIndex(c, 6));
620 assertEquals(1, aaiCreateTasks.calculateUnusedIndex(c, 0));