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 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
116 List<OrchestrationFlow> orchFlows = createFlowList("AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
117 northBoundRequest.setOrchestrationFlowList(orchFlows);
119 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,true)).thenReturn(northBoundRequest);
120 workflowAction.selectExecutionList(execution);
121 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
122 assertEqualsBulkFlowName(ebbs,"AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
126 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception{
127 String gAction = "deleteInstance";
128 String resource = "Network";
129 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
130 execution.setVariable("requestAction", gAction);
131 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
132 execution.setVariable("bpmnRequest", bpmnRequest);
133 execution.setVariable("aLaCarte", true);
134 execution.setVariable("apiVersion", "7");
135 execution.setVariable("requestUri", "v6/networks/123");
136 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
137 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
138 northBoundRequest.setOrchestrationFlowList(orchFlows);
140 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,true)).thenReturn(northBoundRequest);
141 workflowAction.selectExecutionList(execution);
142 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
143 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
147 public void selectExecutionListALaCarteServiceCreateTest() throws Exception{
148 String gAction = "createInstance";
149 String resource = "Service";
150 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
151 execution.setVariable("requestAction", gAction);
152 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
153 execution.setVariable("bpmnRequest", bpmnRequest);
154 execution.setVariable("aLaCarte", true);
155 execution.setVariable("apiVersion", "7");
156 execution.setVariable("requestUri", "v6/serviceInstances/123");
158 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
159 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","ActivateServiceInstanceBB");
160 northBoundRequest.setOrchestrationFlowList(orchFlows);
162 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,true)).thenReturn(northBoundRequest);
163 workflowAction.selectExecutionList(execution);
164 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
165 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
169 * SERVICE MACRO TESTS
172 public void selectExecutionListServiceMacroAssignTest() throws Exception{
173 String gAction = "assignInstance";
174 String resource = "Service";
175 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
176 execution.setVariable("requestAction", gAction);
177 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
178 execution.setVariable("bpmnRequest", bpmnRequest);
179 execution.setVariable("aLaCarte", false);
180 execution.setVariable("apiVersion", "7");
181 execution.setVariable("requestUri", "v6/serviceInstances/123");
183 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
184 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
185 northBoundRequest.setOrchestrationFlowList(orchFlows);
187 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
188 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
189 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
190 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
191 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
192 HeatTemplate volumeHeatTemplate = new HeatTemplate();
193 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
194 vfModuleCustomization.setVfModule(vfModule);
196 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
197 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
198 HeatEnvironment heatEnvironment = new HeatEnvironment();
199 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
200 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
201 HeatTemplate moduleHeatTemplate = new HeatTemplate();
202 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
203 vfModuleCustomization2.setVfModule(vfModule2);
205 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
206 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
208 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
209 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
210 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
211 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
212 workflowAction.selectExecutionList(execution);
213 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
214 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
218 public void selectExecutionListServiceMacroActivateTest() throws Exception{
219 String gAction = "activateInstance";
220 String resource = "Service";
221 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
222 execution.setVariable("requestAction", gAction);
223 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
224 execution.setVariable("bpmnRequest", bpmnRequest);
225 execution.setVariable("aLaCarte", false);
226 execution.setVariable("apiVersion", "7");
227 execution.setVariable("requestUri", "v6/serviceInstances/si0");
229 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
230 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB"
231 ,"ActivateVnfBB","ActivateServiceInstanceBB");
232 northBoundRequest.setOrchestrationFlowList(orchFlows);
234 ServiceInstance serviceInstanceAAI = new ServiceInstance();
235 serviceInstanceAAI.setServiceInstanceId("si0");
236 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
237 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
238 vnf.setVnfId("vnf0");
240 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
241 vfModule.setVfModuleId("vfModule0");
242 vnf.getVfModules().add(vfModule);
243 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
244 vfModule2.setVfModuleId("vfModule1");
245 vnf.getVfModules().add(vfModule2);
247 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
248 volumeGroup.setVolumeGroupId("volumeGroup0");
249 vnf.getVolumeGroups().add(volumeGroup);
251 serviceInstanceMSO.getVnfs().add(vnf);
253 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
254 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
255 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
256 workflowAction.selectExecutionList(execution);
257 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
258 assertEqualsBulkFlowName(ebbs,"CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
259 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
260 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
261 assertEquals("vfModule0", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
262 assertEquals("vfModule1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
263 assertEquals("vfModule0", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
264 assertEquals("vfModule1", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
265 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
266 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
271 public void selectExecutionListServiceMacroDeactivateTest() throws Exception{
272 String gAction = "deactivateInstance";
273 String resource = "Service";
274 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
275 execution.setVariable("requestAction", gAction);
276 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
277 execution.setVariable("bpmnRequest", bpmnRequest);
278 execution.setVariable("aLaCarte", false);
279 execution.setVariable("apiVersion", "7");
280 execution.setVariable("requestUri", "v6/serviceInstances/123");
282 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
283 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
284 northBoundRequest.setOrchestrationFlowList(orchFlows);
286 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
287 workflowAction.selectExecutionList(execution);
288 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
289 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
293 public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception{
294 String gAction = "createInstance";
295 String resource = "Service";
296 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
297 execution.setVariable("requestAction", gAction);
298 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
299 execution.setVariable("bpmnRequest", bpmnRequest);
300 execution.setVariable("aLaCarte", false);
301 execution.setVariable("apiVersion", "7");
302 execution.setVariable("requestUri", "v6/serviceInstances/123");
304 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
305 northBoundRequest.setIsToplevelflow(true);
306 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
307 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
308 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
309 northBoundRequest.setOrchestrationFlowList(orchFlows);
311 Service service = new Service();
312 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
313 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
314 workflowAction.selectExecutionList(execution);
315 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
316 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
320 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception{
321 String gAction = "createInstance";
322 String resource = "Service";
323 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
324 execution.setVariable("requestAction", gAction);
325 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
326 execution.setVariable("bpmnRequest", bpmnRequest);
327 execution.setVariable("aLaCarte", false);
328 execution.setVariable("apiVersion", "7");
329 execution.setVariable("requestUri", "v6/serviceInstances/123");
331 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
332 northBoundRequest.setIsToplevelflow(true);
333 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
334 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
335 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
336 northBoundRequest.setOrchestrationFlowList(orchFlows);
338 Service service = new Service();
339 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
340 networkCustomization.setModelCustomizationUUID("1234");
341 service.getNetworkCustomizations().add(networkCustomization);
342 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
343 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
344 workflowAction.selectExecutionList(execution);
345 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
346 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateServiceInstanceBB");
350 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception{
351 String gAction = "createInstance";
352 String resource = "Service";
353 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
354 execution.setVariable("requestAction", gAction);
355 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
356 execution.setVariable("bpmnRequest", bpmnRequest);
357 execution.setVariable("aLaCarte", false);
358 execution.setVariable("apiVersion", "7");
359 execution.setVariable("requestUri", "v6/serviceInstances/123");
361 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
362 northBoundRequest.setIsToplevelflow(true);
363 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
364 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
365 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
366 northBoundRequest.setOrchestrationFlowList(orchFlows);
368 Service service = new Service();
369 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
370 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
371 networkCust.setModelCustomizationUUID("123");
372 networkCustomizations.add(networkCust);
373 service.setNetworkCustomizations(networkCustomizations);
374 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
375 collectionResourceCustomization.setModelCustomizationUUID("123");
377 CollectionResource collectionResource = new CollectionResource();
378 collectionResource.setToscaNodeType("NetworkCollection");
379 InstanceGroup instanceGroup = new InstanceGroup();
380 instanceGroup.setToscaNodeType("NetworkCollectionResource");
381 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
382 CollectionNetworkResourceCustomization collectionNetworkResourceCust = new CollectionNetworkResourceCustomization();
383 collectionNetworkResourceCust.setModelCustomizationUUID("123");
384 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
385 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust );
386 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
387 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
388 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
389 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
390 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
391 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
392 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
393 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
394 collectionResource.setInstanceGroup(instanceGroup);
395 collectionResourceCustomization.setCollectionResource(collectionResource);;
396 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
397 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
398 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
399 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
400 workflowAction.selectExecutionList(execution);
401 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
402 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB"
403 ,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
404 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
405 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
406 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
407 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
408 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds().getNetworkId()
409 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds().getNetworkId(), true);
410 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
411 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
412 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
413 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
414 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds().getNetworkId()
415 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds().getNetworkId(), true);
416 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
417 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
418 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
419 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
420 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds().getNetworkId()
421 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds().getNetworkId(), true);
425 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception{
426 String gAction = "createInstance";
427 String resource = "Service";
428 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
429 execution.setVariable("requestAction", gAction);
430 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
431 execution.setVariable("bpmnRequest", bpmnRequest);
432 execution.setVariable("aLaCarte", false);
433 execution.setVariable("apiVersion", "7");
434 execution.setVariable("requestUri", "v6/serviceInstances/123");
436 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
437 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
438 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
439 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
440 northBoundRequest.setOrchestrationFlowList(orchFlows);
442 Service service = new Service();
443 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
445 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
446 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
447 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
448 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
449 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
450 HeatTemplate volumeHeatTemplate = new HeatTemplate();
451 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
452 vfModuleCustomization.setVfModule(vfModule);
454 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
455 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
456 HeatEnvironment heatEnvironment = new HeatEnvironment();
457 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
458 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
459 HeatTemplate moduleHeatTemplate = new HeatTemplate();
460 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
461 vfModuleCustomization2.setVfModule(vfModule2);
463 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
464 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
466 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
467 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
468 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
469 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
470 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
471 workflowAction.selectExecutionList(execution);
472 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
473 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB","CreateVolumeGroupBB"
474 ,"ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
475 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
476 int randomUUIDLength = UUID.randomUUID().toString().length();
477 assertEquals(randomUUIDLength,ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
478 assertEquals(randomUUIDLength,ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
479 assertEquals(randomUUIDLength,ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
480 assertEquals(randomUUIDLength,ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
481 assertEquals(randomUUIDLength,ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
482 assertEquals(randomUUIDLength,ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
483 assertEquals(randomUUIDLength,ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
484 assertEquals(randomUUIDLength,ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
485 assertEquals(randomUUIDLength,ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
486 assertEquals(randomUUIDLength,ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
487 assertEquals(randomUUIDLength,ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
488 assertEquals(randomUUIDLength,ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
489 assertEquals(randomUUIDLength,ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
490 assertEquals(randomUUIDLength,ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
491 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
492 assertEquals(true, execution.getVariable("homing"));
496 public void selectExecutionListServiceMacroDeleteTest() throws Exception{
497 String gAction = "deleteInstance";
498 String resource = "Service";
499 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
500 execution.setVariable("requestAction", gAction);
501 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
502 execution.setVariable("bpmnRequest", bpmnRequest);
503 execution.setVariable("aLaCarte", false);
504 execution.setVariable("apiVersion", "7");
505 execution.setVariable("requestUri", "v6/serviceInstances/123");
507 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
508 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
509 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
510 northBoundRequest.setOrchestrationFlowList(orchFlows);
512 ServiceInstance serviceInstanceAAI = new ServiceInstance();
513 serviceInstanceAAI.setServiceInstanceId("aaisi123");
514 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
515 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
516 vnf.setVnfId("vnfId123");
518 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
519 vfModule.setVfModuleId("vfModule1");
520 vnf.getVfModules().add(vfModule);
521 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
522 vfModule2.setVfModuleId("vfModule2");
523 vnf.getVfModules().add(vfModule2);
525 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
526 volumeGroup.setVolumeGroupId("vg123");
527 vnf.getVolumeGroups().add(volumeGroup);
529 serviceInstanceMSO.getVnfs().add(vnf);
531 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
532 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
533 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
534 workflowAction.selectExecutionList(execution);
535 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
536 assertEqualsBulkFlowName(ebbs,"DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB"
537 ,"DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
541 public void selectExecutionListServiceMacroUnassignTest() throws Exception{
542 String gAction = "unassignInstance";
543 String resource = "Service";
544 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
545 execution.setVariable("requestAction", gAction);
546 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
547 execution.setVariable("bpmnRequest", bpmnRequest);
548 execution.setVariable("aLaCarte", false);
549 execution.setVariable("apiVersion", "7");
550 execution.setVariable("requestUri", "v6/serviceInstances/123");
552 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
553 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
554 northBoundRequest.setOrchestrationFlowList(orchFlows);
556 ServiceInstance serviceInstanceAAI = new ServiceInstance();
557 serviceInstanceAAI.setServiceInstanceId("aaisi123");
558 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
559 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
560 vnf.setVnfId("vnfId123");
562 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
563 vfModule.setVfModuleId("vfModule1");
564 vnf.getVfModules().add(vfModule);
565 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
566 vfModule2.setVfModuleId("vfModule2");
567 vnf.getVfModules().add(vfModule2);
569 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
570 volumeGroup.setVolumeGroupId("vg123");
571 vnf.getVolumeGroups().add(volumeGroup);
573 serviceInstanceMSO.getVnfs().add(vnf);
575 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
576 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
577 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
578 workflowAction.selectExecutionList(execution);
579 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
580 assertEqualsBulkFlowName(ebbs,"UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
584 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception{
585 String gAction = "deleteInstance";
586 String resource = "Service";
587 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
588 execution.setVariable("requestAction", gAction);
589 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
590 execution.setVariable("bpmnRequest", bpmnRequest);
591 execution.setVariable("aLaCarte", false);
592 execution.setVariable("apiVersion", "7");
593 execution.setVariable("requestUri", "v6/serviceInstances/123");
595 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
596 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
597 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
598 northBoundRequest.setOrchestrationFlowList(orchFlows);
600 ServiceInstance serviceInstanceAAI = new ServiceInstance();
601 serviceInstanceAAI.setServiceInstanceId("aaisi123");
602 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
604 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
605 network.setNetworkId("123");
606 serviceInstanceMSO.getNetworks().add(network);
607 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
608 network2.setNetworkId("321");
609 serviceInstanceMSO.getNetworks().add(network2);
611 Collection collection = new Collection();
612 serviceInstanceMSO.setCollection(collection);
614 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
615 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
616 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
617 workflowAction.selectExecutionList(execution);
618 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
619 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeleteNetworkCollectionBB"
620 ,"DeactivateServiceInstanceBB","UnassignServiceInstanceBB");
625 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception{
626 String gAction = "createInstance";
627 String resource = "NetworkCollection";
628 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
629 execution.setVariable("requestAction", gAction);
630 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
631 execution.setVariable("bpmnRequest", bpmnRequest);
632 execution.setVariable("aLaCarte", false);
633 execution.setVariable("apiVersion", "7");
634 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
636 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
637 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
638 northBoundRequest.setOrchestrationFlowList(orchFlows);
640 Service service = new Service();
641 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
642 CollectionResource collectionResource = new CollectionResource();
643 collectionResource.setToscaNodeType("Data NetworkCollection Data");
644 collectionResourceCustomization.setCollectionResource(collectionResource);
645 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
647 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
648 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
649 workflowAction.selectExecutionList(execution);
650 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
651 assertEqualsBulkFlowName(ebbs,"CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
656 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception{
657 String gAction = "deleteInstance";
658 String resource = "NetworkCollection";
659 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
660 execution.setVariable("requestAction", gAction);
661 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
662 execution.setVariable("bpmnRequest", bpmnRequest);
663 execution.setVariable("aLaCarte", false);
664 execution.setVariable("apiVersion", "7");
665 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
667 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
668 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB","DeleteNetworkCollectionBB");
669 northBoundRequest.setOrchestrationFlowList(orchFlows);
671 Service service = new Service();
672 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
673 CollectionResource collectionResource = new CollectionResource();
674 collectionResource.setToscaNodeType("Data NetworkCollection Data");
675 collectionResourceCustomization.setCollectionResource(collectionResource);
676 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
678 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(gAction,resource,false)).thenReturn(northBoundRequest);
679 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
680 workflowAction.selectExecutionList(execution);
681 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
682 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB"
683 ,"DeleteNetworkCollectionBB");
687 * WorkflowActionBB Tests
691 public void pluralTest() {
692 List<String> items = Arrays.asList(
693 "serviceInstances, Service",
695 "vfModules, VfModule",
697 "invalidNames, invalidNames");
698 items.forEach(item -> {
699 String[] split = item.split(",");
700 String type = split[0].trim();
701 String expected = split[1].trim();
702 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
707 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception{
708 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
709 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
710 BuildingBlock bb = new BuildingBlock();
711 bb.setBpmnFlowName("AssignNetworkBB");
713 ebb.setBuildingBlock(bb);
714 executeFlows.add(ebb);
715 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
716 BuildingBlock bb2 = new BuildingBlock();
717 bb2.setBpmnFlowName("AssignNetworkBB");
719 ebb2.setBuildingBlock(bb2);
720 executeFlows.add(ebb2);
721 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
722 BuildingBlock bb3 = new BuildingBlock();
723 bb3.setBpmnFlowName("CreateNetworkBB");
725 ebb3.setBuildingBlock(bb3);
726 executeFlows.add(ebb3);
727 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
728 BuildingBlock bb4 = new BuildingBlock();
729 bb4.setBpmnFlowName("CreateNetworkBB");
731 ebb4.setBuildingBlock(bb4);
732 executeFlows.add(ebb4);
733 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
734 BuildingBlock bb5 = new BuildingBlock();
735 bb5.setBpmnFlowName("ActivateNetworkBB");
737 ebb5.setBuildingBlock(bb5);
738 executeFlows.add(ebb5);
739 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
740 BuildingBlock bb6 = new BuildingBlock();
741 bb6.setBpmnFlowName("ActivateNetworkBB");
743 ebb6.setBuildingBlock(bb6);
744 executeFlows.add(ebb6);
746 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"createInstance");
747 assertEqualsBulkFlowName(sorted,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB");
751 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception{
752 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
753 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
754 BuildingBlock bb = new BuildingBlock();
755 bb.setBpmnFlowName("DeactivateNetworkBB");
757 ebb.setBuildingBlock(bb);
758 executeFlows.add(ebb);
759 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
760 BuildingBlock bb2 = new BuildingBlock();
761 bb2.setBpmnFlowName("DeactivateNetworkBB");
763 ebb2.setBuildingBlock(bb2);
764 executeFlows.add(ebb2);
765 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
766 BuildingBlock bb3 = new BuildingBlock();
767 bb3.setBpmnFlowName("DeleteNetworkBB");
769 ebb3.setBuildingBlock(bb3);
770 executeFlows.add(ebb3);
771 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
772 BuildingBlock bb4 = new BuildingBlock();
773 bb4.setBpmnFlowName("DeleteNetworkBB");
775 ebb4.setBuildingBlock(bb4);
776 executeFlows.add(ebb4);
777 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
778 BuildingBlock bb5 = new BuildingBlock();
779 bb5.setBpmnFlowName("UnassignNetworkBB");
781 ebb5.setBuildingBlock(bb5);
782 executeFlows.add(ebb5);
783 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
784 BuildingBlock bb6 = new BuildingBlock();
785 bb6.setBpmnFlowName("UnassignNetworkBB");
787 ebb6.setBuildingBlock(bb6);
788 executeFlows.add(ebb6);
790 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"deleteInstance");
791 assertEqualsBulkFlowName(sorted,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB");
794 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
795 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
796 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","VNF-Macro-Replace","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
797 northBoundRequest.setOrchestrationFlowList(orchFlows);
798 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB");
800 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope("replaceInstance","Vnf",false)).thenReturn(northBoundRequest);
801 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
802 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance", WorkflowType.VNF, false);
803 assertEquals(flows.get(0).getFlowName(),"AAICheckVnfInMaintBB");
804 assertEquals(flows.get(1).getFlowName(),"AAISetVnfInMaintBB");
805 assertEquals(flows.get(2).getFlowName(),"DeactivateVfModuleBB");
806 assertEquals(flows.get(3).getFlowName(),"DeleteVfModuleBB");
807 assertEquals(flows.get(4).getFlowName(),"DeactivateVnfBB");
808 assertEquals(flows.get(5).getFlowName(),"CreateVfModuleBB");
809 assertEquals(flows.get(6).getFlowName(),"ActivateVfModuleBB");
810 assertEquals(flows.get(7).getFlowName(),"ActivateVnfBB");
811 assertEquals(flows.get(8).getFlowName(),"SDNOVnfHealthCheckBB");
812 assertEquals(flows.get(9).getFlowName(),"AAIUnsetVnfInMaintBB");
816 public void extractResourceIdAndTypeFromUriTest(){
817 String uri = "/v6/serviceInstances/123";
818 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
819 String uri3 = "/v6/serviceInstances";
820 String uri4 = "/v6/serviceInstances/assign";
821 String uri5 = "'/v6/serviceInstances/123/vnfs";
822 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
823 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
825 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
826 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
827 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
828 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
829 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
830 assertEquals(expected1.getResourceId(),result.getResourceId());
831 assertEquals(expected1.getResourceType(),result.getResourceType());
832 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
833 assertEquals(expected2.getResourceId(),result.getResourceId());
834 assertEquals(expected2.getResourceType(),result.getResourceType());
835 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
836 assertEquals("Service", result.getResourceType().toString());
837 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
838 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
839 assertEquals("Service", result.getResourceType().toString());
840 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
841 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
842 assertEquals("Vnf", result.getResourceType().toString());
843 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
844 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
845 assertEquals(expected3.getResourceId(),result.getResourceId());
846 assertEquals(expected3.getResourceType(),result.getResourceType());
847 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
848 assertEquals(expected4.getResourceId(),result.getResourceId());
849 assertEquals(expected4.getResourceType(),result.getResourceType());
853 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
854 this.expectedException.expect(IllegalArgumentException.class);
855 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
856 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
860 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
861 this.expectedException.expect(IllegalArgumentException.class);
862 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
863 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
867 public void populateResourceIdsFromApiHandlerTest(){
868 execution.setVariable("serviceInstanceId", "123");
869 execution.setVariable("vnfId", "888");
870 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
871 assertEquals("123",x.getServiceInstanceId());
872 assertEquals("888",x.getVnfId());
873 assertNull(x.getVolumeGroupId());
877 public void validateResourceIdInAAITest() throws Exception{
879 RequestDetails reqDetails = new RequestDetails();
880 SubscriberInfo subInfo = new SubscriberInfo();
881 subInfo.setGlobalSubscriberId("id123");
882 reqDetails.setSubscriberInfo(subInfo);
883 RequestParameters reqParams = new RequestParameters();
884 reqParams.setSubscriptionServiceType("subServiceType123");
885 reqDetails.setRequestParameters(reqParams );
886 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
887 ServiceInstance si = new ServiceInstance();
888 si.setServiceInstanceId("siId123");
889 Optional<ServiceInstance> siOp = Optional.of(si);
890 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
891 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111")).thenReturn(Optional.empty());
892 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails, workflowResourceIds);
893 assertEquals("siId123",id);
894 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111", reqDetails, workflowResourceIds);
895 assertEquals("generatedId123",id2);
898 L3Network network = new L3Network();
899 network.setNetworkId("id123");
900 network.setNetworkName("name123");
901 workflowResourceIds.setServiceInstanceId("siId123");
902 Optional<L3Network> opNetwork = Optional.of(network);
903 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","name123")).thenReturn(opNetwork);
904 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
905 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails, workflowResourceIds);
906 assertEquals("id123",id);
907 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails, workflowResourceIds);
908 assertEquals("generatedId123",id2);
911 GenericVnf vnf = new GenericVnf();
912 vnf.setVnfId("id123");
913 vnf.setVnfName("vnfName123");
914 Optional<GenericVnf> opVnf = Optional.of(vnf);
915 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","name123")).thenReturn(opVnf);
916 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
917 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails, workflowResourceIds);
918 assertEquals("id123",id);
919 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails, workflowResourceIds);
920 assertEquals("generatedId123",id2);
923 VfModules vfModules = new VfModules();
924 VfModule vfModule = new VfModule();
925 vfModule.setVfModuleId("id123");
926 vfModule.setVfModuleName("name123");
927 vfModules.getVfModule().add(vfModule);
928 vnf.setVfModules(vfModules);
929 workflowResourceIds.setVnfId("id123");
930 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
931 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails, workflowResourceIds);
932 assertEquals("id123",id);
934 GenericVnf vnf2 = new GenericVnf();
935 VfModules vfModules2 = new VfModules();
936 VfModule vfModule2 = new VfModule();
937 vfModule2.setVfModuleId("id123");
938 vfModule2.setVfModuleName("name123");
939 vfModules2.getVfModule().add(vfModule2);
940 vnf2.setVfModules(vfModules2);
941 workflowResourceIds.setVnfId("id111");
942 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
943 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails, workflowResourceIds);
944 assertEquals("generatedId123",id2);
947 VolumeGroup volumeGroup = new VolumeGroup();
948 volumeGroup.setVolumeGroupId("id123");
949 volumeGroup.setVolumeGroupName("name123");
950 workflowResourceIds.setVnfId("id123");
951 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
952 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123","name123")).thenReturn(opVolumeGroup);
953 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails, workflowResourceIds);
954 assertEquals("id123",id);
956 workflowResourceIds.setVnfId("id444");
957 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
958 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123","111111")).thenReturn(opVolumeGroup);
959 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444","111111")).thenReturn(Optional.empty());
960 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails, workflowResourceIds);
961 assertEquals("id123",id2);
965 public void handleRuntimeExceptionTest(){
966 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
967 execution.setVariable("testProcessKey", "testProcessKeyValue");
969 workflowAction.handleRuntimeException(execution);
970 } catch (BpmnError wfe) {
971 assertEquals("MSOWorkflowException",wfe.getErrorCode());
977 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException{
978 execution.setVariable("testProcessKey", "testProcessKeyValue");
979 Service service = new Service();
980 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
981 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
982 networkCust.setModelCustomizationUUID("123");
983 networkCustomizations.add(networkCust);
984 service.setNetworkCustomizations(networkCustomizations);
985 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
986 collectionResourceCustomization.setModelCustomizationUUID("123");
987 CollectionResource collectionResource = new CollectionResource();
988 collectionResource.setToscaNodeType("NetworkCollection");
989 InstanceGroup instanceGroup = new InstanceGroup();
990 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
991 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
992 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
993 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
994 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
995 collectionResource.setInstanceGroup(instanceGroup);
996 collectionResourceCustomization.setCollectionResource(collectionResource);;
997 service.setModelUUID("abc");
998 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
999 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1000 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1001 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1002 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1003 ObjectMapper mapper = new ObjectMapper();
1004 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1005 List<Resource> resourceCounter = new ArrayList<>();
1006 thrown.expect(BpmnError.class);
1007 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter);
1011 public void sortVfModulesByBaseFirstTest(){
1012 List<Resource> resources = new ArrayList<>();
1013 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1014 resource1.setBaseVfModule(false);
1015 resources.add(resource1);
1016 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1017 resource2.setBaseVfModule(false);
1018 resources.add(resource2);
1019 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1020 resource3.setBaseVfModule(true);
1021 resources.add(resource3);
1022 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1023 assertEquals("333",result.get(0).getResourceId());
1024 assertEquals("222",result.get(1).getResourceId());
1025 assertEquals("111",result.get(2).getResourceId());
1028 private List<OrchestrationFlow> createFlowList (String... flowNames){
1029 List<OrchestrationFlow> result = new ArrayList<>();
1030 for(String flowName : flowNames){
1031 OrchestrationFlow orchFlow = new OrchestrationFlow();
1032 orchFlow.setFlowName(flowName);
1033 result.add(orchFlow);
1038 private void assertEqualsBulkFlowName (List<ExecuteBuildingBlock> ebbs, String... flowNames){
1039 for(int i = 0; i<ebbs.size(); i++){
1040 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(),flowNames[i]);