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.Matchers.isA;
31 import static org.mockito.Mockito.doReturn;
32 import static org.mockito.Mockito.when;
34 import java.io.IOException;
35 import java.net.MalformedURLException;
36 import java.nio.file.Files;
37 import java.nio.file.Paths;
38 import java.util.ArrayList;
39 import java.util.Arrays;
40 import java.util.List;
41 import java.util.Optional;
42 import java.util.UUID;
44 import org.camunda.bpm.engine.delegate.BpmnError;
45 import org.camunda.bpm.engine.delegate.DelegateExecution;
46 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
47 import org.junit.Before;
48 import org.junit.Ignore;
49 import org.junit.Rule;
50 import org.junit.Test;
51 import org.junit.rules.ExpectedException;
52 import org.mockito.InjectMocks;
53 import org.mockito.Mock;
54 import org.onap.aai.domain.yang.GenericVnf;
55 import org.onap.aai.domain.yang.L3Network;
56 import org.onap.aai.domain.yang.Relationship;
57 import org.onap.aai.domain.yang.RelationshipList;
58 import org.onap.aai.domain.yang.ServiceInstance;
59 import org.onap.aai.domain.yang.VfModule;
60 import org.onap.aai.domain.yang.VfModules;
61 import org.onap.aai.domain.yang.VolumeGroup;
62 import org.onap.so.bpmn.BaseTaskTest;
63 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
64 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
65 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
66 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
67 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
68 import org.onap.so.client.aai.entities.Relationships;
69 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
70 import org.onap.so.db.catalog.beans.CollectionResource;
71 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
72 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
73 import org.onap.so.db.catalog.beans.HeatEnvironment;
74 import org.onap.so.db.catalog.beans.HeatTemplate;
75 import org.onap.so.db.catalog.beans.InstanceGroup;
76 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
77 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
78 import org.onap.so.db.catalog.beans.Service;
79 import org.onap.so.db.catalog.beans.VfModuleCustomization;
80 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
81 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
82 import org.onap.so.serviceinstancebeans.RequestDetails;
83 import org.onap.so.serviceinstancebeans.RequestParameters;
84 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
85 import org.onap.so.serviceinstancebeans.SubscriberInfo;
86 import org.springframework.core.env.Environment;
88 import com.fasterxml.jackson.databind.ObjectMapper;
90 public class WorkflowActionTest extends BaseTaskTest {
94 protected Environment environment;
96 protected WorkflowAction workflowAction;
97 private DelegateExecution execution;
101 public ExpectedException thrown = ExpectedException.none();
104 public void before() throws Exception {
105 execution = new DelegateExecutionFake();
106 org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
107 servInstance.setServiceInstanceId("TEST");
108 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
109 workflowAction.setBbInputSetupUtils(bbSetupUtils);
110 workflowAction.setBbInputSetup(bbInputSetup);
116 public void selectExecutionListALaCarteNetworkCreateTest() throws Exception{
117 String gAction = "createInstance";
118 String resource = "Network";
119 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
120 execution.setVariable("requestAction", gAction);
121 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
122 execution.setVariable("bpmnRequest", bpmnRequest);
123 execution.setVariable("aLaCarte", true);
124 execution.setVariable("apiVersion", "7");
125 execution.setVariable("requestUri", "v6/networks/123");
127 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
128 List<OrchestrationFlow> orchFlows = createFlowList("AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
129 northBoundRequest.setOrchestrationFlowList(orchFlows);
131 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
132 workflowAction.selectExecutionList(execution);
133 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
134 assertEqualsBulkFlowName(ebbs,"AssignNetwork1802BB","CreateNetworkBB","ActivateNetworkBB");
138 public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception{
139 String gAction = "deleteInstance";
140 String resource = "Network";
141 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
142 execution.setVariable("requestAction", gAction);
143 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
144 execution.setVariable("bpmnRequest", bpmnRequest);
145 execution.setVariable("aLaCarte", true);
146 execution.setVariable("apiVersion", "7");
147 execution.setVariable("requestUri", "v6/networks/123");
149 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
150 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
151 northBoundRequest.setOrchestrationFlowList(orchFlows);
153 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
154 workflowAction.selectExecutionList(execution);
155 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
156 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetwork1802BB");
160 public void selectExecutionListALaCarteServiceCreateTest() throws Exception{
161 String gAction = "createInstance";
162 String resource = "Service";
163 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
164 execution.setVariable("requestAction", gAction);
165 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
166 execution.setVariable("bpmnRequest", bpmnRequest);
167 execution.setVariable("aLaCarte", true);
168 execution.setVariable("apiVersion", "7");
169 execution.setVariable("requestUri", "v6/serviceInstances/123");
172 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
173 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","ActivateServiceInstanceBB");
174 northBoundRequest.setOrchestrationFlowList(orchFlows);
176 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,true,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
177 workflowAction.selectExecutionList(execution);
178 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
179 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
183 * SERVICE MACRO TESTS
186 public void selectExecutionListServiceMacroAssignTest() throws Exception{
187 String gAction = "assignInstance";
188 String resource = "Service";
189 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
190 execution.setVariable("requestAction", gAction);
191 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
192 execution.setVariable("bpmnRequest", bpmnRequest);
193 execution.setVariable("aLaCarte", false);
194 execution.setVariable("apiVersion", "7");
195 execution.setVariable("requestUri", "v6/serviceInstances/123");
198 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
199 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
200 northBoundRequest.setOrchestrationFlowList(orchFlows);
202 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
203 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
204 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
205 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
206 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
207 HeatTemplate volumeHeatTemplate = new HeatTemplate();
208 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
209 vfModuleCustomization.setVfModule(vfModule);
211 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
212 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
213 HeatEnvironment heatEnvironment = new HeatEnvironment();
214 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
215 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
216 HeatTemplate moduleHeatTemplate = new HeatTemplate();
217 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
218 vfModuleCustomization2.setVfModule(vfModule2);
220 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
221 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
223 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
224 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
225 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
226 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
227 workflowAction.selectExecutionList(execution);
228 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
229 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
233 public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception{
234 String gAction = "assignInstance";
235 String resource = "Service";
236 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
237 execution.setVariable("requestAction", gAction);
238 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssignNoCloud.json")));
239 execution.setVariable("bpmnRequest", bpmnRequest);
240 execution.setVariable("aLaCarte", false);
241 execution.setVariable("apiVersion", "7");
242 execution.setVariable("requestUri", "v6/serviceInstances/123");
245 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
246 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB");
247 northBoundRequest.setOrchestrationFlowList(orchFlows);
249 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
250 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
251 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
252 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
253 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
254 HeatTemplate volumeHeatTemplate = new HeatTemplate();
255 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
256 vfModuleCustomization.setVfModule(vfModule);
258 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
259 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
260 HeatEnvironment heatEnvironment = new HeatEnvironment();
261 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
262 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
263 HeatTemplate moduleHeatTemplate = new HeatTemplate();
264 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
265 vfModuleCustomization2.setVfModule(vfModule2);
267 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
268 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
270 when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
271 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"att-aic")).thenReturn(northBoundRequest);
272 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
273 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
274 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
275 workflowAction.selectExecutionList(execution);
276 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
277 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB");
281 public void selectExecutionListServiceMacroActivateTest() throws Exception{
282 String gAction = "activateInstance";
283 String resource = "Service";
284 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
285 execution.setVariable("requestAction", gAction);
286 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
287 execution.setVariable("bpmnRequest", bpmnRequest);
288 execution.setVariable("aLaCarte", false);
289 execution.setVariable("apiVersion", "7");
290 execution.setVariable("requestUri", "v6/serviceInstances/si0");
293 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
294 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB"
295 ,"ActivateVnfBB","ActivateServiceInstanceBB");
296 northBoundRequest.setOrchestrationFlowList(orchFlows);
298 ServiceInstance serviceInstanceAAI = new ServiceInstance();
299 serviceInstanceAAI.setServiceInstanceId("si0");
300 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
301 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
302 vnf.setVnfId("vnf0");
304 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
305 vfModule.setVfModuleId("vfModule0");
306 vnf.getVfModules().add(vfModule);
307 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
308 vfModule2.setVfModuleId("vfModule1");
309 vnf.getVfModules().add(vfModule2);
311 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
312 volumeGroup.setVolumeGroupId("volumeGroup0");
313 vnf.getVolumeGroups().add(volumeGroup);
315 serviceInstanceMSO.getVnfs().add(vnf);
317 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
318 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
319 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
320 workflowAction.selectExecutionList(execution);
321 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
322 assertEqualsBulkFlowName(ebbs,"CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
323 assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
324 assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
325 assertEquals("vfModule0", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
326 assertEquals("vfModule1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
327 assertEquals("vfModule0", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
328 assertEquals("vfModule1", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
329 assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
330 assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
335 public void selectExecutionListServiceMacroDeactivateTest() throws Exception{
336 String gAction = "deactivateInstance";
337 String resource = "Service";
338 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
339 execution.setVariable("requestAction", gAction);
340 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
341 execution.setVariable("bpmnRequest", bpmnRequest);
342 execution.setVariable("aLaCarte", false);
343 execution.setVariable("apiVersion", "7");
344 execution.setVariable("requestUri", "v6/serviceInstances/123");
347 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
348 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
349 northBoundRequest.setOrchestrationFlowList(orchFlows);
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 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(),"DeactivateServiceInstanceBB");
358 public void selectExecutionListServiceMacroEmptyServiceTest() 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");
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 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
379 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
380 workflowAction.selectExecutionList(execution);
381 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
382 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","ActivateServiceInstanceBB");
386 public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception{
387 String gAction = "createInstance";
388 String resource = "Service";
389 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
390 execution.setVariable("requestAction", gAction);
391 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
392 execution.setVariable("bpmnRequest", bpmnRequest);
393 execution.setVariable("aLaCarte", false);
394 execution.setVariable("apiVersion", "7");
395 execution.setVariable("requestUri", "v6/serviceInstances/123");
398 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
399 northBoundRequest.setIsToplevelflow(true);
400 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
401 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
402 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
403 northBoundRequest.setOrchestrationFlowList(orchFlows);
405 Service service = new Service();
406 NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
407 networkCustomization.setModelCustomizationUUID("1234");
408 service.getNetworkCustomizations().add(networkCustomization);
409 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
410 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
411 workflowAction.selectExecutionList(execution);
412 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
413 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateServiceInstanceBB");
417 public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception{
418 String gAction = "createInstance";
419 String resource = "Service";
420 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
421 execution.setVariable("requestAction", gAction);
422 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
423 execution.setVariable("bpmnRequest", bpmnRequest);
424 execution.setVariable("aLaCarte", false);
425 execution.setVariable("apiVersion", "7");
426 execution.setVariable("requestUri", "v6/serviceInstances/123");
429 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
430 northBoundRequest.setIsToplevelflow(true);
431 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
432 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
433 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
434 northBoundRequest.setOrchestrationFlowList(orchFlows);
436 Service service = new Service();
437 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
438 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
439 networkCust.setModelCustomizationUUID("123");
440 networkCustomizations.add(networkCust);
441 service.setNetworkCustomizations(networkCustomizations);
442 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
443 collectionResourceCustomization.setModelCustomizationUUID("123");
445 CollectionResource collectionResource = new CollectionResource();
446 collectionResource.setToscaNodeType("NetworkCollection");
447 InstanceGroup instanceGroup = new InstanceGroup();
448 instanceGroup.setToscaNodeType("NetworkCollectionResource");
449 instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
450 CollectionNetworkResourceCustomization collectionNetworkResourceCust = new CollectionNetworkResourceCustomization();
451 collectionNetworkResourceCust.setModelCustomizationUUID("123");
452 collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
453 instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust );
454 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
455 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
456 collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
457 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
458 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
459 collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
460 collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
461 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
462 collectionResource.setInstanceGroup(instanceGroup);
463 collectionResourceCustomization.setCollectionResource(collectionResource);;
464 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
465 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
466 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
467 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
468 workflowAction.selectExecutionList(execution);
469 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
470 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB"
471 ,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
472 assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
473 assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
474 assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
475 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
476 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds().getNetworkId()
477 && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds().getNetworkId(), true);
478 assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
479 assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
480 assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
481 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
482 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds().getNetworkId()
483 && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds().getNetworkId(), true);
484 assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
485 assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
486 assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
487 assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
488 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds().getNetworkId()
489 && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds().getNetworkId(), true);
493 public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception{
494 String gAction = "createInstance";
495 String resource = "Service";
496 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
497 execution.setVariable("requestAction", gAction);
498 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroAssign.json")));
499 execution.setVariable("bpmnRequest", bpmnRequest);
500 execution.setVariable("aLaCarte", false);
501 execution.setVariable("apiVersion", "7");
502 execution.setVariable("requestUri", "v6/serviceInstances/123");
505 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
506 List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB","CreateNetworkCollectionBB","AssignNetworkBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB"
507 ,"CreateNetworkBB","ActivateNetworkBB","CreateVolumeGroupBB","ActivateVolumeGroupBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB"
508 ,"ActivateVnfBB","ActivateNetworkCollectionBB","ActivateServiceInstanceBB");
509 northBoundRequest.setOrchestrationFlowList(orchFlows);
511 Service service = new Service();
512 service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
514 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
515 vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
516 HeatEnvironment volumeHeatEnv = new HeatEnvironment();
517 vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
518 org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
519 HeatTemplate volumeHeatTemplate = new HeatTemplate();
520 vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
521 vfModuleCustomization.setVfModule(vfModule);
523 VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
524 vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
525 HeatEnvironment heatEnvironment = new HeatEnvironment();
526 vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
527 org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
528 HeatTemplate moduleHeatTemplate = new HeatTemplate();
529 vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
530 vfModuleCustomization2.setVfModule(vfModule2);
532 VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
533 vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
535 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
536 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f")).thenReturn(vfModuleCustomization);
537 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8")).thenReturn(vfModuleCustomization2);
538 when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969")).thenReturn(vfModuleCustomization3);
539 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
540 workflowAction.selectExecutionList(execution);
541 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
542 assertEqualsBulkFlowName(ebbs,"AssignServiceInstanceBB","AssignVnfBB","AssignVolumeGroupBB","AssignVfModuleBB","AssignVfModuleBB","AssignVfModuleBB","CreateVolumeGroupBB"
543 ,"ActivateVolumeGroupBB","CreateVfModuleBB","CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","ActivateServiceInstanceBB");
544 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
545 int randomUUIDLength = UUID.randomUUID().toString().length();
546 assertEquals(randomUUIDLength,ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
547 assertEquals(randomUUIDLength,ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
548 assertEquals(randomUUIDLength,ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
549 assertEquals(randomUUIDLength,ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
550 assertEquals(randomUUIDLength,ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
551 assertEquals(randomUUIDLength,ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
552 assertEquals(randomUUIDLength,ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
553 assertEquals(randomUUIDLength,ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
554 assertEquals(randomUUIDLength,ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
555 assertEquals(randomUUIDLength,ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
556 assertEquals(randomUUIDLength,ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
557 assertEquals(randomUUIDLength,ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
558 assertEquals(randomUUIDLength,ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
559 assertEquals(randomUUIDLength,ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
560 assertEquals(3,ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
561 assertEquals(true, execution.getVariable("homing"));
565 public void selectExecutionListServiceMacroDeleteTest() throws Exception{
566 String gAction = "deleteInstance";
567 String resource = "Service";
568 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
569 execution.setVariable("requestAction", gAction);
570 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
571 execution.setVariable("bpmnRequest", bpmnRequest);
572 execution.setVariable("aLaCarte", false);
573 execution.setVariable("apiVersion", "7");
574 execution.setVariable("requestUri", "v6/serviceInstances/123");
577 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
578 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
579 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
580 northBoundRequest.setOrchestrationFlowList(orchFlows);
582 ServiceInstance serviceInstanceAAI = new ServiceInstance();
583 serviceInstanceAAI.setServiceInstanceId("aaisi123");
584 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
585 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
586 vnf.setVnfId("vnfId123");
588 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
589 vfModule.setVfModuleId("vfModule1");
590 vnf.getVfModules().add(vfModule);
591 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
592 vfModule2.setVfModuleId("vfModule2");
593 vnf.getVfModules().add(vfModule2);
595 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
596 volumeGroup.setVolumeGroupId("vg123");
597 vnf.getVolumeGroups().add(volumeGroup);
599 serviceInstanceMSO.getVnfs().add(vnf);
601 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
602 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
603 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
604 workflowAction.selectExecutionList(execution);
605 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
606 assertEqualsBulkFlowName(ebbs,"DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB"
607 ,"DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
611 public void selectExecutionListServiceMacroUnassignTest() throws Exception{
612 String gAction = "unassignInstance";
613 String resource = "Service";
614 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
615 execution.setVariable("requestAction", gAction);
616 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
617 execution.setVariable("bpmnRequest", bpmnRequest);
618 execution.setVariable("aLaCarte", false);
619 execution.setVariable("apiVersion", "7");
620 execution.setVariable("requestUri", "v6/serviceInstances/123");
623 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
624 List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
625 northBoundRequest.setOrchestrationFlowList(orchFlows);
627 ServiceInstance serviceInstanceAAI = new ServiceInstance();
628 serviceInstanceAAI.setServiceInstanceId("aaisi123");
629 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
630 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
631 vnf.setVnfId("vnfId123");
633 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
634 vfModule.setVfModuleId("vfModule1");
635 vnf.getVfModules().add(vfModule);
636 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
637 vfModule2.setVfModuleId("vfModule2");
638 vnf.getVfModules().add(vfModule2);
640 org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup = new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
641 volumeGroup.setVolumeGroupId("vg123");
642 vnf.getVolumeGroups().add(volumeGroup);
644 serviceInstanceMSO.getVnfs().add(vnf);
646 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
647 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
648 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
649 workflowAction.selectExecutionList(execution);
650 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
651 assertEqualsBulkFlowName(ebbs,"UnassignVfModuleBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignServiceInstanceBB");
655 public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception{
656 String gAction = "deleteInstance";
657 String resource = "Service";
658 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
659 execution.setVariable("requestAction", gAction);
660 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
661 execution.setVariable("bpmnRequest", bpmnRequest);
662 execution.setVariable("aLaCarte", false);
663 execution.setVariable("apiVersion", "7");
664 execution.setVariable("requestUri", "v6/serviceInstances/123");
667 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
668 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVolumeGroupBB","DeleteVolumeGroupBB","DeactivateVnfBB","DeactivateNetworkBB"
669 ,"DeleteNetworkBB","DeleteNetworkCollectionBB","DeactivateServiceInstanceBB","UnassignVfModuleBB","UnassignVolumeGroupBB","UnassignVnfBB","UnassignNetworkBB","UnassignServiceInstanceBB");
670 northBoundRequest.setOrchestrationFlowList(orchFlows);
672 ServiceInstance serviceInstanceAAI = new ServiceInstance();
673 serviceInstanceAAI.setServiceInstanceId("aaisi123");
674 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
676 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
677 network.setNetworkId("123");
678 serviceInstanceMSO.getNetworks().add(network);
679 org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
680 network2.setNetworkId("321");
681 serviceInstanceMSO.getNetworks().add(network2);
683 Collection collection = new Collection();
684 serviceInstanceMSO.setCollection(collection);
686 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
687 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
688 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
689 workflowAction.selectExecutionList(execution);
690 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
691 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeleteNetworkCollectionBB"
692 ,"DeactivateServiceInstanceBB","UnassignServiceInstanceBB");
696 public void selectExecutionListVnfMacroRecreateTest() throws Exception{
697 String gAction = "recreateInstance";
698 String resource = "Vnf";
699 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
700 execution.setVariable("requestAction", gAction);
701 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
702 execution.setVariable("bpmnRequest", bpmnRequest);
703 execution.setVariable("aLaCarte", false);
704 execution.setVariable("apiVersion", "7");
705 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
706 execution.setVariable("serviceInstanceId", "123");
707 execution.setVariable("vnfId", "1234");
709 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
710 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB"
711 ,"ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB","ActivateVnfBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
712 northBoundRequest.setOrchestrationFlowList(orchFlows);
714 ServiceInstance serviceInstanceAAI = new ServiceInstance();
715 serviceInstanceAAI.setServiceInstanceId("123");
716 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
717 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
718 vnf.setVnfId("1234");
720 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
721 vfModule.setVfModuleId("vfModule1");
722 vnf.getVfModules().add(vfModule);
723 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
724 vfModule2.setVfModuleId("vfModule2");
725 vnf.getVfModules().add(vfModule2);
727 serviceInstanceMSO.getVnfs().add(vnf);
729 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
730 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
731 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"cloud-owner")).thenReturn(northBoundRequest);
732 workflowAction.selectExecutionList(execution);
733 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
734 assertEqualsBulkFlowName(ebbs,"AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB"
735 ,"CreateVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
739 public void selectExecutionListVnfMacroReplaceTest() throws Exception{
740 String gAction = "replaceInstance";
741 String resource = "Vnf";
742 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
743 execution.setVariable("requestAction", gAction);
744 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/VnfMacroReplace.json")));
745 execution.setVariable("bpmnRequest", bpmnRequest);
746 execution.setVariable("aLaCarte", false);
747 execution.setVariable("apiVersion", "7");
748 execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
749 execution.setVariable("serviceInstanceId", "123");
750 execution.setVariable("vnfId", "1234");
752 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
753 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","DeactivateFabricConfigurationBB","UnassignFabricConfigurationBB","DeactivateVfModuleBB","DeleteVfModuleBB"
754 ,"DeactivateVnfBB","ChangeModelVfModuleBB","CreateVfModuleBB","ActivateVfModuleBB","AssignFabricConfigurationBB","ActivateFabricConfigurationBB","ChangeModelVnfBB","ActivateVnfBB","ChangeModelServiceInstanceBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
755 northBoundRequest.setOrchestrationFlowList(orchFlows);
757 ServiceInstance serviceInstanceAAI = new ServiceInstance();
758 serviceInstanceAAI.setServiceInstanceId("123");
759 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO = new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
760 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf = new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
761 vnf.setVnfId("1234");
762 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
763 vfModule.setVfModuleId("vfModule1");
764 vnf.getVfModules().add(vfModule);
765 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
766 vfModule2.setVfModuleId("vfModule2");
767 vnf.getVfModules().add(vfModule2);
768 serviceInstanceMSO.getVnfs().add(vnf);
769 VfModule vfModuleAAI = new VfModule();
770 vfModuleAAI.setVfModuleId("vfModule2");
771 RelationshipList relationshipList = new RelationshipList();
772 Relationship relationship = new Relationship();
773 relationshipList.getRelationship().add(relationship);
774 vfModuleAAI.setRelationshipList(relationshipList);
775 Relationships relationships = new Relationships("abc");
776 Configuration config = new Configuration();
777 config.setConfigurationId("configId");
778 Optional<Configuration> configOp = Optional.of(config);
779 Optional<Relationships> relationshipsOp = Optional.of(relationships);
781 doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
782 doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
783 doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
784 doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
785 doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
786 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"cloud-owner")).thenReturn(northBoundRequest);
787 workflowAction.selectExecutionList(execution);
788 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
789 assertEqualsBulkFlowName(ebbs,"AAICheckVnfInMaintBB","AAISetVnfInMaintBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB","DeactivateVfModuleBB","DeleteVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB"
790 ,"ChangeModelVfModuleBB" ,"ChangeModelVfModuleBB" , "CreateVfModuleBB","CreateVfModuleBB", "ActivateVfModuleBB","ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ChangeModelVnfBB", "ActivateVnfBB","ChangeModelServiceInstanceBB","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
795 public void selectExecutionListNetworkCollectionMacroCreate() throws Exception{
796 String gAction = "createInstance";
797 String resource = "NetworkCollection";
798 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
799 execution.setVariable("requestAction", gAction);
800 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
801 execution.setVariable("bpmnRequest", bpmnRequest);
802 execution.setVariable("aLaCarte", false);
803 execution.setVariable("apiVersion", "7");
804 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
807 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
808 List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
809 northBoundRequest.setOrchestrationFlowList(orchFlows);
811 Service service = new Service();
812 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
813 CollectionResource collectionResource = new CollectionResource();
814 collectionResource.setToscaNodeType("Data NetworkCollection Data");
815 collectionResourceCustomization.setCollectionResource(collectionResource);
816 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
818 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
819 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
820 workflowAction.selectExecutionList(execution);
821 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
822 assertEqualsBulkFlowName(ebbs,"CreateNetworkCollectionBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","ActivateNetworkCollectionBB");
827 public void selectExecutionListNetworkCollectionMacroDelete() throws Exception{
828 String gAction = "deleteInstance";
829 String resource = "NetworkCollection";
830 execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
831 execution.setVariable("requestAction", gAction);
832 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/CreateNetworkCollection.json")));
833 execution.setVariable("bpmnRequest", bpmnRequest);
834 execution.setVariable("aLaCarte", false);
835 execution.setVariable("apiVersion", "7");
836 execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
838 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
839 List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB","DeleteNetworkCollectionBB");
840 northBoundRequest.setOrchestrationFlowList(orchFlows);
842 Service service = new Service();
843 CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
844 CollectionResource collectionResource = new CollectionResource();
845 collectionResource.setToscaNodeType("Data NetworkCollection Data");
846 collectionResourceCustomization.setCollectionResource(collectionResource);
847 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
849 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction,resource,false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
850 when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
851 workflowAction.selectExecutionList(execution);
852 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
853 assertEqualsBulkFlowName(ebbs,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkCollectionBB"
854 ,"DeleteNetworkCollectionBB");
858 * WorkflowActionBB Tests
862 public void pluralTest() {
863 List<String> items = Arrays.asList(
864 "serviceInstances, Service",
866 "vfModules, VfModule",
868 "invalidNames, invalidNames");
869 items.forEach(item -> {
870 String[] split = item.split(",");
871 String type = split[0].trim();
872 String expected = split[1].trim();
873 assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
878 public void sortExecutionPathByObjectForVlanTaggingCreateTest() throws Exception{
879 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
880 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
881 BuildingBlock bb = new BuildingBlock();
882 bb.setBpmnFlowName("AssignNetworkBB");
884 ebb.setBuildingBlock(bb);
885 executeFlows.add(ebb);
886 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
887 BuildingBlock bb2 = new BuildingBlock();
888 bb2.setBpmnFlowName("AssignNetworkBB");
890 ebb2.setBuildingBlock(bb2);
891 executeFlows.add(ebb2);
892 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
893 BuildingBlock bb3 = new BuildingBlock();
894 bb3.setBpmnFlowName("CreateNetworkBB");
896 ebb3.setBuildingBlock(bb3);
897 executeFlows.add(ebb3);
898 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
899 BuildingBlock bb4 = new BuildingBlock();
900 bb4.setBpmnFlowName("CreateNetworkBB");
902 ebb4.setBuildingBlock(bb4);
903 executeFlows.add(ebb4);
904 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
905 BuildingBlock bb5 = new BuildingBlock();
906 bb5.setBpmnFlowName("ActivateNetworkBB");
908 ebb5.setBuildingBlock(bb5);
909 executeFlows.add(ebb5);
910 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
911 BuildingBlock bb6 = new BuildingBlock();
912 bb6.setBpmnFlowName("ActivateNetworkBB");
914 ebb6.setBuildingBlock(bb6);
915 executeFlows.add(ebb6);
917 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"createInstance");
918 assertEqualsBulkFlowName(sorted,"AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB","AssignNetworkBB","CreateNetworkBB","ActivateNetworkBB");
922 public void sortExecutionPathByObjectForVlanTaggingDeleteTest() throws Exception{
923 List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
924 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock();
925 BuildingBlock bb = new BuildingBlock();
926 bb.setBpmnFlowName("DeactivateNetworkBB");
928 ebb.setBuildingBlock(bb);
929 executeFlows.add(ebb);
930 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
931 BuildingBlock bb2 = new BuildingBlock();
932 bb2.setBpmnFlowName("DeactivateNetworkBB");
934 ebb2.setBuildingBlock(bb2);
935 executeFlows.add(ebb2);
936 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock();
937 BuildingBlock bb3 = new BuildingBlock();
938 bb3.setBpmnFlowName("DeleteNetworkBB");
940 ebb3.setBuildingBlock(bb3);
941 executeFlows.add(ebb3);
942 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock();
943 BuildingBlock bb4 = new BuildingBlock();
944 bb4.setBpmnFlowName("DeleteNetworkBB");
946 ebb4.setBuildingBlock(bb4);
947 executeFlows.add(ebb4);
948 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock();
949 BuildingBlock bb5 = new BuildingBlock();
950 bb5.setBpmnFlowName("UnassignNetworkBB");
952 ebb5.setBuildingBlock(bb5);
953 executeFlows.add(ebb5);
954 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock();
955 BuildingBlock bb6 = new BuildingBlock();
956 bb6.setBpmnFlowName("UnassignNetworkBB");
958 ebb6.setBuildingBlock(bb6);
959 executeFlows.add(ebb6);
961 List<ExecuteBuildingBlock> sorted = workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows,"deleteInstance");
962 assertEqualsBulkFlowName(sorted,"DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB","DeactivateNetworkBB","DeleteNetworkBB","UnassignNetworkBB");
965 public void queryNorthBoundRequestCatalogDbNestedTest() throws MalformedURLException {
966 NorthBoundRequest northBoundRequest = new NorthBoundRequest();
967 List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB","AAISetVnfInMaintBB","VNF-Macro-Replace","SDNOVnfHealthCheckBB","AAIUnsetVnfInMaintBB");
968 northBoundRequest.setOrchestrationFlowList(orchFlows);
969 List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB","DeleteVfModuleBB","DeactivateVnfBB","CreateVfModuleBB","ActivateVfModuleBB","ActivateVnfBB");
971 when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance","Vnf",false,"my-custom-cloud-owner")).thenReturn(northBoundRequest);
972 when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
973 List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance", WorkflowType.VNF, false,"my-custom-cloud-owner");
974 assertEquals(flows.get(0).getFlowName(),"AAICheckVnfInMaintBB");
975 assertEquals(flows.get(1).getFlowName(),"AAISetVnfInMaintBB");
976 assertEquals(flows.get(2).getFlowName(),"DeactivateVfModuleBB");
977 assertEquals(flows.get(3).getFlowName(),"DeleteVfModuleBB");
978 assertEquals(flows.get(4).getFlowName(),"DeactivateVnfBB");
979 assertEquals(flows.get(5).getFlowName(),"CreateVfModuleBB");
980 assertEquals(flows.get(6).getFlowName(),"ActivateVfModuleBB");
981 assertEquals(flows.get(7).getFlowName(),"ActivateVnfBB");
982 assertEquals(flows.get(8).getFlowName(),"SDNOVnfHealthCheckBB");
983 assertEquals(flows.get(9).getFlowName(),"AAIUnsetVnfInMaintBB");
987 public void extractResourceIdAndTypeFromUriTest(){
988 String uri = "/v6/serviceInstances/123";
989 String uri2 = "/v6/serviceInstances/123/vnfs/1234";
990 String uri3 = "/v6/serviceInstances";
991 String uri4 = "/v6/serviceInstances/assign";
992 String uri5 = "'/v6/serviceInstances/123/vnfs";
993 String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
994 String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
995 String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
996 Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true);
997 Resource expected2 = new Resource(WorkflowType.VNF, "1234", false);
998 Resource expected3 = new Resource(WorkflowType.VNF, "1234", false);
999 Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false);
1000 Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
1001 assertEquals(expected1.getResourceId(),result.getResourceId());
1002 assertEquals(expected1.getResourceType(),result.getResourceType());
1003 result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
1004 assertEquals(expected2.getResourceId(),result.getResourceId());
1005 assertEquals(expected2.getResourceType(),result.getResourceType());
1006 result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
1007 assertEquals("Service", result.getResourceType().toString());
1008 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1009 result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
1010 assertEquals("Service", result.getResourceType().toString());
1011 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1012 result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
1013 assertEquals("Vnf", result.getResourceType().toString());
1014 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1015 result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
1016 assertEquals(expected3.getResourceId(),result.getResourceId());
1017 assertEquals(expected3.getResourceType(),result.getResourceType());
1018 result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
1019 assertEquals(expected4.getResourceId(),result.getResourceId());
1020 assertEquals(expected4.getResourceType(),result.getResourceType());
1021 result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
1022 assertEquals(UUID.randomUUID().toString().length(),result.getResourceId().length());
1023 assertEquals("VfModule", result.getResourceType().toString());
1028 public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
1029 this.expectedException.expect(IllegalArgumentException.class);
1030 this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
1031 workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
1035 public void extractResourceIdAndTypeFromUriInvalidUriTest() {
1036 this.expectedException.expect(IllegalArgumentException.class);
1037 this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
1038 workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
1042 public void populateResourceIdsFromApiHandlerTest(){
1043 execution.setVariable("serviceInstanceId", "123");
1044 execution.setVariable("vnfId", "888");
1045 WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
1046 assertEquals("123",x.getServiceInstanceId());
1047 assertEquals("888",x.getVnfId());
1048 assertNull(x.getVolumeGroupId());
1052 public void validateResourceIdInAAITest() throws Exception{
1054 RequestDetails reqDetails = new RequestDetails();
1055 SubscriberInfo subInfo = new SubscriberInfo();
1056 subInfo.setGlobalSubscriberId("id123");
1057 reqDetails.setSubscriberInfo(subInfo);
1058 RequestParameters reqParams = new RequestParameters();
1059 reqParams.setSubscriptionServiceType("subServiceType123");
1060 reqDetails.setRequestParameters(reqParams );
1061 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
1062 ServiceInstance si = new ServiceInstance();
1063 si.setServiceInstanceId("siId123");
1064 Optional<ServiceInstance> siOp = Optional.of(si);
1065 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123")).thenReturn(siOp);
1066 when(bbSetupUtils.getAAIServiceInstanceByName("id123", "subServiceType123", "111111")).thenReturn(Optional.empty());
1067 String id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails, workflowResourceIds);
1068 assertEquals("siId123",id);
1069 String id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111", reqDetails, workflowResourceIds);
1070 assertEquals("generatedId123",id2);
1073 L3Network network = new L3Network();
1074 network.setNetworkId("id123");
1075 network.setNetworkName("name123");
1076 workflowResourceIds.setServiceInstanceId("siId123");
1077 Optional<L3Network> opNetwork = Optional.of(network);
1078 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","name123")).thenReturn(opNetwork);
1079 when(bbSetupUtils.getRelatedNetworkByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1080 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails, workflowResourceIds);
1081 assertEquals("id123",id);
1082 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails, workflowResourceIds);
1083 assertEquals("generatedId123",id2);
1086 GenericVnf vnf = new GenericVnf();
1087 vnf.setVnfId("id123");
1088 vnf.setVnfName("vnfName123");
1089 Optional<GenericVnf> opVnf = Optional.of(vnf);
1090 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","name123")).thenReturn(opVnf);
1091 when(bbSetupUtils.getRelatedVnfByNameFromServiceInstance("siId123","111111")).thenReturn(Optional.empty());
1092 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "name123", reqDetails, workflowResourceIds);
1093 assertEquals("id123",id);
1094 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "111111", reqDetails, workflowResourceIds);
1095 assertEquals("generatedId123",id2);
1098 VfModules vfModules = new VfModules();
1099 VfModule vfModule = new VfModule();
1100 vfModule.setVfModuleId("id123");
1101 vfModule.setVfModuleName("name123");
1102 vfModules.getVfModule().add(vfModule);
1103 vnf.setVfModules(vfModules);
1104 workflowResourceIds.setVnfId("id123");
1105 when(bbSetupUtils.getAAIGenericVnf("id123")).thenReturn(vnf);
1106 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails, workflowResourceIds);
1107 assertEquals("id123",id);
1109 GenericVnf vnf2 = new GenericVnf();
1110 VfModules vfModules2 = new VfModules();
1111 VfModule vfModule2 = new VfModule();
1112 vfModule2.setVfModuleId("id123");
1113 vfModule2.setVfModuleName("name123");
1114 vfModules2.getVfModule().add(vfModule2);
1115 vnf2.setVfModules(vfModules2);
1116 workflowResourceIds.setVnfId("id111");
1117 when(bbSetupUtils.getAAIGenericVnf("id111")).thenReturn(vnf2);
1118 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails, workflowResourceIds);
1119 assertEquals("generatedId123",id2);
1122 VolumeGroup volumeGroup = new VolumeGroup();
1123 volumeGroup.setVolumeGroupId("id123");
1124 volumeGroup.setVolumeGroupName("name123");
1125 workflowResourceIds.setVnfId("id123");
1126 Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
1127 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id123","name123")).thenReturn(opVolumeGroup);
1128 id = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails, workflowResourceIds);
1129 assertEquals("id123",id);
1131 workflowResourceIds.setVnfId("id444");
1132 when(bbSetupUtils.getAAIGenericVnf("id444")).thenReturn(vnf);
1133 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVfModule("id123", "id123","111111")).thenReturn(opVolumeGroup);
1134 when(bbSetupUtils.getRelatedVolumeGroupByNameFromVnf("id444","111111")).thenReturn(Optional.empty());
1135 id2 = workflowAction.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111", reqDetails, workflowResourceIds);
1136 assertEquals("id123",id2);
1140 public void handleRuntimeExceptionTest(){
1141 execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
1142 execution.setVariable("testProcessKey", "testProcessKeyValue");
1144 workflowAction.handleRuntimeException(execution);
1145 } catch (BpmnError wfe) {
1146 assertEquals("MSOWorkflowException",wfe.getErrorCode());
1152 public void traverseCatalogDbServiceMultipleNetworkTest() throws IOException{
1153 execution.setVariable("testProcessKey", "testProcessKeyValue");
1154 Service service = new Service();
1155 List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
1156 NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
1157 networkCust.setModelCustomizationUUID("123");
1158 networkCustomizations.add(networkCust);
1159 service.setNetworkCustomizations(networkCustomizations);
1160 NetworkCollectionResourceCustomization collectionResourceCustomization = new NetworkCollectionResourceCustomization();
1161 collectionResourceCustomization.setModelCustomizationUUID("123");
1162 CollectionResource collectionResource = new CollectionResource();
1163 collectionResource.setToscaNodeType("NetworkCollection");
1164 InstanceGroup instanceGroup = new InstanceGroup();
1165 List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
1166 CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization = new CollectionResourceInstanceGroupCustomization();
1167 collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
1168 collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
1169 instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
1170 collectionResource.setInstanceGroup(instanceGroup);
1171 collectionResourceCustomization.setCollectionResource(collectionResource);;
1172 service.setModelUUID("abc");
1173 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1174 service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
1175 doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
1176 doReturn(collectionResourceCustomization).when(catalogDbClient).getNetworkCollectionResourceCustomizationByID("123");
1177 String bpmnRequest = new String(Files.readAllBytes(Paths.get("src/test/resources/__files/Macro/ServiceMacroActivateDeleteUnassign.json")));
1178 ObjectMapper mapper = new ObjectMapper();
1179 ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
1180 List<Resource> resourceCounter = new ArrayList<>();
1181 thrown.expect(BpmnError.class);
1182 workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter);
1186 public void sortVfModulesByBaseFirstTest(){
1187 List<Resource> resources = new ArrayList<>();
1188 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1189 resource1.setBaseVfModule(false);
1190 resources.add(resource1);
1191 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1192 resource2.setBaseVfModule(false);
1193 resources.add(resource2);
1194 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1195 resource3.setBaseVfModule(true);
1196 resources.add(resource3);
1197 List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
1198 assertEquals("333",result.get(0).getResourceId());
1199 assertEquals("222",result.get(1).getResourceId());
1200 assertEquals("111",result.get(2).getResourceId());
1204 public void sortVfModulesByBaseLastTest(){
1205 List<Resource> resources = new ArrayList<>();
1206 Resource resource1 = new Resource(WorkflowType.VFMODULE,"111",false);
1207 resource1.setBaseVfModule(true);
1208 resources.add(resource1);
1209 Resource resource2 = new Resource(WorkflowType.VFMODULE,"222",false);
1210 resource2.setBaseVfModule(false);
1211 resources.add(resource2);
1212 Resource resource3 = new Resource(WorkflowType.VFMODULE,"333",false);
1213 resource3.setBaseVfModule(false);
1214 resources.add(resource3);
1215 List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
1216 assertEquals("333",result.get(0).getResourceId());
1217 assertEquals("222",result.get(1).getResourceId());
1218 assertEquals("111",result.get(2).getResourceId());
1221 private List<OrchestrationFlow> createFlowList (String... flowNames){
1222 List<OrchestrationFlow> result = new ArrayList<>();
1223 for(String flowName : flowNames){
1224 OrchestrationFlow orchFlow = new OrchestrationFlow();
1225 orchFlow.setFlowName(flowName);
1226 result.add(orchFlow);
1231 private void assertEqualsBulkFlowName (List<ExecuteBuildingBlock> ebbs, String... flowNames){
1232 for(int i = 0; i<ebbs.size(); i++){
1233 assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(),flowNames[i]);