Merge "skip post instantiation configuration"
[so.git] / adapters / mso-openstack-adapters / src / test / java / org / onap / so / adapters / audit / AuditCreateStackServiceTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017-2019 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.adapters.audit;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.mockito.Mockito.doReturn;
25
26 import java.io.IOException;
27 import java.util.Optional;
28
29 import org.camunda.bpm.client.task.ExternalTask;
30 import org.camunda.bpm.client.task.ExternalTaskService;
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.mockito.InjectMocks;
34 import org.mockito.Mock;
35 import org.mockito.Mockito;
36 import org.mockito.MockitoAnnotations;
37 import org.onap.aai.domain.yang.LInterface;
38 import org.onap.so.audit.beans.AuditInventory;
39 import org.springframework.core.env.Environment;
40 import com.fasterxml.jackson.core.JsonParseException;
41 import com.fasterxml.jackson.databind.JsonMappingException;
42
43 public class AuditCreateStackServiceTest extends AuditCreateStackService {
44
45         @InjectMocks
46         AuditCreateStackService auditStackService = new AuditCreateStackService();
47
48         @Mock
49         HeatStackAudit heatStackAuditMock;
50
51         @Mock
52         Environment mockEnv;
53
54         @Mock
55         ExternalTask mockExternalTask;
56
57         @Mock
58         ExternalTaskService mockExternalTaskService;
59
60         AuditInventory auditInventory = new AuditInventory();
61
62         @Before
63         public void setup() {
64                 auditInventory.setCloudOwner("cloudOwner");
65                 auditInventory.setCloudRegion("cloudRegion");
66                 auditInventory.setTenantId("tenantId");
67                 auditInventory.setHeatStackName("stackName");
68                 MockitoAnnotations.initMocks(this);
69                 doReturn(auditInventory).when(mockExternalTask).getVariable("auditInventory");
70                 doReturn("6000").when(mockEnv).getProperty("mso.workflow.topics.retryMultiplier","6000");
71                 doReturn("aasdfasdf").when(mockExternalTask).getId();
72         }
73
74         @Test
75         public void execute_external_task_audit_success_Test() {
76                 doReturn(true).when(heatStackAuditMock).auditHeatStackCreate("cloudRegion", "cloudOwner", "tenantId", "stackName");
77                 auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
78                 Mockito.verify(mockExternalTaskService).complete(mockExternalTask);
79         }
80
81         @Test
82         public void execute_external_task_audit_first_failure_Test() {
83                 doReturn(false).when(heatStackAuditMock).auditHeatStackCreate("cloudRegion", "cloudOwner", "tenantId", "stackName");
84                 doReturn(null).when(mockExternalTask).getRetries();
85                 auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
86                 Mockito.verify(mockExternalTaskService).handleFailure(mockExternalTask,
87                                 "Unable to find all VServers and L-Interaces in A&AI",
88                                 "Unable to find all VServers and L-Interaces in A&AI", 8, 10000L);
89         }
90
91         @Test
92         public void execute_external_task_audit_intermediate_failure_Test() {
93                 doReturn(false).when(heatStackAuditMock).auditHeatStackCreate("cloudRegion", "cloudOwner", "tenantId", "stackName");
94                 doReturn(6).when(mockExternalTask).getRetries();
95                 auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);               
96                 Mockito.verify(mockExternalTaskService).handleFailure(mockExternalTask,
97                                 "Unable to find all VServers and L-Interaces in A&AI",
98                                 "Unable to find all VServers and L-Interaces in A&AI", 5, 12000L);
99
100         }
101
102         @Test
103         public void execute_external_task_audit_final_failure_Test() {
104                 doReturn(false).when(heatStackAuditMock).auditHeatStackCreate("cloudRegion", "cloudOwner", "tenantId", "stackName");
105                 doReturn(1).when(mockExternalTask).getRetries();
106                 auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);               
107                 Mockito.verify(mockExternalTaskService).handleBpmnError(mockExternalTask,
108                                 "AuditAAIInventoryFailure", "Number of Retries Exceeded auditing inventory");
109         }
110
111         @Test
112         public void retry_sequence_calculation_Test() {
113                 long firstRetry = auditStackService.calculateRetryDelay(8);
114                 assertEquals(6000L, firstRetry);
115                 long secondRetry = auditStackService.calculateRetryDelay(7);
116                 assertEquals(6000L, secondRetry);
117                 long thirdRetry = auditStackService.calculateRetryDelay(6);
118                 assertEquals(12000L, thirdRetry);
119                 long fourthRetry = auditStackService.calculateRetryDelay(5);
120                 assertEquals(18000L, fourthRetry);
121                 long fifthRetry = auditStackService.calculateRetryDelay(4);
122                 assertEquals(30000L, fifthRetry);
123                 long sixRetry = auditStackService.calculateRetryDelay(3);
124                 assertEquals(48000L, sixRetry);
125                 long seventhRetry = auditStackService.calculateRetryDelay(2);
126                 assertEquals(78000L, seventhRetry);
127                 long eigthRetry = auditStackService.calculateRetryDelay(1);
128                 assertEquals(120000L, eigthRetry);
129         }
130
131         @Test
132         public void retry_sequence_Test() {
133                 long firstRetry = auditStackService.calculateRetryDelay(8);
134                 assertEquals(6000L, firstRetry);
135                 long secondRetry = auditStackService.calculateRetryDelay(7);
136                 assertEquals(6000L, secondRetry);
137                 long thirdRetry = auditStackService.calculateRetryDelay(6);
138                 assertEquals(12000L, thirdRetry);
139                 long fourthRetry = auditStackService.calculateRetryDelay(5);
140                 assertEquals(18000L, fourthRetry);
141                 long fifthRetry = auditStackService.calculateRetryDelay(4);
142                 assertEquals(30000L, fifthRetry);
143                 long sixRetry = auditStackService.calculateRetryDelay(3);
144                 assertEquals(48000L, sixRetry);
145                 long seventhRetry = auditStackService.calculateRetryDelay(2);
146                 assertEquals(78000L, seventhRetry);
147                 long eigthRetry = auditStackService.calculateRetryDelay(1);
148                 assertEquals(120000L, eigthRetry);
149         }
150 }