2 * ============LICENSE_START=======================================================
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
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.adapters.audit;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNotNull;
25 import static org.mockito.Mockito.doReturn;
28 import java.io.IOException;
30 import java.util.Optional;
32 import org.camunda.bpm.client.task.ExternalTask;
33 import org.camunda.bpm.client.task.ExternalTaskService;
34 import org.junit.Before;
35 import org.junit.Test;
36 import org.mockito.ArgumentCaptor;
37 import org.mockito.InjectMocks;
38 import org.mockito.Mock;
39 import org.mockito.Mockito;
40 import org.mockito.MockitoAnnotations;
41 import org.onap.so.audit.beans.AuditInventory;
42 import org.springframework.core.env.Environment;
44 import com.fasterxml.jackson.core.JsonParseException;
45 import com.fasterxml.jackson.databind.JsonMappingException;
46 import com.fasterxml.jackson.databind.ObjectMapper;
48 public class AuditStackServiceDataTest extends AuditCreateStackService {
51 private AuditCreateStackService auditStackService = new AuditCreateStackService();
54 private HeatStackAudit heatStackAuditMock;
57 private Environment mockEnv;
60 private ExternalTask mockExternalTask;
63 private ExternalTaskService mockExternalTaskService;
65 private ObjectMapper objectMapper = new ObjectMapper();
67 private AuditInventory auditInventory = new AuditInventory();
69 Optional<AAIObjectAuditList> auditListOptSuccess;
71 Optional<AAIObjectAuditList> auditListOptFailure;
74 public void setup() throws JsonParseException, JsonMappingException, IOException {
75 auditInventory.setCloudOwner("cloudOwner");
76 auditInventory.setCloudRegion("cloudRegion");
77 auditInventory.setTenantId("tenantId");
78 auditInventory.setHeatStackName("stackName");
79 MockitoAnnotations.initMocks(this);
81 AAIObjectAuditList auditListSuccess = objectMapper.readValue(new File("src/test/resources/ExpectedVServerFound.json"), AAIObjectAuditList.class);
82 auditListOptSuccess = Optional.of(auditListSuccess);
84 AAIObjectAuditList auditListFailure = objectMapper.readValue(new File("src/test/resources/Vserver2_Found_VServer1_Not_Found.json"), AAIObjectAuditList.class);
85 auditListOptFailure = Optional.of(auditListFailure);
86 String[] retrySequence = new String[8];
87 retrySequence[0] = "1";
88 retrySequence[1] = "1";
89 retrySequence[2] = "2";
90 retrySequence[3] = "3";
91 retrySequence[4] = "5";
92 retrySequence[5] = "8";
93 retrySequence[6] = "13";
94 retrySequence[7] = "20";
95 doReturn(auditInventory).when(mockExternalTask).getVariable("auditInventory");
96 doReturn("6000").when(mockEnv).getProperty("mso.workflow.topics.retryMultiplier","6000");
97 doReturn(retrySequence).when(mockEnv).getProperty("mso.workflow.topics.retrySequence",String[].class);
98 doReturn("aasdfasdf").when(mockExternalTask).getId();
102 public void execute_external_task_audit_success_Test() {
103 doReturn(auditListOptSuccess).when(heatStackAuditMock).auditHeatStack("cloudRegion", "cloudOwner", "tenantId", "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"));
114 public void execute_external_task_audit_first_failure_Test() {
115 doReturn(auditListOptFailure).when(heatStackAuditMock).auditHeatStack("cloudRegion", "cloudOwner", "tenantId", "stackName");
116 doReturn(null).when(mockExternalTask).getRetries();
117 auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
118 Mockito.verify(mockExternalTaskService).handleFailure(mockExternalTask,
119 "Unable to find all VServers and L-Interaces in A&AI",
120 "Unable to find all VServers and L-Interaces in A&AI", 8, 10000L);
124 public void execute_external_task_audit_intermediate_failure_Test() {
125 doReturn(auditListOptFailure).when(heatStackAuditMock).auditHeatStack("cloudRegion", "cloudOwner", "tenantId", "stackName");
126 doReturn(6).when(mockExternalTask).getRetries();
127 auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
128 Mockito.verify(mockExternalTaskService).handleFailure(mockExternalTask,
129 "Unable to find all VServers and L-Interaces in A&AI",
130 "Unable to find all VServers and L-Interaces in A&AI", 5, 12000L);
135 public void execute_external_task_audit_final_failure_Test() {
136 doReturn(auditListOptFailure).when(heatStackAuditMock).auditHeatStack("cloudRegion", "cloudOwner", "tenantId", "stackName");
137 doReturn(1).when(mockExternalTask).getRetries();
138 auditStackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
139 ArgumentCaptor<Map> captor = ArgumentCaptor.forClass(Map.class);
140 ArgumentCaptor<ExternalTask> taskCaptor = ArgumentCaptor.forClass(ExternalTask.class);
141 Mockito.verify(mockExternalTaskService).complete(taskCaptor.capture(),captor.capture());
142 Map actualMap = captor.getValue();
143 assertEquals(false,actualMap.get("auditIsSuccessful"));
144 assertNotNull(actualMap.get("auditInventoryResult"));
148 public void retry_sequence_calculation_Test() {
149 long firstRetry = auditStackService.calculateRetryDelay(8);
150 assertEquals(6000L, firstRetry);
151 long secondRetry = auditStackService.calculateRetryDelay(7);
152 assertEquals(6000L, secondRetry);
153 long thirdRetry = auditStackService.calculateRetryDelay(6);
154 assertEquals(12000L, thirdRetry);
155 long fourthRetry = auditStackService.calculateRetryDelay(5);
156 assertEquals(18000L, fourthRetry);
157 long fifthRetry = auditStackService.calculateRetryDelay(4);
158 assertEquals(30000L, fifthRetry);
159 long sixRetry = auditStackService.calculateRetryDelay(3);
160 assertEquals(48000L, sixRetry);
161 long seventhRetry = auditStackService.calculateRetryDelay(2);
162 assertEquals(78000L, seventhRetry);
163 long eigthRetry = auditStackService.calculateRetryDelay(1);
164 assertEquals(120000L, eigthRetry);
168 public void retry_sequence_Test() {
169 long firstRetry = auditStackService.calculateRetryDelay(8);
170 assertEquals(6000L, firstRetry);
171 long secondRetry = auditStackService.calculateRetryDelay(7);
172 assertEquals(6000L, secondRetry);
173 long thirdRetry = auditStackService.calculateRetryDelay(6);
174 assertEquals(12000L, thirdRetry);
175 long fourthRetry = auditStackService.calculateRetryDelay(5);
176 assertEquals(18000L, fourthRetry);
177 long fifthRetry = auditStackService.calculateRetryDelay(4);
178 assertEquals(30000L, fifthRetry);
179 long sixRetry = auditStackService.calculateRetryDelay(3);
180 assertEquals(48000L, sixRetry);
181 long seventhRetry = auditStackService.calculateRetryDelay(2);
182 assertEquals(78000L, seventhRetry);
183 long eigthRetry = auditStackService.calculateRetryDelay(1);
184 assertEquals(120000L, eigthRetry);
189 public void determineAuditResult_Test() throws Exception{
190 boolean actual = auditStackService.didCreateAuditFail(auditListOptSuccess);
191 assertEquals(false, actual);
195 public void determineAuditResult_Failure_Test() throws Exception{
196 boolean actual = auditStackService.didCreateAuditFail(auditListOptFailure);
197 assertEquals(true, actual);