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.mockito.Mockito.doReturn;
26 import java.io.IOException;
27 import java.util.Optional;
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;
43 public class AuditCreateStackServiceTest extends AuditCreateStackService {
46 AuditCreateStackService auditStackService = new AuditCreateStackService();
49 HeatStackAudit heatStackAuditMock;
55 ExternalTask mockExternalTask;
58 ExternalTaskService mockExternalTaskService;
60 AuditInventory auditInventory = new AuditInventory();
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();
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);
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);
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);
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");
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);
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);