Replaced all tabs with spaces in java and pom.xml
[so.git] / adapters / mso-openstack-adapters / src / test / java / org / onap / so / adapters / audit / AuditStackServiceDataTest.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.junit.Assert.assertNotNull;
25 import static org.mockito.Mockito.doReturn;
26 import java.io.File;
27 import java.io.IOException;
28 import java.util.Map;
29 import java.util.Optional;
30 import org.camunda.bpm.client.task.ExternalTask;
31 import org.camunda.bpm.client.task.ExternalTaskService;
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.mockito.ArgumentCaptor;
35 import org.mockito.InjectMocks;
36 import org.mockito.Mock;
37 import org.mockito.Mockito;
38 import org.mockito.MockitoAnnotations;
39 import org.onap.so.audit.beans.AuditInventory;
40 import org.springframework.core.env.Environment;
41 import com.fasterxml.jackson.core.JsonParseException;
42 import com.fasterxml.jackson.databind.JsonMappingException;
43 import com.fasterxml.jackson.databind.ObjectMapper;
44
45 public class AuditStackServiceDataTest extends AuditCreateStackService {
46
47     @InjectMocks
48     private AuditCreateStackService auditStackService = new AuditCreateStackService();
49
50     @Mock
51     private HeatStackAudit heatStackAuditMock;
52
53     @Mock
54     private Environment mockEnv;
55
56     @Mock
57     private ExternalTask mockExternalTask;
58
59     @Mock
60     private ExternalTaskService mockExternalTaskService;
61
62     private ObjectMapper objectMapper = new ObjectMapper();
63
64     private AuditInventory auditInventory = new AuditInventory();
65
66     Optional<AAIObjectAuditList> auditListOptSuccess;
67
68     Optional<AAIObjectAuditList> auditListOptFailure;
69
70     @Before
71     public void setup() throws JsonParseException, JsonMappingException, IOException {
72         auditInventory.setCloudOwner("cloudOwner");
73         auditInventory.setCloudRegion("cloudRegion");
74         auditInventory.setTenantId("tenantId");
75         auditInventory.setHeatStackName("stackName");
76         MockitoAnnotations.initMocks(this);
77
78         AAIObjectAuditList auditListSuccess = objectMapper
79                 .readValue(new File("src/test/resources/ExpectedVServerFound.json"), AAIObjectAuditList.class);
80         auditListOptSuccess = Optional.of(auditListSuccess);
81
82         AAIObjectAuditList auditListFailure = objectMapper.readValue(
83                 new File("src/test/resources/Vserver2_Found_VServer1_Not_Found.json"), AAIObjectAuditList.class);
84         auditListOptFailure = Optional.of(auditListFailure);
85         String[] retrySequence = new String[8];
86         retrySequence[0] = "1";
87         retrySequence[1] = "1";
88         retrySequence[2] = "2";
89         retrySequence[3] = "3";
90         retrySequence[4] = "5";
91         retrySequence[5] = "8";
92         retrySequence[6] = "13";
93         retrySequence[7] = "20";
94         doReturn(auditInventory).when(mockExternalTask).getVariable("auditInventory");
95         doReturn("6000").when(mockEnv).getProperty("mso.workflow.topics.retryMultiplier", "6000");
96         doReturn(retrySequence).when(mockEnv).getProperty("mso.workflow.topics.retrySequence", String[].class);
97         doReturn("aasdfasdf").when(mockExternalTask).getId();
98     }
99
100     @Test
101     public void execute_external_task_audit_success_Test() {
102         doReturn(auditListOptSuccess).when(heatStackAuditMock).auditHeatStack("cloudRegion", "cloudOwner", "tenantId",
103                 "stackName");
104         auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
105         ArgumentCaptor<Map> captor = ArgumentCaptor.forClass(Map.class);
106         ArgumentCaptor<ExternalTask> taskCaptor = ArgumentCaptor.forClass(ExternalTask.class);
107         Mockito.verify(mockExternalTaskService).complete(taskCaptor.capture(), captor.capture());
108         Map actualMap = captor.getValue();
109         assertEquals(true, actualMap.get("auditIsSuccessful"));
110         assertNotNull(actualMap.get("auditInventoryResult"));
111     }
112
113     @Test
114     public void execute_external_task_audit_first_failure_Test() {
115         doReturn(auditListOptFailure).when(heatStackAuditMock).auditHeatStack("cloudRegion", "cloudOwner", "tenantId",
116                 "stackName");
117         doReturn(null).when(mockExternalTask).getRetries();
118         auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
119         Mockito.verify(mockExternalTaskService).handleFailure(mockExternalTask,
120                 "Unable to find all VServers and L-Interaces in A&AI",
121                 "Unable to find all VServers and L-Interaces in A&AI", 8, 10000L);
122     }
123
124     @Test
125     public void execute_external_task_audit_intermediate_failure_Test() {
126         doReturn(auditListOptFailure).when(heatStackAuditMock).auditHeatStack("cloudRegion", "cloudOwner", "tenantId",
127                 "stackName");
128         doReturn(6).when(mockExternalTask).getRetries();
129         auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
130         Mockito.verify(mockExternalTaskService).handleFailure(mockExternalTask,
131                 "Unable to find all VServers and L-Interaces in A&AI",
132                 "Unable to find all VServers and L-Interaces in A&AI", 5, 12000L);
133
134     }
135
136     @Test
137     public void execute_external_task_audit_final_failure_Test() {
138         doReturn(auditListOptFailure).when(heatStackAuditMock).auditHeatStack("cloudRegion", "cloudOwner", "tenantId",
139                 "stackName");
140         doReturn(1).when(mockExternalTask).getRetries();
141         auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
142         ArgumentCaptor<Map> captor = ArgumentCaptor.forClass(Map.class);
143         ArgumentCaptor<ExternalTask> taskCaptor = ArgumentCaptor.forClass(ExternalTask.class);
144         Mockito.verify(mockExternalTaskService).complete(taskCaptor.capture(), captor.capture());
145         Map actualMap = captor.getValue();
146         assertEquals(false, actualMap.get("auditIsSuccessful"));
147         assertNotNull(actualMap.get("auditInventoryResult"));
148     }
149
150     @Test
151     public void retry_sequence_calculation_Test() {
152         long firstRetry = auditStackService.calculateRetryDelay(8);
153         assertEquals(6000L, firstRetry);
154         long secondRetry = auditStackService.calculateRetryDelay(7);
155         assertEquals(6000L, secondRetry);
156         long thirdRetry = auditStackService.calculateRetryDelay(6);
157         assertEquals(12000L, thirdRetry);
158         long fourthRetry = auditStackService.calculateRetryDelay(5);
159         assertEquals(18000L, fourthRetry);
160         long fifthRetry = auditStackService.calculateRetryDelay(4);
161         assertEquals(30000L, fifthRetry);
162         long sixRetry = auditStackService.calculateRetryDelay(3);
163         assertEquals(48000L, sixRetry);
164         long seventhRetry = auditStackService.calculateRetryDelay(2);
165         assertEquals(78000L, seventhRetry);
166         long eigthRetry = auditStackService.calculateRetryDelay(1);
167         assertEquals(120000L, eigthRetry);
168     }
169
170     @Test
171     public void retry_sequence_Test() {
172         long firstRetry = auditStackService.calculateRetryDelay(8);
173         assertEquals(6000L, firstRetry);
174         long secondRetry = auditStackService.calculateRetryDelay(7);
175         assertEquals(6000L, secondRetry);
176         long thirdRetry = auditStackService.calculateRetryDelay(6);
177         assertEquals(12000L, thirdRetry);
178         long fourthRetry = auditStackService.calculateRetryDelay(5);
179         assertEquals(18000L, fourthRetry);
180         long fifthRetry = auditStackService.calculateRetryDelay(4);
181         assertEquals(30000L, fifthRetry);
182         long sixRetry = auditStackService.calculateRetryDelay(3);
183         assertEquals(48000L, sixRetry);
184         long seventhRetry = auditStackService.calculateRetryDelay(2);
185         assertEquals(78000L, seventhRetry);
186         long eigthRetry = auditStackService.calculateRetryDelay(1);
187         assertEquals(120000L, eigthRetry);
188     }
189
190
191     @Test
192     public void determineAuditResult_Test() throws Exception {
193         boolean actual = auditStackService.didCreateAuditFail(auditListOptSuccess);
194         assertEquals(false, actual);
195     }
196
197     @Test
198     public void determineAuditResult_Failure_Test() throws Exception {
199         boolean actual = auditStackService.didCreateAuditFail(auditListOptFailure);
200         assertEquals(true, actual);
201     }
202 }