2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 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=========================================================
21 package org.onap.so.bpmn.infrastructure.workflow.tasks;
23 import static org.hamcrest.CoreMatchers.containsString;
24 import static org.hamcrest.CoreMatchers.equalTo;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNull;
27 import static org.junit.Assert.assertThat;
28 import static org.mockito.ArgumentMatchers.anyObject;
29 import static org.mockito.ArgumentMatchers.anyString;
30 import static org.mockito.Mockito.doReturn;
31 import static org.mockito.Mockito.when;
33 import java.io.IOException;
34 import java.net.MalformedURLException;
35 import java.nio.file.Files;
36 import java.nio.file.Paths;
37 import java.util.ArrayList;
38 import java.util.Arrays;
39 import java.util.List;
40 import java.util.Optional;
41 import java.util.UUID;
43 import org.camunda.bpm.engine.delegate.BpmnError;
44 import org.camunda.bpm.engine.delegate.DelegateExecution;
45 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
46 import org.junit.Before;
47 import org.junit.Ignore;
48 import org.junit.Rule;
49 import org.junit.Test;
50 import org.junit.rules.ExpectedException;
51 import org.mockito.InjectMocks;
52 import org.onap.aai.domain.yang.GenericVnf;
53 import org.onap.aai.domain.yang.L3Network;
54 import org.onap.aai.domain.yang.ServiceInstance;
55 import org.onap.aai.domain.yang.VfModule;
56 import org.onap.aai.domain.yang.VfModules;
57 import org.onap.aai.domain.yang.VolumeGroup;
58 import org.onap.so.bpmn.BaseTaskTest;
59 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
60 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
61 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
62 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
63 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
64 import org.onap.so.db.catalog.beans.CollectionResource;
65 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
66 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
67 import org.onap.so.db.catalog.beans.HeatEnvironment;
68 import org.onap.so.db.catalog.beans.HeatTemplate;
69 import org.onap.so.db.catalog.beans.InstanceGroup;
70 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
71 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
72 import org.onap.so.db.catalog.beans.Service;
73 import org.onap.so.db.catalog.beans.VfModuleCustomization;
74 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
75 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
76 import org.onap.so.serviceinstancebeans.RequestDetails;
77 import org.onap.so.serviceinstancebeans.RequestParameters;
78 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
79 import org.onap.so.serviceinstancebeans.SubscriberInfo;
81 import com.fasterxml.jackson.databind.ObjectMapper;
83 public class WorkflowActionTest extends BaseTaskTest {
85 protected WorkflowAction workflowAction;
87 private DelegateExecution execution;
90 public ExpectedException thrown = ExpectedException.none();
93 public void before() throws Exception {
94 execution = new DelegateExecutionFake();
95 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
96 servInstance.setServiceInstanceId("TEST");
97 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
98 workflowAction.setBbInputSetupUtils(bbSetupUtils);
99 workflowAction.setBbInputSetup(bbInputSetup);
105 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception{
106 String gAction = "createInstance";
107 String resource = "Network";
108 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
109 execution.setVariable("requestAction", gAction);
110 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
111 execution.setVariable("bpmnRequest", bpmnRequest);
112 execution.setVariable("aLaCarte", true);
113 execution.setVariable("apiVersion", "7");
114 execution.setVariable("requestUri", "v6/networks/123");
115 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
116 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
117 List<OrchestrationFlow> orchFlows = createFlowList("AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
118 northBoundRequest.setOrchestrationFlowList(orchFlows);
120 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
121 workflowAction.selectExecutionList(execution);
122 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
123 assertEqualsBulkFlowName(ebbs,"AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
127 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception{
128 String gAction = "deleteInstance";
129 String resource = "Network";
130 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
131 execution.setVariable("requestAction", gAction);
132 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
133 execution.setVariable("bpmnRequest", bpmnRequest);
134 execution.setVariable("aLaCarte", true);
135 execution.setVariable("apiVersion", "7");
136 execution.setVariable("requestUri", "v6/networks/123");
137 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
138 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
139 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
140 northBoundRequest.setOrchestrationFlowList(orchFlows);
142 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
143 workflowAction.selectExecutionList(execution);
144 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
145 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
149 public void selectExecutionListALaCarteServiceCreateTest() throws Exception{
150 String gAction = "createInstance";
151 String resource = "Service";
152 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
153 execution.setVariable("requestAction", gAction);
154 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
155 execution.setVariable("bpmnRequest", bpmnRequest);
156 execution.setVariable("aLaCarte", true);
157 execution.setVariable("apiVersion", "7");
158 execution.setVariable("requestUri", "v6/serviceInstances/123");
159 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
161 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
162 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","ActivateServiceInstanceBB");
163 northBoundRequest.setOrchestrationFlowList(orchFlows);
165 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
166 workflowAction.selectExecutionList(execution);
167 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
168 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
172 * SERVICE MACRO TESTS
175 public void selectExecutionListServiceMacroAssignTest() throws Exception{
176 String gAction = "assignInstance";
177 String resource = "Service";
178 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
179 execution.setVariable("requestAction", gAction);
180 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
181 execution.setVariable("bpmnRequest", bpmnRequest);
182 execution.setVariable("aLaCarte", false);
183 execution.setVariable("apiVersion", "7");
184 execution.setVariable("requestUri", "v6/serviceInstances/123");
185 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
187 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
188 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
189 northBoundRequest.setOrchestrationFlowList(orchFlows);
191 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
192 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
193 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
194 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
195 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
196 HeatTemplate volumeHeatTemplate = new HeatTemplate();
197 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
198 vfModuleCustomization.setVfModule(vfModule);
200 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
201 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
202 HeatEnvironment heatEnvironment = new HeatEnvironment();
203 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
204 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
205 HeatTemplate moduleHeatTemplate = new HeatTemplate();
206 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
207 vfModuleCustomization2.setVfModule(vfModule2);
209 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
210 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
212 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
213 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
214 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
215 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
216 workflowAction.selectExecutionList(execution);
217 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
218 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
222 public void selectExecutionListServiceMacroActivateTest() throws Exception{
223 String gAction = "activateInstance";
224 String resource = "Service";
225 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
226 execution.setVariable("requestAction", gAction);
227 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
228 execution.setVariable("bpmnRequest", bpmnRequest);
229 execution.setVariable("aLaCarte", false);
230 execution.setVariable("apiVersion", "7");
231 execution.setVariable("requestUri", "v6/serviceInstances/si0");
232 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
234 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
235 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB"
236 ,"ActivateVnfBB","ActivateServiceInstanceBB");
237 northBoundRequest.setOrchestrationFlowList(orchFlows);
239 ServiceInstance serviceInstanceAAI = new ServiceInstance();
240 serviceInstanceAAI.setServiceInstanceId("si0");
241 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
242 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
243 vnf.setVnfId("vnf0");
245 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
246 vfModule.setVfModuleId("vfModule0");
247 vnf.getVfModules().add(vfModule);
248 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
249 vfModule2.setVfModuleId("vfModule1");
250 vnf.getVfModules().add(vfModule2);
252 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
253 volumeGroup.setVolumeGroupId("volumeGroup0");
254 vnf.getVolumeGroups().add(volumeGroup);
256 serviceInstanceMSO.getVnfs().add(vnf);
258 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
259 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
260 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
261 workflowAction.selectExecutionList(execution);
262 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
263 assertEqualsBulkFlowName(ebbs,"CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
264 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
265 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
266 assertEquals("vfModule0", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
267 assertEquals("vfModule1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
268 assertEquals("vfModule0", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
269 assertEquals("vfModule1", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
270 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
271 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
276 public void selectExecutionListServiceMacroDeactivateTest() throws Exception{
277 String gAction = "deactivateInstance";
278 String resource = "Service";
279 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
280 execution.setVariable("requestAction", gAction);
281 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
282 execution.setVariable("bpmnRequest", bpmnRequest);
283 execution.setVariable("aLaCarte", false);
284 execution.setVariable("apiVersion", "7");
285 execution.setVariable("requestUri", "v6/serviceInstances/123");
286 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
288 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
289 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
290 northBoundRequest.setOrchestrationFlowList(orchFlows);
292 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
293 workflowAction.selectExecutionList(execution);
294 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
295 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
299 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception{
300 String gAction = "createInstance";
301 String resource = "Service";
302 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
303 execution.setVariable("requestAction", gAction);
304 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
305 execution.setVariable("bpmnRequest", bpmnRequest);
306 execution.setVariable("aLaCarte", false);
307 execution.setVariable("apiVersion", "7");
308 execution.setVariable("requestUri", "v6/serviceInstances/123");
309 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
311 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
312 northBoundRequest.setIsToplevelflow(true);
313 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
314 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
315 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
316 northBoundRequest.setOrchestrationFlowList(orchFlows);
318 Service service = new Service();
319 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
320 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
321 workflowAction.selectExecutionList(execution);
322 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
323 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
327 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception{
328 String gAction = "createInstance";
329 String resource = "Service";
330 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
331 execution.setVariable("requestAction", gAction);
332 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
333 execution.setVariable("bpmnRequest", bpmnRequest);
334 execution.setVariable("aLaCarte", false);
335 execution.setVariable("apiVersion", "7");
336 execution.setVariable("requestUri", "v6/serviceInstances/123");
337 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
339 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
340 northBoundRequest.setIsToplevelflow(true);
341 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
342 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
343 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
344 northBoundRequest.setOrchestrationFlowList(orchFlows);
346 Service service = new Service();
347 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
348 networkCustomization.setModelCustomizationUUID("1234");
349 service.getNetworkCustomizations().add(networkCustomization);
350 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
351 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
352 workflowAction.selectExecutionList(execution);
353 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
354 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateServiceInstanceBB");
358 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception{
359 String gAction = "createInstance";
360 String resource = "Service";
361 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
362 execution.setVariable("requestAction", gAction);
363 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
364 execution.setVariable("bpmnRequest", bpmnRequest);
365 execution.setVariable("aLaCarte", false);
366 execution.setVariable("apiVersion", "7");
367 execution.setVariable("requestUri", "v6/serviceInstances/123");
368 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
370 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
371 northBoundRequest.setIsToplevelflow(true);
372 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
373 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
374 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
375 northBoundRequest.setOrchestrationFlowList(orchFlows);
377 Service service = new Service();
378 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
379 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
380 networkCust.setModelCustomizationUUID("123");
381 networkCustomizations.add(networkCust);
382 service.setNetworkCustomizations(networkCustomizations);
383 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
384 collectionResourceCustomization.setModelCustomizationUUID("123");
386 CollectionResource collectionResource = new CollectionResource();
387 collectionResource.setToscaNodeType("NetworkCollection");
388 InstanceGroup instanceGroup = new InstanceGroup();
389 instanceGroup.setToscaNodeType("NetworkCollectionResource");
390 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
391 CollectionNetworkResourceCustomization collectionNetworkResourceCust = new CollectionNetworkResourceCustomization();
392 collectionNetworkResourceCust.setModelCustomizationUUID("123");
393 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
394 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust );
395 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
396 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
397 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
398 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
399 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
400 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
401 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
402 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
403 collectionResource.setInstanceGroup(instanceGroup);
404 collectionResourceCustomization.setCollectionResource(collectionResource);;
405 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
406 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
407 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
408 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
409 workflowAction.selectExecutionList(execution);
410 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
411 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB"
412 ,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
413 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
414 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
415 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
416 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
417 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds().getNetworkId()
418 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds().getNetworkId(), true);
419 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
420 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
421 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
422 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
423 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds().getNetworkId()
424 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds().getNetworkId(), true);
425 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
426 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
427 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
428 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
429 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds().getNetworkId()
430 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds().getNetworkId(), true);
434 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception{
435 String gAction = "createInstance";
436 String resource = "Service";
437 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
438 execution.setVariable("requestAction", gAction);
439 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
440 execution.setVariable("bpmnRequest", bpmnRequest);
441 execution.setVariable("aLaCarte", false);
442 execution.setVariable("apiVersion", "7");
443 execution.setVariable("requestUri", "v6/serviceInstances/123");
444 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
446 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
447 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
448 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
449 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
450 northBoundRequest.setOrchestrationFlowList(orchFlows);
452 Service service = new Service();
453 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
455 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
456 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
457 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
458 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
459 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
460 HeatTemplate volumeHeatTemplate = new HeatTemplate();
461 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
462 vfModuleCustomization.setVfModule(vfModule);
464 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
465 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
466 HeatEnvironment heatEnvironment = new HeatEnvironment();
467 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
468 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
469 HeatTemplate moduleHeatTemplate = new HeatTemplate();
470 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
471 vfModuleCustomization2.setVfModule(vfModule2);
473 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
474 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
476 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
477 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
478 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
479 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
480 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
481 workflowAction.selectExecutionList(execution);
482 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
483 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB","CreateVolumeGroupBB"
484 ,"ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
485 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
486 int randomUUIDLength = UUID.randomUUID().toString().length();
487 assertEquals(randomUUIDLength,ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
488 assertEquals(randomUUIDLength,ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
489 assertEquals(randomUUIDLength,ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
490 assertEquals(randomUUIDLength,ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
491 assertEquals(randomUUIDLength,ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
492 assertEquals(randomUUIDLength,ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
493 assertEquals(randomUUIDLength,ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
494 assertEquals(randomUUIDLength,ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
495 assertEquals(randomUUIDLength,ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
496 assertEquals(randomUUIDLength,ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
497 assertEquals(randomUUIDLength,ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
498 assertEquals(randomUUIDLength,ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
499 assertEquals(randomUUIDLength,ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
500 assertEquals(randomUUIDLength,ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
501 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
502 assertEquals(true, execution.getVariable("homing"));
506 public void selectExecutionListServiceMacroDeleteTest() throws Exception{
507 String gAction = "deleteInstance";
508 String resource = "Service";
509 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
510 execution.setVariable("requestAction", gAction);
511 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
512 execution.setVariable("bpmnRequest", bpmnRequest);
513 execution.setVariable("aLaCarte", false);
514 execution.setVariable("apiVersion", "7");
515 execution.setVariable("requestUri", "v6/serviceInstances/123");
516 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
518 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
519 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
520 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
521 northBoundRequest.setOrchestrationFlowList(orchFlows);
523 ServiceInstance serviceInstanceAAI = new ServiceInstance();
524 serviceInstanceAAI.setServiceInstanceId("aaisi123");
525 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
526 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
527 vnf.setVnfId("vnfId123");
529 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
530 vfModule.setVfModuleId("vfModule1");
531 vnf.getVfModules().add(vfModule);
532 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
533 vfModule2.setVfModuleId("vfModule2");
534 vnf.getVfModules().add(vfModule2);
536 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
537 volumeGroup.setVolumeGroupId("vg123");
538 vnf.getVolumeGroups().add(volumeGroup);
540 serviceInstanceMSO.getVnfs().add(vnf);
542 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
543 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
544 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
545 workflowAction.selectExecutionList(execution);
546 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
547 assertEqualsBulkFlowName(ebbs,"DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB"
548 ,"DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
552 public void selectExecutionListServiceMacroUnassignTest() throws Exception{
553 String gAction = "unassignInstance";
554 String resource = "Service";
555 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
556 execution.setVariable("requestAction", gAction);
557 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
558 execution.setVariable("bpmnRequest", bpmnRequest);
559 execution.setVariable("aLaCarte", false);
560 execution.setVariable("apiVersion", "7");
561 execution.setVariable("requestUri", "v6/serviceInstances/123");
562 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
564 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
565 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
566 northBoundRequest.setOrchestrationFlowList(orchFlows);
568 ServiceInstance serviceInstanceAAI = new ServiceInstance();
569 serviceInstanceAAI.setServiceInstanceId("aaisi123");
570 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
571 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
572 vnf.setVnfId("vnfId123");
574 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
575 vfModule.setVfModuleId("vfModule1");
576 vnf.getVfModules().add(vfModule);
577 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
578 vfModule2.setVfModuleId("vfModule2");
579 vnf.getVfModules().add(vfModule2);
581 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
582 volumeGroup.setVolumeGroupId("vg123");
583 vnf.getVolumeGroups().add(volumeGroup);
585 serviceInstanceMSO.getVnfs().add(vnf);
587 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
588 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
589 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
590 workflowAction.selectExecutionList(execution);
591 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
592 assertEqualsBulkFlowName(ebbs,"UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
596 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception{
597 String gAction = "deleteInstance";
598 String resource = "Service";
599 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
600 execution.setVariable("requestAction", gAction);
601 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
602 execution.setVariable("bpmnRequest", bpmnRequest);
603 execution.setVariable("aLaCarte", false);
604 execution.setVariable("apiVersion", "7");
605 execution.setVariable("requestUri", "v6/serviceInstances/123");
606 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
608 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
609 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
610 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
611 northBoundRequest.setOrchestrationFlowList(orchFlows);
613 ServiceInstance serviceInstanceAAI = new ServiceInstance();
614 serviceInstanceAAI.setServiceInstanceId("aaisi123");
615 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
617 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
618 network.setNetworkId("123");
619 serviceInstanceMSO.getNetworks().add(network);
620 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
621 network2.setNetworkId("321");
622 serviceInstanceMSO.getNetworks().add(network2);
624 Collection collection = new Collection();
625 serviceInstanceMSO.setCollection(collection);
627 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
628 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
629 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
630 workflowAction.selectExecutionList(execution);
631 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
632 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeleteNetworkCollectionBB"
633 ,"DeactivateServiceInstanceBB","UnassignServiceInstanceBB");
638 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception{
639 String gAction = "createInstance";
640 String resource = "NetworkCollection";
641 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
642 execution.setVariable("requestAction", gAction);
643 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
644 execution.setVariable("bpmnRequest", bpmnRequest);
645 execution.setVariable("aLaCarte", false);
646 execution.setVariable("apiVersion", "7");
647 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
648 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
650 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
651 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
652 northBoundRequest.setOrchestrationFlowList(orchFlows);
654 Service service = new Service();
655 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
656 CollectionResource collectionResource = new CollectionResource();
657 collectionResource.setToscaNodeType("Data NetworkCollection Data");
658 collectionResourceCustomization.setCollectionResource(collectionResource);
659 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
661 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
662 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
663 workflowAction.selectExecutionList(execution);
664 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
665 assertEqualsBulkFlowName(ebbs,"CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
670 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception{
671 String gAction = "deleteInstance";
672 String resource = "NetworkCollection";
673 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
674 execution.setVariable("requestAction", gAction);
675 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
676 execution.setVariable("bpmnRequest", bpmnRequest);
677 execution.setVariable("aLaCarte", false);
678 execution.setVariable("apiVersion", "7");
679 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
680 execution.setVariable("cloudOwner", "my-custom-cloud-owner");
682 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
683 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB","DeleteNetworkCollectionBB");
684 northBoundRequest.setOrchestrationFlowList(orchFlows);
686 Service service = new Service();
687 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
688 CollectionResource collectionResource = new CollectionResource();
689 collectionResource.setToscaNodeType("Data NetworkCollection Data");
690 collectionResourceCustomization.setCollectionResource(collectionResource);
691 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
693 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
694 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
695 workflowAction.selectExecutionList(execution);
696 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
697 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB"
698 ,"DeleteNetworkCollectionBB");
702 * WorkflowActionBB Tests
706 public void pluralTest() {
707 List<String> items = Arrays.asList(
708 "serviceInstances, Service",
710 "vfModules, VfModule",
712 "invalidNames, invalidNames");
713 items.forEach(item -> {
714 String[] split = item.split(",");
715 String type = split[0].trim();
716 String expected = split[1].trim();
717 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
722 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception{
723 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
724 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
725 BuildingBlock bb = new BuildingBlock();
726 bb.setBpmnFlowName("AssignNetworkBB");
728 ebb.setBuildingBlock(bb);
729 executeFlows.add(ebb);
730 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
731 BuildingBlock bb2 = new BuildingBlock();
732 bb2.setBpmnFlowName("AssignNetworkBB");
734 ebb2.setBuildingBlock(bb2);
735 executeFlows.add(ebb2);
736 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
737 BuildingBlock bb3 = new BuildingBlock();
738 bb3.setBpmnFlowName("CreateNetworkBB");
740 ebb3.setBuildingBlock(bb3);
741 executeFlows.add(ebb3);
742 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
743 BuildingBlock bb4 = new BuildingBlock();
744 bb4.setBpmnFlowName("CreateNetworkBB");
746 ebb4.setBuildingBlock(bb4);
747 executeFlows.add(ebb4);
748 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
749 BuildingBlock bb5 = new BuildingBlock();
750 bb5.setBpmnFlowName("ActivateNetworkBB");
752 ebb5.setBuildingBlock(bb5);
753 executeFlows.add(ebb5);
754 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
755 BuildingBlock bb6 = new BuildingBlock();
756 bb6.setBpmnFlowName("ActivateNetworkBB");
758 ebb6.setBuildingBlock(bb6);
759 executeFlows.add(ebb6);
761 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"createInstance");
762 assertEqualsBulkFlowName(sorted,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB");
766 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception{
767 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
768 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
769 BuildingBlock bb = new BuildingBlock();
770 bb.setBpmnFlowName("DeactivateNetworkBB");
772 ebb.setBuildingBlock(bb);
773 executeFlows.add(ebb);
774 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
775 BuildingBlock bb2 = new BuildingBlock();
776 bb2.setBpmnFlowName("DeactivateNetworkBB");
778 ebb2.setBuildingBlock(bb2);
779 executeFlows.add(ebb2);
780 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
781 BuildingBlock bb3 = new BuildingBlock();
782 bb3.setBpmnFlowName("DeleteNetworkBB");
784 ebb3.setBuildingBlock(bb3);
785 executeFlows.add(ebb3);
786 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
787 BuildingBlock bb4 = new BuildingBlock();
788 bb4.setBpmnFlowName("DeleteNetworkBB");
790 ebb4.setBuildingBlock(bb4);
791 executeFlows.add(ebb4);
792 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
793 BuildingBlock bb5 = new BuildingBlock();
794 bb5.setBpmnFlowName("UnassignNetworkBB");
796 ebb5.setBuildingBlock(bb5);
797 executeFlows.add(ebb5);
798 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
799 BuildingBlock bb6 = new BuildingBlock();
800 bb6.setBpmnFlowName("UnassignNetworkBB");
802 ebb6.setBuildingBlock(bb6);
803 executeFlows.add(ebb6);
805 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"deleteInstance");
806 assertEqualsBulkFlowName(sorted,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB");
809 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
810 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
811 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","VNF-Macro-Replace","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
812 northBoundRequest.setOrchestrationFlowList(orchFlows);
813 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB");
815 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance","Vnf",false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
816 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
817 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance", WorkflowType.VNF, false,"my-custom-cloud-owner");
818 assertEquals(flows.get(0).getFlowName(),"AAICheckVnfInMaintBB");
819 assertEquals(flows.get(1).getFlowName(),"AAISetVnfInMaintBB");
820 assertEquals(flows.get(2).getFlowName(),"DeactivateVfModuleBB");
821 assertEquals(flows.get(3).getFlowName(),"DeleteVfModuleBB");
822 assertEquals(flows.get(4).getFlowName(),"DeactivateVnfBB");
823 assertEquals(flows.get(5).getFlowName(),"CreateVfModuleBB");
824 assertEquals(flows.get(6).getFlowName(),"ActivateVfModuleBB");
825 assertEquals(flows.get(7).getFlowName(),"ActivateVnfBB");
826 assertEquals(flows.get(8).getFlowName(),"SDNOVnfHealthCheckBB");
827 assertEquals(flows.get(9).getFlowName(),"AAIUnsetVnfInMaintBB");
831 public void extractResourceIdAndTypeFromUriTest(){
832 String uri = "/v6/serviceInstances/123";
833 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
834 String uri3 = "/v6/serviceInstances";
835 String uri4 = "/v6/serviceInstances/assign";
836 String uri5 = "'/v6/serviceInstances/123/vnfs";
837 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
838 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
839 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
840 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
841 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
842 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
843 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
844 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
845 assertEquals(expected1.getResourceId(),result.getResourceId());
846 assertEquals(expected1.getResourceType(),result.getResourceType());
847 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
848 assertEquals(expected2.getResourceId(),result.getResourceId());
849 assertEquals(expected2.getResourceType(),result.getResourceType());
850 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
851 assertEquals("Service", result.getResourceType().toString());
852 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
853 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
854 assertEquals("Service", result.getResourceType().toString());
855 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
856 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
857 assertEquals("Vnf", result.getResourceType().toString());
858 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
859 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
860 assertEquals(expected3.getResourceId(),result.getResourceId());
861 assertEquals(expected3.getResourceType(),result.getResourceType());
862 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
863 assertEquals(expected4.getResourceId(),result.getResourceId());
864 assertEquals(expected4.getResourceType(),result.getResourceType());
865 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
866 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
867 assertEquals("VfModule", result.getResourceType().toString());
872 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
873 this.expectedException.expect(IllegalArgumentException.class);
874 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
875 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
879 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
880 this.expectedException.expect(IllegalArgumentException.class);
881 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
882 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
886 public void populateResourceIdsFromApiHandlerTest(){
887 execution.setVariable("serviceInstanceId", "123");
888 execution.setVariable("vnfId", "888");
889 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
890 assertEquals("123",x.getServiceInstanceId());
891 assertEquals("888",x.getVnfId());
892 assertNull(x.getVolumeGroupId());
896 public void validateResourceIdInAAITest() throws Exception{
898 RequestDetails reqDetails = new RequestDetails();
899 SubscriberInfo subInfo = new SubscriberInfo();
900 subInfo.setGlobalSubscriberId("id123");
901 reqDetails.setSubscriberInfo(subInfo);
902 RequestParameters reqParams = new RequestParameters();
903 reqParams.setSubscriptionServiceType("subServiceType123");
904 reqDetails.setRequestParameters(reqParams );
905 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
906 ServiceInstance si = new ServiceInstance();
907 si.setServiceInstanceId("siId123");
908 Optional<ServiceInstance> siOp = Optional.of(si);
909 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
910 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111")).thenReturn(Optional.empty());
911 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails, workflowResourceIds);
912 assertEquals("siId123",id);
913 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111", reqDetails, workflowResourceIds);
914 assertEquals("generatedId123",id2);
917 L3Network network = new L3Network();
918 network.setNetworkId("id123");
919 network.setNetworkName("name123");
920 workflowResourceIds.setServiceInstanceId("siId123");
921 Optional<L3Network> opNetwork = Optional.of(network);
922 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","name123")).thenReturn(opNetwork);
923 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
924 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails, workflowResourceIds);
925 assertEquals("id123",id);
926 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails, workflowResourceIds);
927 assertEquals("generatedId123",id2);
930 GenericVnf vnf = new GenericVnf();
931 vnf.setVnfId("id123");
932 vnf.setVnfName("vnfName123");
933 Optional<GenericVnf> opVnf = Optional.of(vnf);
934 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","name123")).thenReturn(opVnf);
935 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
936 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails, workflowResourceIds);
937 assertEquals("id123",id);
938 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails, workflowResourceIds);
939 assertEquals("generatedId123",id2);
942 VfModules vfModules = new VfModules();
943 VfModule vfModule = new VfModule();
944 vfModule.setVfModuleId("id123");
945 vfModule.setVfModuleName("name123");
946 vfModules.getVfModule().add(vfModule);
947 vnf.setVfModules(vfModules);
948 workflowResourceIds.setVnfId("id123");
949 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
950 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails, workflowResourceIds);
951 assertEquals("id123",id);
953 GenericVnf vnf2 = new GenericVnf();
954 VfModules vfModules2 = new VfModules();
955 VfModule vfModule2 = new VfModule();
956 vfModule2.setVfModuleId("id123");
957 vfModule2.setVfModuleName("name123");
958 vfModules2.getVfModule().add(vfModule2);
959 vnf2.setVfModules(vfModules2);
960 workflowResourceIds.setVnfId("id111");
961 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
962 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails, workflowResourceIds);
963 assertEquals("generatedId123",id2);
966 VolumeGroup volumeGroup = new VolumeGroup();
967 volumeGroup.setVolumeGroupId("id123");
968 volumeGroup.setVolumeGroupName("name123");
969 workflowResourceIds.setVnfId("id123");
970 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
971 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123","name123")).thenReturn(opVolumeGroup);
972 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails, workflowResourceIds);
973 assertEquals("id123",id);
975 workflowResourceIds.setVnfId("id444");
976 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
977 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123","111111")).thenReturn(opVolumeGroup);
978 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444","111111")).thenReturn(Optional.empty());
979 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails, workflowResourceIds);
980 assertEquals("id123",id2);
984 public void handleRuntimeExceptionTest(){
985 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
986 execution.setVariable("testProcessKey", "testProcessKeyValue");
988 workflowAction.handleRuntimeException(execution);
989 } catch (BpmnError wfe) {
990 assertEquals("MSOWorkflowException",wfe.getErrorCode());
996 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException{
997 execution.setVariable("testProcessKey", "testProcessKeyValue");
998 Service service = new Service();
999 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1000 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1001 networkCust.setModelCustomizationUUID("123");
1002 networkCustomizations.add(networkCust);
1003 service.setNetworkCustomizations(networkCustomizations);
1004 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
1005 collectionResourceCustomization.setModelCustomizationUUID("123");
1006 CollectionResource collectionResource = new CollectionResource();
1007 collectionResource.setToscaNodeType("NetworkCollection");
1008 InstanceGroup instanceGroup = new InstanceGroup();
1009 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1010 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
1011 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1012 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1013 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1014 collectionResource.setInstanceGroup(instanceGroup);
1015 collectionResourceCustomization.setCollectionResource(collectionResource);;
1016 service.setModelUUID("abc");
1017 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1018 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1019 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1020 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1021 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1022 ObjectMapper mapper = new ObjectMapper();
1023 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1024 List<Resource> resourceCounter = new ArrayList<>();
1025 thrown.expect(BpmnError.class);
1026 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter);
1030 public void sortVfModulesByBaseFirstTest(){
1031 List<Resource> resources = new ArrayList<>();
1032 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1033 resource1.setBaseVfModule(false);
1034 resources.add(resource1);
1035 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1036 resource2.setBaseVfModule(false);
1037 resources.add(resource2);
1038 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1039 resource3.setBaseVfModule(true);
1040 resources.add(resource3);
1041 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1042 assertEquals("333",result.get(0).getResourceId());
1043 assertEquals("222",result.get(1).getResourceId());
1044 assertEquals("111",result.get(2).getResourceId());
1047 private List<OrchestrationFlow> createFlowList (String... flowNames){
1048 List<OrchestrationFlow> result = new ArrayList<>();
1049 for(String flowName : flowNames){
1050 OrchestrationFlow orchFlow = new OrchestrationFlow();
1051 orchFlow.setFlowName(flowName);
1052 result.add(orchFlow);
1057 private void assertEqualsBulkFlowName (List<ExecuteBuildingBlock> ebbs, String... flowNames){
1058 for(int i = 0; i<ebbs.size(); i++){
1059 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(),flowNames[i]);