Catalog alignment
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / health / HealthCheckBusinessLogicHealthTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
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.openecomp.sdc.be.components.health;
22
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;
38
39 import java.util.LinkedList;
40 import java.util.List;
41
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;
50
51 @RunWith(MockitoJUnitRunner.class)
52 public class HealthCheckBusinessLogicHealthTest extends BeConfDependentTest {
53         private DmaapProducerHealth dmaapProducerHealth = mock(DmaapProducerHealth.class);
54         private HealthCheckInfo dmaapProducerHealthCheckInfo = mock(HealthCheckInfo.class);
55
56         private SwitchoverDetector switchoverDetector;
57
58         private HealthCheckBusinessLogic createTestSubject() {
59
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;
74         }
75
76
77
78         @Before
79         public void beforeTest() {
80                 when(dmaapProducerHealth.getHealthCheckInfo())
81                                 .thenReturn(dmaapProducerHealthCheckInfo);
82         }
83
84         @Test
85         public void testInit() throws Exception {
86                 HealthCheckBusinessLogic testSubject = createTestSubject();
87                 testSubject.init();
88         }
89
90         @Test
91         public void testIsDistributionEngineUp() throws Exception {
92                 HealthCheckBusinessLogic testSubject;
93                 // default test
94                 testSubject = createTestSubject();
95                 testSubject.isDistributionEngineUp();
96         }
97
98         @Test
99         public void testGetBeHealthCheckInfosStatus() throws Exception {
100                 HealthCheckBusinessLogic testSubject;
101
102                 // default test
103                 testSubject = createTestSubject();
104                 testSubject.getBeHealthCheckInfosStatus();
105         }
106
107         @Test
108         public void testGetBeHealthCheckInfos() throws Exception {
109                 HealthCheckBusinessLogic testSubject;
110
111                 // default test
112                 testSubject = createTestSubject();
113                 Deencapsulation.invoke(testSubject, "getBeHealthCheckInfos");
114         }
115
116         @Test
117         public void testGetDmaapHealthCheck() throws Exception {
118                 HealthCheckBusinessLogic testSubject;
119                 List<HealthCheckInfo> healthCheckInfos = new LinkedList<>();
120
121                 // default test
122                 testSubject = createTestSubject();
123                 Deencapsulation.invoke(testSubject, "getDmaapHealthCheck");
124         }
125
126         @Test
127         public void testGetJanusGraphHealthCheck() throws Exception {
128                 HealthCheckBusinessLogic testSubject;
129                 List<HealthCheckInfo> healthCheckInfos = new LinkedList<>();
130
131                 // default test
132                 testSubject = createTestSubject();
133 //              testSubject.getJanusGraphHealthCheck(healthCheckInfos);
134                 healthCheckInfos.add(testSubject.getJanusGraphHealthCheck());
135         }
136
137         @Test
138         public void testGetCassandraHealthCheck() throws Exception {
139                 HealthCheckBusinessLogic testSubject;
140
141                 // default test
142                 testSubject = createTestSubject();
143                 Deencapsulation.invoke(testSubject, "getCassandraHealthCheck");
144         }
145
146         @Test
147         public void testGetDistributionEngineCheck() throws Exception {
148 //              HealthCheckBusinessLogic testSubject;
149                 DistributionEngineClusterHealth testSubject = new DistributionEngineClusterHealth();
150
151                 // default test
152                 Deencapsulation.invoke(testSubject, "getHealthCheckInfo");
153         }
154
155         @Test
156         public void testGetAmdocsHealthCheck() throws Exception {
157                 HealthCheckBusinessLogic testSubject;
158                 List<HealthCheckInfo> healthCheckInfos = new LinkedList<>();
159
160                 // default test
161                 testSubject = createTestSubject();
162                 String url = testSubject.buildOnBoardingHealthCheckUrl();
163                 Deencapsulation.invoke(testSubject, "getHostedComponentsBeHealthCheck", HC_COMPONENT_ON_BOARDING, url);
164         }
165
166         @Test
167         public void testGetPortalHealthCheckSuccess() throws Exception {
168                 PortalHealthCheckBuilder testSubject = spy(PortalHealthCheckBuilder.class);
169                 String healthCheckURL = testSubject.buildPortalHealthCheckUrl();
170                 int timeout = 3000;
171                 doReturn(200).when(testSubject).getStatusCode(eq(healthCheckURL), eq(timeout));
172                 testSubject.init();
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());
178         }
179
180         @Test
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());
188         }
189
190
191         @Test
192         public void testGetPortalHealthCheckFailureErrorResponse() throws HttpExecuteException, CipherUtilException {
193                 PortalHealthCheckBuilder testSubject = spy(PortalHealthCheckBuilder.class);
194                 String healthCheckURL = testSubject.buildPortalHealthCheckUrl();
195                 int timeout = 3000;
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());
204         }
205
206         @Test
207         public void testGetPortalHealthCheckFailureNoResponse() throws HttpExecuteException, CipherUtilException {
208                 PortalHealthCheckBuilder testSubject = spy(PortalHealthCheckBuilder.class);
209                 String healthCheckURL = testSubject.buildPortalHealthCheckUrl();
210                 int timeout = 3000;
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());
219         }
220
221         @Test
222         public void testGetDcaeHealthCheck() throws Exception {
223                 HealthCheckBusinessLogic testSubject;
224                 List<HealthCheckInfo> healthCheckInfos = new LinkedList<>();
225
226                 // default test
227                 testSubject = createTestSubject();
228                 String url = testSubject.buildDcaeHealthCheckUrl();
229                 Deencapsulation.invoke(testSubject, "getHostedComponentsBeHealthCheck", HC_COMPONENT_DCAE, url);
230         }
231
232         @Test
233         public void testGetHostedComponentsBeHealthCheck() throws Exception {
234                 HealthCheckBusinessLogic testSubject;
235                 String componentName = "mock";
236                 String healthCheckUrl = "mock";
237                 // test 1
238                 testSubject = createTestSubject();
239                 Deencapsulation.invoke(testSubject, "getHostedComponentsBeHealthCheck", componentName, healthCheckUrl);
240
241                 // test 2
242                 testSubject = createTestSubject();
243                 healthCheckUrl = "";
244                 Deencapsulation.invoke(testSubject, "getHostedComponentsBeHealthCheck", componentName, healthCheckUrl);
245         }
246
247         @Test
248         public void testDestroy() throws Exception {
249                 HealthCheckBusinessLogic testSubject;
250
251                 // default test
252                 testSubject = createTestSubject();
253                 Deencapsulation.invoke(testSubject, "destroy");
254         }
255
256         @Test
257         public void testLogAlarm() throws Exception {
258                 HealthCheckBusinessLogic testSubject;
259                 String componentChangedMsg = "mock";
260
261                 // default test
262                 testSubject = createTestSubject();
263                 Deencapsulation.invoke(testSubject, "logAlarm", componentChangedMsg);
264         }
265
266         @Test
267         public void testGetSiteMode() throws Exception {
268                 HealthCheckBusinessLogic testSubject;
269
270                 // default test
271                 testSubject = createTestSubject();
272                 testSubject.getSiteMode();
273         }
274
275         @Test
276         public void testAnyStatusChanged() throws Exception {
277                 HealthCheckBusinessLogic testSubject;
278                 List<HealthCheckInfo> beHealthCheckInfos = null;
279                 List<HealthCheckInfo> prevBeHealthCheckInfos = null;
280                 boolean result;
281
282                 // test 1
283                 testSubject = createTestSubject();
284                 beHealthCheckInfos = null;
285                 prevBeHealthCheckInfos = null;
286                 result = testSubject.anyStatusChanged(beHealthCheckInfos, prevBeHealthCheckInfos);
287                 Assert.assertEquals(false, result);
288
289                 // test 2
290                 testSubject = createTestSubject();
291                 prevBeHealthCheckInfos = null;
292                 beHealthCheckInfos = null;
293                 result = testSubject.anyStatusChanged(beHealthCheckInfos, prevBeHealthCheckInfos);
294                 Assert.assertEquals(false, result);
295
296                 // test 3
297                 testSubject = createTestSubject();
298                 beHealthCheckInfos = null;
299                 prevBeHealthCheckInfos = null;
300                 result = testSubject.anyStatusChanged(beHealthCheckInfos, prevBeHealthCheckInfos);
301                 Assert.assertEquals(false, result);
302
303                 // test 4
304                 testSubject = createTestSubject();
305                 prevBeHealthCheckInfos = null;
306                 beHealthCheckInfos = null;
307                 result = testSubject.anyStatusChanged(beHealthCheckInfos, prevBeHealthCheckInfos);
308                 Assert.assertEquals(false, result);
309         }
310
311         @Test
312         public void testBuildOnBoardingHealthCheckUrl() throws Exception {
313                 HealthCheckBusinessLogic testSubject;
314
315                 // default test
316                 testSubject = createTestSubject();
317                 Deencapsulation.invoke(testSubject, "buildOnBoardingHealthCheckUrl");
318         }
319
320         @Test
321         public void testBuildDcaeHealthCheckUrl() throws Exception {
322                 HealthCheckBusinessLogic testSubject;
323
324                 // default test
325                 testSubject = createTestSubject();
326                 Deencapsulation.invoke(testSubject, "buildDcaeHealthCheckUrl");
327         }
328 }