2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2020 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.openecomp.sdc.be.components.health;
23 import mockit.Deencapsulation;
24 import org.junit.Assert;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 import org.mockito.junit.MockitoJUnitRunner;
29 import org.onap.portalsdk.core.onboarding.exception.CipherUtilException;
30 import org.openecomp.sdc.be.catalog.impl.DmaapProducerHealth;
31 import org.openecomp.sdc.be.components.BeConfDependentTest;
32 import org.openecomp.sdc.be.components.distribution.engine.DistributionEngineClusterHealth;
33 import org.openecomp.sdc.be.components.distribution.engine.DmaapHealth;
34 import org.openecomp.sdc.be.switchover.detector.SwitchoverDetector;
35 import org.openecomp.sdc.common.api.HealthCheckInfo;
36 import org.openecomp.sdc.common.http.client.api.HttpExecuteException;
37 import org.springframework.test.util.ReflectionTestUtils;
39 import java.util.LinkedList;
40 import java.util.List;
42 import static org.mockito.ArgumentMatchers.eq;
43 import static org.mockito.Mockito.doReturn;
44 import static org.mockito.Mockito.doThrow;
45 import static org.mockito.Mockito.mock;
46 import static org.mockito.Mockito.spy;
47 import static org.mockito.Mockito.when;
48 import static org.openecomp.sdc.common.api.Constants.HC_COMPONENT_DCAE;
49 import static org.openecomp.sdc.common.api.Constants.HC_COMPONENT_ON_BOARDING;
51 @RunWith(MockitoJUnitRunner.class)
52 public class HealthCheckBusinessLogicHealthTest extends BeConfDependentTest {
53 private DmaapProducerHealth dmaapProducerHealth = mock(DmaapProducerHealth.class);
54 private HealthCheckInfo dmaapProducerHealthCheckInfo = mock(HealthCheckInfo.class);
56 private SwitchoverDetector switchoverDetector;
58 private HealthCheckBusinessLogic createTestSubject() {
60 HealthCheckBusinessLogic healthCheckBusinessLogic = new HealthCheckBusinessLogic();
61 DmaapHealth dmaapHealth = new DmaapHealth();
62 ReflectionTestUtils.setField(healthCheckBusinessLogic, "dmaapHealth", dmaapHealth);
63 PortalHealthCheckBuilder portalHealthCheckBuilder = new PortalHealthCheckBuilder();
64 ReflectionTestUtils.setField(healthCheckBusinessLogic, "portalHealthCheck", portalHealthCheckBuilder);
65 DistributionEngineClusterHealth distributionEngineClusterHealth = new DistributionEngineClusterHealth();
66 ReflectionTestUtils.setField(healthCheckBusinessLogic, "distributionEngineClusterHealth",
67 distributionEngineClusterHealth);
68 SwitchoverDetector switchoverDetector = new SwitchoverDetector();
69 ReflectionTestUtils.setField(healthCheckBusinessLogic, "switchoverDetector", switchoverDetector);
70 List<HealthCheckInfo> prevBeHealthCheckInfos = new LinkedList<>();
71 ReflectionTestUtils.setField(healthCheckBusinessLogic, "prevBeHealthCheckInfos", prevBeHealthCheckInfos);
72 ReflectionTestUtils.setField(healthCheckBusinessLogic, "dmaapProducerHealth", dmaapProducerHealth);
73 return healthCheckBusinessLogic;
79 public void beforeTest() {
80 when(dmaapProducerHealth.getHealthCheckInfo())
81 .thenReturn(dmaapProducerHealthCheckInfo);
85 public void testInit() throws Exception {
86 HealthCheckBusinessLogic testSubject = createTestSubject();
91 public void testIsDistributionEngineUp() throws Exception {
92 HealthCheckBusinessLogic testSubject;
94 testSubject = createTestSubject();
95 testSubject.isDistributionEngineUp();
99 public void testGetBeHealthCheckInfosStatus() throws Exception {
100 HealthCheckBusinessLogic testSubject;
103 testSubject = createTestSubject();
104 testSubject.getBeHealthCheckInfosStatus();
108 public void testGetBeHealthCheckInfos() throws Exception {
109 HealthCheckBusinessLogic testSubject;
112 testSubject = createTestSubject();
113 Deencapsulation.invoke(testSubject, "getBeHealthCheckInfos");
117 public void testGetDmaapHealthCheck() throws Exception {
118 HealthCheckBusinessLogic testSubject;
119 List<HealthCheckInfo> healthCheckInfos = new LinkedList<>();
122 testSubject = createTestSubject();
123 Deencapsulation.invoke(testSubject, "getDmaapHealthCheck");
127 public void testGetJanusGraphHealthCheck() throws Exception {
128 HealthCheckBusinessLogic testSubject;
129 List<HealthCheckInfo> healthCheckInfos = new LinkedList<>();
132 testSubject = createTestSubject();
133 // testSubject.getJanusGraphHealthCheck(healthCheckInfos);
134 healthCheckInfos.add(testSubject.getJanusGraphHealthCheck());
138 public void testGetCassandraHealthCheck() throws Exception {
139 HealthCheckBusinessLogic testSubject;
142 testSubject = createTestSubject();
143 Deencapsulation.invoke(testSubject, "getCassandraHealthCheck");
147 public void testGetDistributionEngineCheck() throws Exception {
148 // HealthCheckBusinessLogic testSubject;
149 DistributionEngineClusterHealth testSubject = new DistributionEngineClusterHealth();
152 Deencapsulation.invoke(testSubject, "getHealthCheckInfo");
156 public void testGetAmdocsHealthCheck() throws Exception {
157 HealthCheckBusinessLogic testSubject;
158 List<HealthCheckInfo> healthCheckInfos = new LinkedList<>();
161 testSubject = createTestSubject();
162 String url = testSubject.buildOnBoardingHealthCheckUrl();
163 Deencapsulation.invoke(testSubject, "getHostedComponentsBeHealthCheck", HC_COMPONENT_ON_BOARDING, url);
167 public void testGetPortalHealthCheckSuccess() throws Exception {
168 PortalHealthCheckBuilder testSubject = spy(PortalHealthCheckBuilder.class);
169 String healthCheckURL = testSubject.buildPortalHealthCheckUrl();
171 doReturn(200).when(testSubject).getStatusCode(eq(healthCheckURL), eq(timeout));
173 testSubject.runTask();
174 HealthCheckInfo hci = testSubject.getHealthCheckInfo();
175 Assert.assertEquals("PORTAL", hci.getHealthCheckComponent());
176 Assert.assertEquals(HealthCheckInfo.HealthCheckStatus.UP, hci.getHealthCheckStatus());
177 Assert.assertEquals("OK", hci.getDescription());
181 public void testGetPortalHealthCheckFailureMissingConfig() throws Exception{
182 PortalHealthCheckBuilder testSubject = new PortalHealthCheckBuilder();
183 testSubject.init(null);
184 HealthCheckInfo hci = testSubject.getHealthCheckInfo();
185 Assert.assertEquals("PORTAL", hci.getHealthCheckComponent());
186 Assert.assertEquals(HealthCheckInfo.HealthCheckStatus.DOWN, hci.getHealthCheckStatus());
187 Assert.assertEquals("PORTAL health check configuration is missing", hci.getDescription());
192 public void testGetPortalHealthCheckFailureErrorResponse() throws HttpExecuteException, CipherUtilException {
193 PortalHealthCheckBuilder testSubject = spy(PortalHealthCheckBuilder.class);
194 String healthCheckURL = testSubject.buildPortalHealthCheckUrl();
196 // when(testSubject.getStatusCode(healthCheckURL,timeout)).thenReturn(404);
197 doReturn(404).when(testSubject).getStatusCode(eq(healthCheckURL), eq(timeout));
198 testSubject.init(testSubject.getConfiguration());
199 testSubject.runTask();
200 HealthCheckInfo hci = testSubject.getHealthCheckInfo();
201 Assert.assertEquals("PORTAL", hci.getHealthCheckComponent());
202 Assert.assertEquals(HealthCheckInfo.HealthCheckStatus.DOWN, hci.getHealthCheckStatus());
203 Assert.assertEquals("PORTAL responded with 404 status code", hci.getDescription());
207 public void testGetPortalHealthCheckFailureNoResponse() throws HttpExecuteException, CipherUtilException {
208 PortalHealthCheckBuilder testSubject = spy(PortalHealthCheckBuilder.class);
209 String healthCheckURL = testSubject.buildPortalHealthCheckUrl();
211 // when(testSubject.getStatusCode(healthCheckURL, timeout)).thenThrow(HttpExecuteException.class);
212 doThrow(HttpExecuteException.class).when(testSubject).getStatusCode(eq(healthCheckURL), eq(timeout));
213 testSubject.init(testSubject.getConfiguration());
214 testSubject.runTask();
215 HealthCheckInfo hci = testSubject.getHealthCheckInfo();
216 Assert.assertEquals("PORTAL", hci.getHealthCheckComponent());
217 Assert.assertEquals(HealthCheckInfo.HealthCheckStatus.DOWN, hci.getHealthCheckStatus());
218 Assert.assertEquals("PORTAL is not available", hci.getDescription());
222 public void testGetDcaeHealthCheck() throws Exception {
223 HealthCheckBusinessLogic testSubject;
224 List<HealthCheckInfo> healthCheckInfos = new LinkedList<>();
227 testSubject = createTestSubject();
228 String url = testSubject.buildDcaeHealthCheckUrl();
229 Deencapsulation.invoke(testSubject, "getHostedComponentsBeHealthCheck", HC_COMPONENT_DCAE, url);
233 public void testGetHostedComponentsBeHealthCheck() throws Exception {
234 HealthCheckBusinessLogic testSubject;
235 String componentName = "mock";
236 String healthCheckUrl = "mock";
238 testSubject = createTestSubject();
239 Deencapsulation.invoke(testSubject, "getHostedComponentsBeHealthCheck", componentName, healthCheckUrl);
242 testSubject = createTestSubject();
244 Deencapsulation.invoke(testSubject, "getHostedComponentsBeHealthCheck", componentName, healthCheckUrl);
248 public void testDestroy() throws Exception {
249 HealthCheckBusinessLogic testSubject;
252 testSubject = createTestSubject();
253 Deencapsulation.invoke(testSubject, "destroy");
257 public void testLogAlarm() throws Exception {
258 HealthCheckBusinessLogic testSubject;
259 String componentChangedMsg = "mock";
262 testSubject = createTestSubject();
263 Deencapsulation.invoke(testSubject, "logAlarm", componentChangedMsg);
267 public void testGetSiteMode() throws Exception {
268 HealthCheckBusinessLogic testSubject;
271 testSubject = createTestSubject();
272 testSubject.getSiteMode();
276 public void testAnyStatusChanged() throws Exception {
277 HealthCheckBusinessLogic testSubject;
278 List<HealthCheckInfo> beHealthCheckInfos = null;
279 List<HealthCheckInfo> prevBeHealthCheckInfos = null;
283 testSubject = createTestSubject();
284 beHealthCheckInfos = null;
285 prevBeHealthCheckInfos = null;
286 result = testSubject.anyStatusChanged(beHealthCheckInfos, prevBeHealthCheckInfos);
287 Assert.assertEquals(false, result);
290 testSubject = createTestSubject();
291 prevBeHealthCheckInfos = null;
292 beHealthCheckInfos = null;
293 result = testSubject.anyStatusChanged(beHealthCheckInfos, prevBeHealthCheckInfos);
294 Assert.assertEquals(false, result);
297 testSubject = createTestSubject();
298 beHealthCheckInfos = null;
299 prevBeHealthCheckInfos = null;
300 result = testSubject.anyStatusChanged(beHealthCheckInfos, prevBeHealthCheckInfos);
301 Assert.assertEquals(false, result);
304 testSubject = createTestSubject();
305 prevBeHealthCheckInfos = null;
306 beHealthCheckInfos = null;
307 result = testSubject.anyStatusChanged(beHealthCheckInfos, prevBeHealthCheckInfos);
308 Assert.assertEquals(false, result);
312 public void testBuildOnBoardingHealthCheckUrl() throws Exception {
313 HealthCheckBusinessLogic testSubject;
316 testSubject = createTestSubject();
317 Deencapsulation.invoke(testSubject, "buildOnBoardingHealthCheckUrl");
321 public void testBuildDcaeHealthCheckUrl() throws Exception {
322 HealthCheckBusinessLogic testSubject;
325 testSubject = createTestSubject();
326 Deencapsulation.invoke(testSubject, "buildDcaeHealthCheckUrl");