79cb33b7c4463330f3b6f6eb71a8f97383aa0def
[so.git] / bpmn / MSOCommonBPMN / src / test / java / org / onap / so / bpmn / servicedecomposition / tasks / ExecuteBuildlingBlockRainyDayTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.so.bpmn.servicedecomposition.tasks;
22
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;
27
28 import org.camunda.bpm.engine.delegate.BpmnError;
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.onap.so.bpmn.core.WorkflowException;
32 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
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.BuildingBlock;
36 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
37 import org.onap.so.BaseTest;
38 import org.onap.so.db.catalog.beans.macro.RainyDayHandlerStatus;
39 import org.springframework.beans.factory.annotation.Autowired;
40
41 public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
42         @Autowired
43         private ExecuteBuildingBlockRainyDay executeBuildingBlockRainyDay;
44         
45         private ServiceInstance serviceInstance;
46         private Customer customer; //will build service sub
47         private GenericVnf vnf;
48         private BuildingBlock buildingBlock;
49         private ExecuteBuildingBlock executeBuildingBlock;
50         
51         @Before
52         public void before() {
53                 serviceInstance = setServiceInstance();
54                 customer = setCustomer();
55                 vnf = setGenericVnf();
56                 
57                 buildingBlock = new BuildingBlock();
58                 buildingBlock.setBpmnFlowName("AssignServiceInstanceBB");
59                 
60                 executeBuildingBlock = new ExecuteBuildingBlock();
61                 executeBuildingBlock.setBuildingBlock(buildingBlock);
62                 
63                 delegateExecution.setVariable("gBBInput", gBBInput);
64                 delegateExecution.setVariable("WorkflowException", new WorkflowException("", 7000, ""));
65                 delegateExecution.setVariable("buildingBlock", executeBuildingBlock);
66                 delegateExecution.setVariable("lookupKeyMap", lookupKeyMap);
67         }
68         
69         @Test
70         public void setRetryTimerTest() throws Exception{
71                 delegateExecution.setVariable("retryCount", 2);
72                 executeBuildingBlockRainyDay.setRetryTimer(delegateExecution);
73                 assertEquals("PT25M",delegateExecution.getVariable("RetryDuration"));
74         }
75         
76         @Test
77         public void setRetryTimerExceptionTest() {
78                 expectedException.expect(BpmnError.class);
79                 
80                 executeBuildingBlockRainyDay.setRetryTimer(null);
81         }
82         
83         @Test
84         public void queryRainyDayTableExists() throws Exception{
85                 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
86                 serviceInstance.getModelInfoServiceInstance().setServiceType("st1");
87                 vnf.setVnfType("vnft1");
88                 
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");
96                 
97                 doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep("AssignServiceInstanceBB", "st1", "vnft1", "7000", "*");
98                 
99                 executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution);
100                 
101                 assertEquals("Rollback", delegateExecution.getVariable("handlingCode"));
102         }
103         
104         @Test
105         public void queryRainyDayTableDefault() throws Exception{
106                 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
107                 serviceInstance.getModelInfoServiceInstance().setServiceType("st1");
108                 vnf.setVnfType("vnft1");
109
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");
117                 
118                 doReturn(null).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep("AssignServiceInstanceBB", "st1", "vnft1", "7000", "ASTERISK");
119                 doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep("AssignServiceInstanceBB", "ASTERISK", "ASTERISK", "ASTERISK", "ASTERISK");
120                 
121                 executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution);
122                 
123                 assertEquals("Rollback", delegateExecution.getVariable("handlingCode"));
124         }
125         
126         @Test
127         public void queryRainyDayTableDoesNotExist() throws Exception{
128                 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
129                 serviceInstance.getModelInfoServiceInstance().setServiceType("st1");
130                 vnf.setVnfType("vnft1");
131
132                 doReturn(null).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(isA(String.class), isA(String.class), isA(String.class), isA(String.class), isA(String.class));
133
134                 executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution);
135                 
136                 assertEquals("Abort", delegateExecution.getVariable("handlingCode"));
137         }
138         
139         @Test
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));
142                 
143                 executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution);
144                 
145                 assertEquals("Abort", delegateExecution.getVariable("handlingCode"));
146         }
147 }