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.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNull;
25 import static org.mockito.ArgumentMatchers.any;
26 import static org.mockito.ArgumentMatchers.eq;
27 import static org.mockito.Mockito.doReturn;
28 import static org.mockito.Mockito.doThrow;
29 import static org.mockito.Mockito.when;
30 import java.util.ArrayList;
31 import java.util.HashMap;
32 import java.util.List;
33 import org.camunda.bpm.engine.delegate.BpmnError;
34 import org.junit.Before;
35 import org.junit.Ignore;
36 import org.junit.Test;
37 import org.mockito.ArgumentCaptor;
38 import org.mockito.ArgumentMatchers;
39 import org.mockito.InjectMocks;
40 import org.mockito.Mockito;
41 import org.onap.so.bpmn.BaseTaskTest;
42 import org.onap.so.bpmn.common.BuildingBlockExecution;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
46 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
47 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
48 import org.onap.so.db.catalog.beans.BuildingBlockDetail;
49 import org.onap.so.db.catalog.beans.OrchestrationAction;
50 import org.onap.so.db.catalog.beans.OrchestrationStatus;
51 import org.onap.so.db.catalog.beans.OrchestrationStatusStateTransitionDirective;
52 import org.onap.so.db.catalog.beans.OrchestrationStatusValidationDirective;
53 import org.onap.so.db.catalog.beans.ResourceType;
54 import org.onap.so.db.request.beans.InfraActiveRequests;
55 import org.springframework.beans.factory.annotation.Autowired;
57 public class OrchestrationStatusValidatorTest extends BaseTaskTest {
59 private static final String vfModuleExistExpectedMessage =
60 "The VfModule was found to already exist, thus no new VfModule was created in the cloud via this request";
62 private static final String vfModuleNotExistExpectedMessage =
63 "The VfModule was not found, thus no VfModule was deleted in the cloud via this request";
66 protected OrchestrationStatusValidator orchestrationStatusValidator = new OrchestrationStatusValidator();
69 public void test_validateOrchestrationStatus() throws Exception {
70 String flowToBeCalled = "AssignServiceInstanceBB";
71 setServiceInstance().setOrchestrationStatus(OrchestrationStatus.PRECREATED);
72 execution.setVariable("aLaCarte", true);
73 execution.setVariable("flowToBeCalled", flowToBeCalled);
75 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
76 buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
77 buildingBlockDetail.setId(1);
78 buildingBlockDetail.setResourceType(ResourceType.SERVICE);
79 buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
81 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
83 org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance =
84 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
85 serviceInstance.setServiceInstanceId("serviceInstanceId");
86 serviceInstance.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
87 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID)))
88 .thenReturn(serviceInstance);
90 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
91 new OrchestrationStatusStateTransitionDirective();
92 orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.CONTINUE);
93 orchestrationStatusStateTransitionDirective.setId(1);
94 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
95 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
96 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
98 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
99 .getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED,
100 OrchestrationAction.ASSIGN);
102 orchestrationStatusValidator.validateOrchestrationStatus(execution);
104 assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
105 execution.getVariable("orchestrationStatusValidationResult"));
107 Mockito.verifyZeroInteractions(requestsDbClient);
111 public void test_validateOrchestrationStatusConfiguration() throws Exception {
112 lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
113 String flowToBeCalled = "UnassignFabricConfigurationBB";
114 ServiceInstance si = setServiceInstance();
115 List<Configuration> configurations = new ArrayList<>();
116 Configuration config = new Configuration();
118 si.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
119 config.setConfigurationId("configurationId");
120 config.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
121 configurations.add(config);
122 si.setConfigurations(configurations);
124 execution.setVariable("flowToBeCalled", flowToBeCalled);
125 execution.setVariable("aLaCarte", true);
127 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
128 buildingBlockDetail.setBuildingBlockName("UnassignFabricConfigurationBB");
129 buildingBlockDetail.setId(1);
130 buildingBlockDetail.setResourceType(ResourceType.CONFIGURATION);
131 buildingBlockDetail.setTargetAction(OrchestrationAction.UNASSIGN);
133 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
135 org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration configuration =
136 new org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration();
137 configuration.setConfigurationId("configurationId");
138 configuration.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
139 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.CONFIGURATION_ID)))
140 .thenReturn(configuration);
142 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
143 new OrchestrationStatusStateTransitionDirective();
144 orchestrationStatusStateTransitionDirective
145 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
146 orchestrationStatusStateTransitionDirective.setId(1);
147 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
148 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.CONFIGURATION);
149 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.UNASSIGN);
151 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
152 .getOrchestrationStatusStateTransitionDirective(ResourceType.CONFIGURATION,
153 OrchestrationStatus.PRECREATED, OrchestrationAction.UNASSIGN);
155 orchestrationStatusValidator.validateOrchestrationStatus(execution);
157 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
158 execution.getVariable("orchestrationStatusValidationResult"));
160 Mockito.verifyZeroInteractions(requestsDbClient);
165 public void test_validateOrchestrationStatus_buildingBlockDetailNotFound() throws Exception {
166 expectedException.expect(BpmnError.class);
168 String flowToBeCalled = "AssignServiceInstanceBB";
170 execution.setVariable("flowToBeCalled", flowToBeCalled);
172 doReturn(null).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
174 orchestrationStatusValidator.validateOrchestrationStatus(execution);
179 public void test_validateOrchestrationStatus_orchestrationValidationFail() throws Exception {
180 expectedException.expect(BpmnError.class);
182 String flowToBeCalled = "AssignServiceInstanceBB";
184 execution.setVariable("flowToBeCalled", flowToBeCalled);
186 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
187 buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
188 buildingBlockDetail.setId(1);
189 buildingBlockDetail.setResourceType(ResourceType.SERVICE);
190 buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
192 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
194 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
195 new OrchestrationStatusStateTransitionDirective();
196 orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
197 orchestrationStatusStateTransitionDirective.setId(1);
198 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
199 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
200 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
202 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
203 .getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED,
204 OrchestrationAction.ASSIGN);
206 orchestrationStatusValidator.validateOrchestrationStatus(execution);
208 Mockito.verifyZeroInteractions(requestsDbClient);
213 public void test_validateOrchestrationStatus_orchestrationValidationNotFound() throws Exception {
214 expectedException.expect(BpmnError.class);
216 String flowToBeCalled = "AssignServiceInstanceBB";
218 execution.setVariable("flowToBeCalled", flowToBeCalled);
220 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
221 buildingBlockDetail.setBuildingBlockName("AssignServiceInstanceBB");
222 buildingBlockDetail.setId(1);
223 buildingBlockDetail.setResourceType(ResourceType.SERVICE);
224 buildingBlockDetail.setTargetAction(OrchestrationAction.ASSIGN);
226 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
228 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
229 new OrchestrationStatusStateTransitionDirective();
230 orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.FAIL);
231 orchestrationStatusStateTransitionDirective.setId(1);
232 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
233 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.SERVICE);
234 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ASSIGN);
236 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
237 .getOrchestrationStatusStateTransitionDirective(ResourceType.NETWORK, OrchestrationStatus.PRECREATED,
238 OrchestrationAction.ASSIGN);
240 orchestrationStatusValidator.validateOrchestrationStatus(execution);
242 Mockito.verifyZeroInteractions(requestsDbClient);
246 public void test_validateOrchestrationStatus_unassignNotFound() throws Exception {
247 String flowToBeCalled = "UnassignServiceInstanceBB";
249 execution.setVariable("flowToBeCalled", flowToBeCalled);
250 execution.setVariable("aLaCarte", true);
252 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
253 buildingBlockDetail.setBuildingBlockName("UnassignServiceInstanceBB");
254 buildingBlockDetail.setId(1);
255 buildingBlockDetail.setResourceType(ResourceType.SERVICE);
256 buildingBlockDetail.setTargetAction(OrchestrationAction.UNASSIGN);
258 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
260 lookupKeyMap = new HashMap<ResourceKey, String>();
262 orchestrationStatusValidator.validateOrchestrationStatus(execution);
264 assertNull(execution.getVariable("orchestrationStatusValidationResult"));
268 public void test_validateOrchestrationStatusSecondStageOfMultiStageEnabledVfModule() throws Exception {
269 String flowToBeCalled = "CreateVfModuleBB";
271 execution.setVariable("orchestrationStatusValidationResult",
272 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
273 execution.setVariable("aLaCarte", true);
274 execution.setVariable("flowToBeCalled", flowToBeCalled);
276 GenericVnf genericVnf = buildGenericVnf();
277 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
278 modelInfoGenericVnf.setMultiStageDesign("true");
279 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
280 setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
282 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
283 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
284 vfModule.setVfModuleId("vfModuleId");
285 vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
286 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
288 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
289 buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
290 buildingBlockDetail.setId(1);
291 buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
292 buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
294 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
296 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
297 new OrchestrationStatusStateTransitionDirective();
298 orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.CONTINUE);
299 orchestrationStatusStateTransitionDirective.setId(1);
300 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
301 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
302 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
304 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
305 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
306 OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
308 orchestrationStatusValidator.validateOrchestrationStatus(execution);
310 assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
311 execution.getVariable("orchestrationStatusValidationResult"));
313 Mockito.verifyZeroInteractions(requestsDbClient);
318 public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongPrevStatusVfModule() throws Exception {
319 String flowToBeCalled = "CreateVfModuleBB";
321 execution.setVariable("orchestrationStatusValidationResult", OrchestrationStatusValidationDirective.CONTINUE);
322 execution.setVariable("aLaCarte", true);
323 execution.setVariable("flowToBeCalled", flowToBeCalled);
325 GenericVnf genericVnf = buildGenericVnf();
326 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
327 modelInfoGenericVnf.setMultiStageDesign("true");
328 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
329 setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
331 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
332 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
333 vfModule.setVfModuleId("vfModuleId");
334 vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
335 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
337 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
338 buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
339 buildingBlockDetail.setId(1);
340 buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
341 buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
343 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
345 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
346 new OrchestrationStatusStateTransitionDirective();
347 orchestrationStatusStateTransitionDirective
348 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
349 orchestrationStatusStateTransitionDirective.setId(1);
350 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
351 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
352 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
354 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
355 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
356 OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
358 InfraActiveRequests request = new InfraActiveRequests();
359 request.setRequestId("testVfModuleId1");
360 request.setResourceStatusMessage(vfModuleExistExpectedMessage);
362 Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
364 orchestrationStatusValidator.validateOrchestrationStatus(execution);
366 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
367 execution.getVariable("orchestrationStatusValidationResult"));
369 ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
370 Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
372 assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
376 public void test_validateOrchestrationStatusSecondStageOfMultiStageDisabledVfModule() throws Exception {
377 String flowToBeCalled = "CreateVfModuleBB";
379 execution.setVariable("orchestrationStatusValidationResult",
380 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
381 execution.setVariable("aLaCarte", true);
382 execution.setVariable("flowToBeCalled", flowToBeCalled);
384 GenericVnf genericVnf = buildGenericVnf();
385 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
386 modelInfoGenericVnf.setMultiStageDesign("false");
387 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
388 setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
390 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
391 buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
392 buildingBlockDetail.setId(1);
393 buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
394 buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
396 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
398 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
399 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
400 vfModule.setVfModuleId("vfModuleId");
401 vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
402 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
404 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
405 new OrchestrationStatusStateTransitionDirective();
406 orchestrationStatusStateTransitionDirective
407 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
408 orchestrationStatusStateTransitionDirective.setId(1);
409 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
410 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
411 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
413 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
414 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
415 OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
417 InfraActiveRequests request = new InfraActiveRequests();
418 request.setRequestId("testVfModuleId1");
419 request.setResourceStatusMessage(vfModuleExistExpectedMessage);
421 Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
423 orchestrationStatusValidator.validateOrchestrationStatus(execution);
425 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
426 execution.getVariable("orchestrationStatusValidationResult"));
428 ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
429 Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
431 assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
435 public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongOrchStatusVfModule() throws Exception {
436 String flowToBeCalled = "CreateVfModuleBB";
438 execution.setVariable("orchestrationStatusValidationResult",
439 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
440 execution.setVariable("aLaCarte", true);
441 execution.setVariable("flowToBeCalled", flowToBeCalled);
443 GenericVnf genericVnf = buildGenericVnf();
444 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
445 modelInfoGenericVnf.setMultiStageDesign("true");
446 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
447 setVfModule().setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
449 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
450 buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
451 buildingBlockDetail.setId(1);
452 buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
453 buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
455 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
457 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
458 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
459 vfModule.setVfModuleId("vfModuleId");
460 vfModule.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
461 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
463 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
464 new OrchestrationStatusStateTransitionDirective();
465 orchestrationStatusStateTransitionDirective
466 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
467 orchestrationStatusStateTransitionDirective.setId(1);
468 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
469 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
470 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
472 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
473 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.ASSIGNED,
474 OrchestrationAction.CREATE);
476 InfraActiveRequests request = new InfraActiveRequests();
477 request.setRequestId("testVfModuleId1");
478 request.setResourceStatusMessage(vfModuleExistExpectedMessage);
480 Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
482 orchestrationStatusValidator.validateOrchestrationStatus(execution);
484 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
485 execution.getVariable("orchestrationStatusValidationResult"));
487 ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
488 Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
490 assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
494 public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongTargetActionVfModule() throws Exception {
495 String flowToBeCalled = "CreateVfModuleBB";
497 execution.setVariable("orchestrationStatusValidationResult",
498 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
499 execution.setVariable("aLaCarte", true);
500 execution.setVariable("flowToBeCalled", flowToBeCalled);
502 GenericVnf genericVnf = buildGenericVnf();
503 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
504 modelInfoGenericVnf.setMultiStageDesign("true");
505 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
506 setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
508 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
509 buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
510 buildingBlockDetail.setId(1);
511 buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
512 buildingBlockDetail.setTargetAction(OrchestrationAction.ACTIVATE);
514 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
516 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
517 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
518 vfModule.setVfModuleId("vfModuleId");
519 vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
520 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
522 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
523 new OrchestrationStatusStateTransitionDirective();
524 orchestrationStatusStateTransitionDirective
525 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
526 orchestrationStatusStateTransitionDirective.setId(1);
527 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
528 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
529 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ACTIVATE);
531 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
532 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
533 OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.ACTIVATE);
535 InfraActiveRequests request = new InfraActiveRequests();
536 request.setRequestId("testVfModuleId1");
537 request.setResourceStatusMessage(vfModuleExistExpectedMessage);
539 Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
541 orchestrationStatusValidator.validateOrchestrationStatus(execution);
543 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
544 execution.getVariable("orchestrationStatusValidationResult"));
546 ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
547 Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
549 assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
553 public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongAlacarteValueVfModule() throws Exception {
554 String flowToBeCalled = "CreateVfModuleBB";
556 execution.setVariable("orchestrationStatusValidationResult",
557 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
558 execution.setVariable("aLaCarte", false);
559 execution.setVariable("flowToBeCalled", flowToBeCalled);
561 GenericVnf genericVnf = buildGenericVnf();
562 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
563 modelInfoGenericVnf.setMultiStageDesign("true");
564 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
565 setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
567 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
568 buildingBlockDetail.setBuildingBlockName("CreateVfModuleBB");
569 buildingBlockDetail.setId(1);
570 buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
571 buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
573 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
575 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
576 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
577 vfModule.setVfModuleId("vfModuleId");
578 vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
579 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
581 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
582 new OrchestrationStatusStateTransitionDirective();
583 orchestrationStatusStateTransitionDirective
584 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
585 orchestrationStatusStateTransitionDirective.setId(1);
586 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
587 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
588 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.ACTIVATE);
590 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
591 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
592 OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
594 InfraActiveRequests request = new InfraActiveRequests();
595 request.setRequestId("testVfModuleId1");
596 request.setResourceStatusMessage(vfModuleExistExpectedMessage);
598 Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
600 orchestrationStatusValidator.validateOrchestrationStatus(execution);
602 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
603 execution.getVariable("orchestrationStatusValidationResult"));
605 ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
606 Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
608 assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
612 public void continueValidationActivatedTest() throws Exception {
613 String flowToBeCalled = "DeactivateVnfBB";
614 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
615 buildingBlockDetail.setBuildingBlockName(flowToBeCalled);
616 buildingBlockDetail.setId(1);
617 buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
618 buildingBlockDetail.setTargetAction(OrchestrationAction.DEACTIVATE);
619 when(catalogDbClient.getBuildingBlockDetail(flowToBeCalled)).thenReturn(buildingBlockDetail);
621 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
622 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
623 vfModule.setVfModuleId("vfModuleId");
624 vfModule.setOrchestrationStatus(OrchestrationStatus.ACTIVATED);
625 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
627 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
628 new OrchestrationStatusStateTransitionDirective();
629 orchestrationStatusStateTransitionDirective.setFlowDirective(OrchestrationStatusValidationDirective.CONTINUE);
630 orchestrationStatusStateTransitionDirective.setId(1);
631 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.ACTIVATED);
632 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
633 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.DEACTIVATE);
634 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
635 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.ACTIVATED,
636 OrchestrationAction.DEACTIVATE);
638 execution.setVariable("aLaCarte", true);
639 execution.setVariable("flowToBeCalled", flowToBeCalled);
640 orchestrationStatusValidator.validateOrchestrationStatus(execution);
642 assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
643 execution.getVariable("orchestrationStatusValidationResult"));
645 Mockito.verifyZeroInteractions(requestsDbClient);
649 public void test_validateOrchestrationStatusDeleteVfModuleSilentSuccess() throws Exception {
650 String flowToBeCalled = "DeleteVfModuleBB";
652 execution.setVariable("orchestrationStatusValidationResult",
653 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
654 execution.setVariable("aLaCarte", true);
655 execution.setVariable("flowToBeCalled", flowToBeCalled);
657 GenericVnf genericVnf = buildGenericVnf();
658 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
659 modelInfoGenericVnf.setMultiStageDesign("true");
660 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
661 setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
663 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
664 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
665 vfModule.setVfModuleId("vfModuleId");
666 vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
667 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
669 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
670 buildingBlockDetail.setBuildingBlockName("DeleteVfModuleBB");
671 buildingBlockDetail.setId(1);
672 buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
673 buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
675 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
677 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
678 new OrchestrationStatusStateTransitionDirective();
679 orchestrationStatusStateTransitionDirective
680 .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
681 orchestrationStatusStateTransitionDirective.setId(1);
682 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
683 orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
684 orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
686 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
687 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
688 OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
690 InfraActiveRequests request = new InfraActiveRequests();
691 request.setRequestId("testVfModuleId1");
692 request.setResourceStatusMessage(vfModuleNotExistExpectedMessage);
694 Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
696 orchestrationStatusValidator.validateOrchestrationStatus(execution);
698 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
699 execution.getVariable("orchestrationStatusValidationResult"));
701 ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
702 Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
704 assertEquals(vfModuleNotExistExpectedMessage, argument.getValue().getResourceStatusMessage());