2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Copyright (C) 2020 Nokia Intellectual Property. All rights reserved.
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.bpmn.infrastructure.workflow.tasks;
25 import org.junit.Test;
26 import org.mockito.ArgumentCaptor;
27 import org.mockito.ArgumentMatchers;
28 import org.mockito.InjectMocks;
29 import org.mockito.Mock;
30 import org.mockito.Mockito;
31 import org.onap.so.bpmn.BaseTaskTest;
32 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
33 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
34 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
35 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
36 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
37 import org.onap.so.client.exception.ExceptionBuilder;
38 import org.onap.so.client.exception.OrchestrationStatusValidationException;
39 import org.onap.so.db.catalog.beans.BuildingBlockDetail;
40 import org.onap.so.db.catalog.beans.OrchestrationAction;
41 import org.onap.so.db.catalog.beans.OrchestrationStatus;
42 import org.onap.so.db.catalog.beans.OrchestrationStatusStateTransitionDirective;
43 import org.onap.so.db.catalog.beans.OrchestrationStatusValidationDirective;
44 import org.onap.so.db.catalog.beans.ResourceType;
45 import org.onap.so.db.request.beans.InfraActiveRequests;
46 import java.util.ArrayList;
47 import java.util.HashMap;
48 import java.util.List;
49 import static org.junit.Assert.assertEquals;
50 import static org.junit.Assert.assertNull;
51 import static org.mockito.ArgumentMatchers.any;
52 import static org.mockito.ArgumentMatchers.eq;
53 import static org.mockito.Mockito.doReturn;
54 import static org.mockito.Mockito.verify;
55 import static org.mockito.Mockito.when;
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 private ExceptionBuilder exceptionBuilder;
69 protected OrchestrationStatusValidator orchestrationStatusValidator = new OrchestrationStatusValidator();
72 public void test_validateOrchestrationStatus() throws Exception {
73 String flowToBeCalled = "AssignServiceInstanceBB";
74 setServiceInstance().setOrchestrationStatus(OrchestrationStatus.PRECREATED);
75 execution.setVariable("aLaCarte", true);
76 execution.setVariable("flowToBeCalled", flowToBeCalled);
78 BuildingBlockDetail buildingBlockDetail =
79 getBuildingBlockDetail("AssignServiceInstanceBB", ResourceType.SERVICE, 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 getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.CONTINUE,
92 OrchestrationStatus.PRECREATED, ResourceType.SERVICE, OrchestrationAction.ASSIGN);
94 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
95 .getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED,
96 OrchestrationAction.ASSIGN);
98 orchestrationStatusValidator.validateOrchestrationStatus(execution);
100 assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
101 execution.getVariable("orchestrationStatusValidationResult"));
103 Mockito.verifyZeroInteractions(requestsDbClient);
106 private OrchestrationStatusStateTransitionDirective getOrchestrationStatusStateTransitionDirective(
107 OrchestrationStatusValidationDirective aContinue, OrchestrationStatus precreated, ResourceType service,
108 OrchestrationAction assign) {
109 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
110 new OrchestrationStatusStateTransitionDirective();
111 orchestrationStatusStateTransitionDirective.setFlowDirective(aContinue);
112 orchestrationStatusStateTransitionDirective.setId(1);
113 orchestrationStatusStateTransitionDirective.setOrchestrationStatus(precreated);
114 orchestrationStatusStateTransitionDirective.setResourceType(service);
115 orchestrationStatusStateTransitionDirective.setTargetAction(assign);
116 return orchestrationStatusStateTransitionDirective;
120 public void test_validateOrchestrationStatusConfiguration() throws Exception {
121 lookupKeyMap.put(ResourceKey.CONFIGURATION_ID, "configurationId");
122 String flowToBeCalled = "UnassignFabricConfigurationBB";
123 ServiceInstance si = setServiceInstance();
124 List<Configuration> configurations = new ArrayList<>();
125 Configuration config = new Configuration();
127 si.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
128 config.setConfigurationId("configurationId");
129 config.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
130 configurations.add(config);
131 si.setConfigurations(configurations);
133 execution.setVariable("flowToBeCalled", flowToBeCalled);
134 execution.setVariable("aLaCarte", true);
136 BuildingBlockDetail buildingBlockDetail = getBuildingBlockDetail("UnassignFabricConfigurationBB",
137 ResourceType.CONFIGURATION, OrchestrationAction.UNASSIGN);
139 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
141 org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration configuration =
142 new org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration();
143 configuration.setConfigurationId("configurationId");
144 configuration.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
145 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.CONFIGURATION_ID)))
146 .thenReturn(configuration);
148 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
149 getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
150 OrchestrationStatus.PRECREATED, ResourceType.CONFIGURATION, OrchestrationAction.UNASSIGN);
152 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
153 .getOrchestrationStatusStateTransitionDirective(ResourceType.CONFIGURATION,
154 OrchestrationStatus.PRECREATED, OrchestrationAction.UNASSIGN);
156 orchestrationStatusValidator.validateOrchestrationStatus(execution);
158 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
159 execution.getVariable("orchestrationStatusValidationResult"));
161 Mockito.verifyZeroInteractions(requestsDbClient);
165 public void test_validateOrchestrationStatus_buildingBlockDetailNotFound() {
166 String flowToBeCalled = "AssignServiceInstanceBB";
167 execution.setVariable("flowToBeCalled", flowToBeCalled);
168 doReturn(null).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
170 orchestrationStatusValidator.validateOrchestrationStatus(execution);
172 verify(exceptionBuilder).buildAndThrowWorkflowException(eq(execution), eq(7000),
173 any(OrchestrationStatusValidationException.class));
177 public void test_validateOrchestrationStatus_orchestrationValidationFail() {
178 String flowToBeCalled = "AssignServiceInstanceBB";
179 execution.setVariable("flowToBeCalled", flowToBeCalled);
180 BuildingBlockDetail buildingBlockDetail =
181 getBuildingBlockDetail("AssignServiceInstanceBB", ResourceType.SERVICE, OrchestrationAction.ASSIGN);
183 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
185 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
186 getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.FAIL,
187 OrchestrationStatus.PRECREATED, ResourceType.SERVICE, OrchestrationAction.ASSIGN);
189 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
190 .getOrchestrationStatusStateTransitionDirective(ResourceType.SERVICE, OrchestrationStatus.PRECREATED,
191 OrchestrationAction.ASSIGN);
193 orchestrationStatusValidator.validateOrchestrationStatus(execution);
195 Mockito.verifyZeroInteractions(requestsDbClient);
196 verify(exceptionBuilder).buildAndThrowWorkflowException(eq(execution), eq(7000),
197 any(NullPointerException.class));
201 public void test_validateOrchestrationStatus_orchestrationValidationNotFound() {
202 String flowToBeCalled = "AssignServiceInstanceBB";
203 execution.setVariable("flowToBeCalled", flowToBeCalled);
205 BuildingBlockDetail buildingBlockDetail =
206 getBuildingBlockDetail("AssignServiceInstanceBB", ResourceType.SERVICE, OrchestrationAction.ASSIGN);
208 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
210 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
211 getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.FAIL,
212 OrchestrationStatus.PRECREATED, ResourceType.SERVICE, OrchestrationAction.ASSIGN);
214 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
215 .getOrchestrationStatusStateTransitionDirective(ResourceType.NETWORK, OrchestrationStatus.PRECREATED,
216 OrchestrationAction.ASSIGN);
218 orchestrationStatusValidator.validateOrchestrationStatus(execution);
220 Mockito.verifyZeroInteractions(requestsDbClient);
221 verify(exceptionBuilder).buildAndThrowWorkflowException(eq(execution), eq(7000),
222 any(NullPointerException.class));
225 private BuildingBlockDetail getBuildingBlockDetail(String assignServiceInstanceBB, ResourceType service,
226 OrchestrationAction assign) {
227 BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
228 buildingBlockDetail.setBuildingBlockName(assignServiceInstanceBB);
229 buildingBlockDetail.setId(1);
230 buildingBlockDetail.setResourceType(service);
231 buildingBlockDetail.setTargetAction(assign);
232 return buildingBlockDetail;
236 public void test_validateOrchestrationStatus_unassignNotFound() {
237 String flowToBeCalled = "UnassignServiceInstanceBB";
239 execution.setVariable("flowToBeCalled", flowToBeCalled);
240 execution.setVariable("aLaCarte", true);
242 BuildingBlockDetail buildingBlockDetail =
243 getBuildingBlockDetail("UnassignServiceInstanceBB", ResourceType.SERVICE, OrchestrationAction.UNASSIGN);
245 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
247 lookupKeyMap = new HashMap<>();
249 orchestrationStatusValidator.validateOrchestrationStatus(execution);
251 assertNull(execution.getVariable("orchestrationStatusValidationResult"));
255 public void test_validateOrchestrationStatusSecondStageOfMultiStageEnabledVfModule() throws Exception {
256 String flowToBeCalled = "CreateVfModuleBB";
258 execution.setVariable("orchestrationStatusValidationResult",
259 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
260 execution.setVariable("aLaCarte", true);
261 execution.setVariable("flowToBeCalled", flowToBeCalled);
263 GenericVnf genericVnf = buildGenericVnf();
264 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
265 modelInfoGenericVnf.setMultiStageDesign("true");
266 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
267 setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
269 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
270 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
271 vfModule.setVfModuleId("vfModuleId");
272 vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
273 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
275 BuildingBlockDetail buildingBlockDetail =
276 getBuildingBlockDetail("CreateVfModuleBB", ResourceType.VF_MODULE, OrchestrationAction.CREATE);
278 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
280 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
281 getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.CONTINUE,
282 OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.CREATE);
284 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
285 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
286 OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
288 orchestrationStatusValidator.validateOrchestrationStatus(execution);
290 assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
291 execution.getVariable("orchestrationStatusValidationResult"));
293 Mockito.verifyZeroInteractions(requestsDbClient);
298 public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongPrevStatusVfModule() throws Exception {
299 String flowToBeCalled = "CreateVfModuleBB";
301 execution.setVariable("orchestrationStatusValidationResult", OrchestrationStatusValidationDirective.CONTINUE);
302 execution.setVariable("aLaCarte", true);
303 execution.setVariable("flowToBeCalled", flowToBeCalled);
305 GenericVnf genericVnf = buildGenericVnf();
306 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
307 modelInfoGenericVnf.setMultiStageDesign("true");
308 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
309 setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
311 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
312 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
313 vfModule.setVfModuleId("vfModuleId");
314 vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
315 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
317 BuildingBlockDetail buildingBlockDetail =
318 getBuildingBlockDetail("CreateVfModuleBB", ResourceType.VF_MODULE, OrchestrationAction.CREATE);
320 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
322 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
323 getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
324 OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.CREATE);
326 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
327 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
328 OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
330 InfraActiveRequests request = new InfraActiveRequests();
331 request.setRequestId("testVfModuleId1");
332 request.setResourceStatusMessage(vfModuleExistExpectedMessage);
334 Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
336 orchestrationStatusValidator.validateOrchestrationStatus(execution);
338 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
339 execution.getVariable("orchestrationStatusValidationResult"));
341 ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
342 Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
344 assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
348 public void test_validateOrchestrationStatusSecondStageOfMultiStageDisabledVfModule() throws Exception {
349 String flowToBeCalled = "CreateVfModuleBB";
351 execution.setVariable("orchestrationStatusValidationResult",
352 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
353 execution.setVariable("aLaCarte", true);
354 execution.setVariable("flowToBeCalled", flowToBeCalled);
356 GenericVnf genericVnf = buildGenericVnf();
357 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
358 modelInfoGenericVnf.setMultiStageDesign("false");
359 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
360 setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
362 BuildingBlockDetail buildingBlockDetail =
363 getBuildingBlockDetail("CreateVfModuleBB", ResourceType.VF_MODULE, OrchestrationAction.CREATE);
365 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
367 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
368 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
369 vfModule.setVfModuleId("vfModuleId");
370 vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
371 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
373 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
374 getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
375 OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.CREATE);
377 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
378 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
379 OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
381 InfraActiveRequests request = new InfraActiveRequests();
382 request.setRequestId("testVfModuleId1");
383 request.setResourceStatusMessage(vfModuleExistExpectedMessage);
385 Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
387 orchestrationStatusValidator.validateOrchestrationStatus(execution);
389 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
390 execution.getVariable("orchestrationStatusValidationResult"));
392 ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
393 Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
395 assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
399 public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongOrchStatusVfModule() throws Exception {
400 String flowToBeCalled = "CreateVfModuleBB";
402 execution.setVariable("orchestrationStatusValidationResult",
403 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
404 execution.setVariable("aLaCarte", true);
405 execution.setVariable("flowToBeCalled", flowToBeCalled);
407 GenericVnf genericVnf = buildGenericVnf();
408 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
409 modelInfoGenericVnf.setMultiStageDesign("true");
410 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
411 setVfModule().setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
413 BuildingBlockDetail buildingBlockDetail =
414 getBuildingBlockDetail("CreateVfModuleBB", ResourceType.VF_MODULE, OrchestrationAction.CREATE);
416 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
418 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
419 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
420 vfModule.setVfModuleId("vfModuleId");
421 vfModule.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
422 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
424 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
425 getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
426 OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.CREATE);
428 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
429 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.ASSIGNED,
430 OrchestrationAction.CREATE);
432 InfraActiveRequests request = new InfraActiveRequests();
433 request.setRequestId("testVfModuleId1");
434 request.setResourceStatusMessage(vfModuleExistExpectedMessage);
436 Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
438 orchestrationStatusValidator.validateOrchestrationStatus(execution);
440 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
441 execution.getVariable("orchestrationStatusValidationResult"));
443 ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
444 Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
446 assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
450 public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongTargetActionVfModule() throws Exception {
451 String flowToBeCalled = "CreateVfModuleBB";
453 execution.setVariable("orchestrationStatusValidationResult",
454 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
455 execution.setVariable("aLaCarte", true);
456 execution.setVariable("flowToBeCalled", flowToBeCalled);
458 GenericVnf genericVnf = buildGenericVnf();
459 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
460 modelInfoGenericVnf.setMultiStageDesign("true");
461 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
462 setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
464 BuildingBlockDetail buildingBlockDetail =
465 getBuildingBlockDetail("CreateVfModuleBB", ResourceType.VF_MODULE, OrchestrationAction.ACTIVATE);
467 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
469 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
470 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
471 vfModule.setVfModuleId("vfModuleId");
472 vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
473 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
475 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
476 getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
477 OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.ACTIVATE);
479 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
480 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
481 OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.ACTIVATE);
483 InfraActiveRequests request = new InfraActiveRequests();
484 request.setRequestId("testVfModuleId1");
485 request.setResourceStatusMessage(vfModuleExistExpectedMessage);
487 Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
489 orchestrationStatusValidator.validateOrchestrationStatus(execution);
491 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
492 execution.getVariable("orchestrationStatusValidationResult"));
494 ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
495 Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
497 assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
501 public void test_validateOrchestrationStatusSecondStageOfMultiStageWrongAlacarteValueVfModule() throws Exception {
502 String flowToBeCalled = "CreateVfModuleBB";
504 execution.setVariable("orchestrationStatusValidationResult",
505 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
506 execution.setVariable("aLaCarte", false);
507 execution.setVariable("flowToBeCalled", flowToBeCalled);
509 GenericVnf genericVnf = buildGenericVnf();
510 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
511 modelInfoGenericVnf.setMultiStageDesign("true");
512 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
513 setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
515 BuildingBlockDetail buildingBlockDetail =
516 getBuildingBlockDetail("CreateVfModuleBB", ResourceType.VF_MODULE, OrchestrationAction.CREATE);
518 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
520 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
521 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
522 vfModule.setVfModuleId("vfModuleId");
523 vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
524 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
526 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
527 getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
528 OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.ACTIVATE);
530 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
531 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
532 OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
534 InfraActiveRequests request = new InfraActiveRequests();
535 request.setRequestId("testVfModuleId1");
536 request.setResourceStatusMessage(vfModuleExistExpectedMessage);
538 Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
540 orchestrationStatusValidator.validateOrchestrationStatus(execution);
542 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
543 execution.getVariable("orchestrationStatusValidationResult"));
545 ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
546 Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
548 assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
552 public void continueValidationActivatedTest() throws Exception {
553 String flowToBeCalled = "DeactivateVnfBB";
554 BuildingBlockDetail buildingBlockDetail =
555 getBuildingBlockDetail(flowToBeCalled, ResourceType.VF_MODULE, OrchestrationAction.DEACTIVATE);
556 when(catalogDbClient.getBuildingBlockDetail(flowToBeCalled)).thenReturn(buildingBlockDetail);
558 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
559 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
560 vfModule.setVfModuleId("vfModuleId");
561 vfModule.setOrchestrationStatus(OrchestrationStatus.ACTIVATED);
562 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
564 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
565 getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.CONTINUE,
566 OrchestrationStatus.ACTIVATED, ResourceType.VF_MODULE, OrchestrationAction.DEACTIVATE);
567 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
568 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.ACTIVATED,
569 OrchestrationAction.DEACTIVATE);
571 execution.setVariable("aLaCarte", true);
572 execution.setVariable("flowToBeCalled", flowToBeCalled);
573 orchestrationStatusValidator.validateOrchestrationStatus(execution);
575 assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
576 execution.getVariable("orchestrationStatusValidationResult"));
578 Mockito.verifyZeroInteractions(requestsDbClient);
582 public void test_validateOrchestrationStatusDeleteVfModuleSilentSuccess() throws Exception {
583 String flowToBeCalled = "DeleteVfModuleBB";
585 execution.setVariable("orchestrationStatusValidationResult",
586 OrchestrationStatusValidationDirective.SILENT_SUCCESS);
587 execution.setVariable("aLaCarte", true);
588 execution.setVariable("flowToBeCalled", flowToBeCalled);
590 GenericVnf genericVnf = buildGenericVnf();
591 ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
592 modelInfoGenericVnf.setMultiStageDesign("true");
593 setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
594 setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
596 org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
597 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
598 vfModule.setVfModuleId("vfModuleId");
599 vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
600 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
602 BuildingBlockDetail buildingBlockDetail =
603 getBuildingBlockDetail("DeleteVfModuleBB", ResourceType.VF_MODULE, OrchestrationAction.CREATE);
605 doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
607 OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
608 getOrchestrationStatusStateTransitionDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
609 OrchestrationStatus.PENDING_ACTIVATION, ResourceType.VF_MODULE, OrchestrationAction.CREATE);
611 doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
612 .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
613 OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
615 InfraActiveRequests request = new InfraActiveRequests();
616 request.setRequestId("testVfModuleId1");
617 request.setResourceStatusMessage(vfModuleNotExistExpectedMessage);
619 Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
621 orchestrationStatusValidator.validateOrchestrationStatus(execution);
623 assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
624 execution.getVariable("orchestrationStatusValidationResult"));
626 ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
627 Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
629 assertEquals(vfModuleNotExistExpectedMessage, argument.getValue().getResourceStatusMessage());