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.servicedecomposition.tasks;
23 import static org.junit.Assert.assertEquals;
24 import static org.mockito.Matchers.isA;
25 import static org.mockito.Mockito.doReturn;
26 import static org.mockito.Mockito.doThrow;
28 import org.camunda.bpm.engine.delegate.BpmnError;
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.onap.so.BaseTest;
32 import org.onap.so.bpmn.core.WorkflowException;
33 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
34 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
35 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
36 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
37 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
38 import org.onap.so.db.catalog.beans.macro.RainyDayHandlerStatus;
39 import org.springframework.beans.factory.annotation.Autowired;
41 public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
43 private ExecuteBuildingBlockRainyDay executeBuildingBlockRainyDay;
45 private ServiceInstance serviceInstance;
46 private Customer customer; //will build service sub
47 private GenericVnf vnf;
48 private BuildingBlock buildingBlock;
49 private ExecuteBuildingBlock executeBuildingBlock;
52 public void before() {
53 serviceInstance = setServiceInstance();
54 customer = setCustomer();
55 vnf = setGenericVnf();
57 buildingBlock = new BuildingBlock();
58 buildingBlock.setBpmnFlowName("AssignServiceInstanceBB");
60 executeBuildingBlock = new ExecuteBuildingBlock();
61 executeBuildingBlock.setBuildingBlock(buildingBlock);
63 delegateExecution.setVariable("gBBInput", gBBInput);
64 delegateExecution.setVariable("WorkflowException", new WorkflowException("", 7000, ""));
65 delegateExecution.setVariable("buildingBlock", executeBuildingBlock);
66 delegateExecution.setVariable("lookupKeyMap", lookupKeyMap);
70 public void setRetryTimerTest() throws Exception{
71 delegateExecution.setVariable("retryCount", 2);
72 executeBuildingBlockRainyDay.setRetryTimer(delegateExecution);
73 assertEquals("PT25M",delegateExecution.getVariable("RetryDuration"));
77 public void setRetryTimerExceptionTest() {
78 expectedException.expect(BpmnError.class);
80 executeBuildingBlockRainyDay.setRetryTimer(null);
84 public void queryRainyDayTableExists() throws Exception{
85 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
86 serviceInstance.getModelInfoServiceInstance().setServiceType("st1");
87 vnf.setVnfType("vnft1");
89 RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus();
90 rainyDayHandlerStatus.setErrorCode("7000");
91 rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB");
92 rainyDayHandlerStatus.setServiceType("st1");
93 rainyDayHandlerStatus.setVnfType("vnft1");
94 rainyDayHandlerStatus.setPolicy("Rollback");
95 rainyDayHandlerStatus.setWorkStep("ASTERISK");
97 doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep("AssignServiceInstanceBB", "st1", "vnft1", "7000", "*");
99 executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution);
101 assertEquals("Rollback", delegateExecution.getVariable("handlingCode"));
105 public void queryRainyDayTableDefault() throws Exception{
106 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
107 serviceInstance.getModelInfoServiceInstance().setServiceType("st1");
108 vnf.setVnfType("vnft1");
110 RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus();
111 rainyDayHandlerStatus.setErrorCode("ASTERISK");
112 rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB");
113 rainyDayHandlerStatus.setServiceType("ASTERISK");
114 rainyDayHandlerStatus.setVnfType("ASTERISK");
115 rainyDayHandlerStatus.setPolicy("Rollback");
116 rainyDayHandlerStatus.setWorkStep("ASTERISK");
118 doReturn(null).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep("AssignServiceInstanceBB", "st1", "vnft1", "7000", "ASTERISK");
119 doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep("AssignServiceInstanceBB", "ASTERISK", "ASTERISK", "ASTERISK", "ASTERISK");
121 executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution);
123 assertEquals("Rollback", delegateExecution.getVariable("handlingCode"));
127 public void queryRainyDayTableDoesNotExist() throws Exception{
128 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
129 serviceInstance.getModelInfoServiceInstance().setServiceType("st1");
130 vnf.setVnfType("vnft1");
132 doReturn(null).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(isA(String.class), isA(String.class), isA(String.class), isA(String.class), isA(String.class));
134 executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution);
136 assertEquals("Abort", delegateExecution.getVariable("handlingCode"));
140 public void queryRainyDayTableExceptionTest() {
141 doThrow(Exception.class).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(isA(String.class), isA(String.class), isA(String.class), isA(String.class), isA(String.class));
143 executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution);
145 assertEquals("Abort", delegateExecution.getVariable("handlingCode"));