2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2020 Tech Mahindra
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.listeners;
23 import static org.junit.Assert.assertEquals;
24 import static org.mockito.Mockito.when;
25 import java.util.ArrayList;
26 import java.util.List;
27 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
28 import org.junit.Before;
29 import org.junit.Test;
30 import org.junit.runner.RunWith;
31 import org.mockito.InjectMocks;
32 import org.mockito.Mock;
33 import org.mockito.junit.MockitoJUnitRunner;
34 import org.onap.so.bpmn.common.BBConstants;
35 import org.onap.so.bpmn.common.BuildingBlockExecution;
36 import org.onap.so.bpmn.common.DelegateExecutionImpl;
37 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
38 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
39 import org.onap.so.db.catalog.beans.PnfResourceCustomization;
40 import org.onap.so.db.catalog.beans.VfModuleCustomization;
41 import org.onap.so.db.catalog.beans.VnfResourceCustomization;
42 import org.onap.so.db.catalog.client.CatalogDbClient;
43 import org.onap.so.serviceinstancebeans.ModelInfo;
44 import org.onap.so.serviceinstancebeans.RequestDetails;
46 @RunWith(MockitoJUnitRunner.Silent.class)
47 public class SkipCDSBuildingBlockListenerTest {
49 private static final String VNF_SCOPE = "VNF";
50 private static final String VF_SCOPE = "VFModule";
51 private static final String PNF_SCOPE = "pnf";
52 private static final String TEST_MODELUUID = "123456789";
53 private static final String VNF_TEST_ACTION = "VnfConfigAssign";
54 private static final String VFModule_TEST_ACTION = "VfModuleConfigAssign";
55 private static final String PNFModule_TEST_ACTION = "config-assign";
56 private static final String MODELCUSTOMIZATIONUUID = "123456789";
57 private static final String BBNAME = "ControllerExecutionBB";
58 private static final String COMPLETED = "completed";
59 private static final boolean ISFIRST = true;
62 private List<VnfResourceCustomization> vnfResourceCustomization;
63 private List<VfModuleCustomization> vfModuleCustomization;
64 private ExecuteBuildingBlock executeBuildingBlock = new ExecuteBuildingBlock();
65 private RequestDetails reqDetail = new RequestDetails();
66 private BuildingBlockExecution buildingBlockExecution = new DelegateExecutionImpl(new DelegateExecutionFake());
67 private VnfResourceCustomization vnfCust = new VnfResourceCustomization();
68 private VfModuleCustomization vfCust = new VfModuleCustomization();
69 private PnfResourceCustomization pnfResourceCustomization = new PnfResourceCustomization();
70 private BuildingBlock buildingBlock = new BuildingBlock();
73 private SkipCDSBuildingBlockListener skipCDSBuildingBlockListener;
75 private CatalogDbClient catalogDbClient;
78 public void before() {
79 ModelInfo model = new ModelInfo();
80 model.setModelUuid(TEST_MODELUUID);
81 reqDetail.setModelInfo(model);
82 executeBuildingBlock.setRequestDetails(reqDetail);
86 public void testTrigger() {
87 BuildingBlockExecution execution = new DelegateExecutionImpl(new DelegateExecutionFake());
88 skipCDSBuildingBlockListener.shouldRunFor(BBNAME, ISFIRST, execution);
89 assertEquals("ControllerExecutionBB", BBNAME);
93 public void testProcessForVNFToSkipCDSBB() {
94 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
95 flowsToExecute.add(executeBuildingBlock);
96 flowsToExecute.add(new ExecuteBuildingBlock());
98 setBuildingBlockAndCurrentSequence(VNF_SCOPE, VNF_TEST_ACTION, 0);
99 vnfResourceCustomization = getVnfResourceCustomizationList(true);
101 when(catalogDbClient.getVnfResourceCustomizationByModelUuid(
102 executeBuildingBlock.getRequestDetails().getModelInfo().getModelUuid()))
103 .thenReturn(vnfResourceCustomization);
104 when(catalogDbClient.findVnfResourceCustomizationInList(executeBuildingBlock.getBuildingBlock().getKey(),
105 vnfResourceCustomization)).thenReturn(vnfCust);
108 skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
111 actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
112 assertEquals(1, actual);
117 public void testProcessForVNFNotToSkipCDSBB() {
118 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
119 flowsToExecute.add(executeBuildingBlock);
120 flowsToExecute.add(new ExecuteBuildingBlock());
122 setBuildingBlockAndCurrentSequence(VNF_SCOPE, VNF_TEST_ACTION, 0);
123 vnfResourceCustomization = getVnfResourceCustomizationList(false);
125 when(catalogDbClient.getVnfResourceCustomizationByModelUuid(
126 executeBuildingBlock.getRequestDetails().getModelInfo().getModelUuid()))
127 .thenReturn(vnfResourceCustomization);
128 when(catalogDbClient.findVnfResourceCustomizationInList(executeBuildingBlock.getBuildingBlock().getKey(),
129 vnfResourceCustomization)).thenReturn(vnfCust);
132 skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
135 actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
136 assertEquals(0, actual);
142 public void testProcessForVFToSkipCDSBB() {
143 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
144 flowsToExecute.add(executeBuildingBlock);
145 flowsToExecute.add(new ExecuteBuildingBlock());
147 setBuildingBlockAndCurrentSequence(VF_SCOPE, VFModule_TEST_ACTION, 0);
148 vfModuleCustomization = getVfModuleCustomizationList(true);
151 .getVfModuleCustomizationByModelCuztomizationUUID(executeBuildingBlock.getBuildingBlock().getKey()))
155 skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
158 actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
159 assertEquals(1, actual);
164 public void testProcessForVFNotToSkipCDSBB() {
165 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
166 flowsToExecute.add(executeBuildingBlock);
167 flowsToExecute.add(new ExecuteBuildingBlock());
169 setBuildingBlockAndCurrentSequence(VF_SCOPE, VFModule_TEST_ACTION, 0);
170 vfModuleCustomization = getVfModuleCustomizationList(false);
173 .getVfModuleCustomizationByModelCuztomizationUUID(executeBuildingBlock.getBuildingBlock().getKey()))
177 skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
180 actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
181 assertEquals(0, actual);
186 public void testProcessForPNFToSkipCDSBB() {
187 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
188 flowsToExecute.add(executeBuildingBlock);
189 flowsToExecute.add(new ExecuteBuildingBlock());
191 setBuildingBlockAndCurrentSequence(PNF_SCOPE, PNFModule_TEST_ACTION, 0);
192 pnfResourceCustomization = getPnfResourceCustomization(true);
195 .getPnfResourceCustomizationByModelCustomizationUUID(executeBuildingBlock.getBuildingBlock().getKey()))
196 .thenReturn(pnfResourceCustomization);
199 skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
202 actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
203 assertEquals(1, actual);
208 public void testProcessForPNFToSkipCDSBBLastBBInList() {
209 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
210 flowsToExecute.add(executeBuildingBlock);
212 setBuildingBlockAndCurrentSequence(PNF_SCOPE, PNFModule_TEST_ACTION, 0);
213 pnfResourceCustomization = getPnfResourceCustomization(true);
216 .getPnfResourceCustomizationByModelCustomizationUUID(executeBuildingBlock.getBuildingBlock().getKey()))
217 .thenReturn(pnfResourceCustomization);
220 skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
223 actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
224 boolean isCompleted = buildingBlockExecution.getVariable(COMPLETED);
225 assertEquals(true, isCompleted);
226 assertEquals(0, actual);
230 public void testProcessForPNFNotToSkipCDSBB() {
231 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
232 flowsToExecute.add(executeBuildingBlock);
233 flowsToExecute.add(new ExecuteBuildingBlock());
235 setBuildingBlockAndCurrentSequence(PNF_SCOPE, PNFModule_TEST_ACTION, 0);
236 pnfResourceCustomization = getPnfResourceCustomization(false);
239 .getPnfResourceCustomizationByModelCustomizationUUID(executeBuildingBlock.getBuildingBlock().getKey()))
240 .thenReturn(pnfResourceCustomization);
243 skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
246 actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
247 assertEquals(0, actual);
252 * setting scope action in buildingBlock and BB current sequence in BuildingBlockExecution
258 private void setBuildingBlockAndCurrentSequence(String scope, String action, int sequence) {
259 buildingBlock.setBpmnScope(scope);
260 buildingBlock.setBpmnAction(action);
261 buildingBlock.setBpmnFlowName("ControllerExecutionBB");
262 buildingBlock.setKey(MODELCUSTOMIZATIONUUID);
263 executeBuildingBlock.setBuildingBlock(buildingBlock);
264 buildingBlockExecution.setVariable(BBConstants.G_CURRENT_SEQUENCE, sequence);
268 private List<VnfResourceCustomization> getVnfResourceCustomizationList(boolean setSkippost) {
269 List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>();
270 vnfCust.setModelCustomizationUUID(MODELCUSTOMIZATIONUUID);
271 vnfCust.setSkipPostInstConf(setSkippost);
272 vnfResourceCustomizations.add(vnfCust);
273 return vnfResourceCustomizations;
276 private List<VfModuleCustomization> getVfModuleCustomizationList(boolean setSkippost) {
277 List<VfModuleCustomization> vfModuleCustomizations = new ArrayList<>();
278 vfCust.setModelCustomizationUUID(MODELCUSTOMIZATIONUUID);
279 vfCust.setSkipPostInstConf(setSkippost);
280 vfModuleCustomizations.add(vfCust);
281 return vfModuleCustomizations;
284 private PnfResourceCustomization getPnfResourceCustomization(boolean setSkippost) {
285 PnfResourceCustomization pnfResourceCustomization = new PnfResourceCustomization();
286 pnfResourceCustomization.setModelCustomizationUUID(MODELCUSTOMIZATIONUUID);
287 pnfResourceCustomization.setSkipPostInstConf(setSkippost);
288 return pnfResourceCustomization;