diff options
Diffstat (limited to 'feature-healthcheck/src/test/java/org/onap/policy/drools/healthcheck/HealthCheckTest.java')
-rw-r--r-- | feature-healthcheck/src/test/java/org/onap/policy/drools/healthcheck/HealthCheckTest.java | 283 |
1 files changed, 16 insertions, 267 deletions
diff --git a/feature-healthcheck/src/test/java/org/onap/policy/drools/healthcheck/HealthCheckTest.java b/feature-healthcheck/src/test/java/org/onap/policy/drools/healthcheck/HealthCheckTest.java index 7040f6d3..01f5063d 100644 --- a/feature-healthcheck/src/test/java/org/onap/policy/drools/healthcheck/HealthCheckTest.java +++ b/feature-healthcheck/src/test/java/org/onap/policy/drools/healthcheck/HealthCheckTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP * ================================================================================ - * Copyright (C) 2018, 2021 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2018, 2021-2022 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,94 +22,27 @@ package org.onap.policy.drools.healthcheck; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import java.net.HttpURLConnection; -import java.util.Arrays; import java.util.Collections; import java.util.List; -import java.util.Properties; -import javax.ws.rs.core.Response; -import org.junit.Before; import org.junit.Test; -import org.onap.policy.common.endpoints.http.client.HttpClient; -import org.onap.policy.common.endpoints.http.client.HttpClientFactory; -import org.onap.policy.common.endpoints.http.server.HttpServletServer; -import org.onap.policy.common.endpoints.http.server.HttpServletServerFactory; import org.onap.policy.drools.healthcheck.HealthCheck.Report; import org.onap.policy.drools.healthcheck.HealthCheck.Reports; -import org.onap.policy.drools.system.PolicyEngine; public class HealthCheckTest { - - private static final int RPT_CODE = 100; + private static final long RPT_CODE = 100; private static final String RPT_MSG = "report-message"; private static final String RPT_NAME = "report-name"; private static final String RPT_URL = "report-url"; - private static final String EXPECTED = "expected exception"; - - private static final String CLIENT_NAME1 = "name-a"; - private static final String CLIENT_URL1 = "url-a"; - private static final String CLIENT_NAME2 = "name-b"; - private static final String CLIENT_URL2 = "url-b"; - private static final String CLIENT_NAME3 = "name-c"; - private static final String CLIENT_URL3 = "url-c"; - - private Properties properties; - private HttpServletServerFactory servletFactory; - private HttpServletServer server1; - private HttpServletServer server2; - private HttpClientFactory clientFactory; - private HttpClient client1; - private HttpClient client2; - private HttpClient client3; - private List<HttpServletServer> servers; - private List<HttpClient> clients; - private PolicyEngine engineMgr; - private HealthCheckManager monitor; - - /** - * Initializes the object to be tested. - * - * @throws Exception if an error occurs - */ - @Before - public void setUp() throws Exception { - properties = new Properties(); - servletFactory = mock(HttpServletServerFactory.class); - server1 = mock(HttpServletServer.class); - server2 = mock(HttpServletServer.class); - clientFactory = mock(HttpClientFactory.class); - client1 = mock(HttpClient.class); - client2 = mock(HttpClient.class); - client3 = mock(HttpClient.class); - servers = Arrays.asList(server1, server2); - clients = Arrays.asList(client1, client2, client3); - engineMgr = mock(PolicyEngine.class); - - when(client1.getName()).thenReturn(CLIENT_NAME1); - when(client1.getBaseUrl()).thenReturn(CLIENT_URL1); - when(client2.getName()).thenReturn(CLIENT_NAME2); - when(client2.getBaseUrl()).thenReturn(CLIENT_URL2); - when(client3.getName()).thenReturn(CLIENT_NAME3); - when(client3.getBaseUrl()).thenReturn(CLIENT_URL3); - when(servletFactory.build(properties)).thenReturn(servers); - when(clientFactory.build(properties)).thenReturn(clients); - when(engineMgr.isAlive()).thenReturn(true); - - monitor = new HealthCheckMonitorImpl(); - } @Test public void testReport() { Report rpt = new Report(); - // toString should work with un-populated data assertNotNull(rpt.toString()); rpt.setCode(RPT_CODE); @@ -117,19 +50,26 @@ public class HealthCheckTest { rpt.setMessage(RPT_MSG); rpt.setName(RPT_NAME); rpt.setUrl(RPT_URL); + rpt.setEndTime(); assertEquals(RPT_CODE, rpt.getCode()); - assertEquals(true, rpt.isHealthy()); + assertTrue(rpt.isHealthy()); assertEquals(RPT_MSG, rpt.getMessage()); assertEquals(RPT_NAME, rpt.getName()); assertEquals(RPT_URL, rpt.getUrl()); + assertNotEquals(0L, rpt.getStartTime()); + assertNotEquals(0L, rpt.getEndTime()); + assertEquals(rpt.getEndTime() - rpt.getStartTime(), rpt.getElapsedTime()); + // flip the flag rpt.setHealthy(false); - assertEquals(false, rpt.isHealthy()); + assertFalse(rpt.isHealthy()); // toString should work with populated data assertNotNull(rpt.toString()); + + assertEquals(rpt, new Report(rpt)); } @Test @@ -152,202 +92,11 @@ public class HealthCheckTest { // toString should work with populated data assertNotNull(reports.toString()); - } - - @Test - public void testHealthCheckMonitor_HealthCheck() { - monitor.start(); - - // first client is healthy - Response resp = mock(Response.class); - when(resp.getStatus()).thenReturn(HttpURLConnection.HTTP_OK); - when(resp.readEntity(String.class)).thenReturn(RPT_MSG); - when(client1.get()).thenReturn(resp); - - // second client throws an exception - when(client2.get()).thenThrow(new RuntimeException(EXPECTED)); - - // third client is not healthy - resp = mock(Response.class); - when(resp.getStatus()).thenReturn(HttpURLConnection.HTTP_INTERNAL_ERROR); - when(resp.readEntity(String.class)).thenReturn(RPT_NAME); - when(client3.get()).thenReturn(resp); - - Reports reports = monitor.healthCheck(); - assertNotNull(reports); - assertEquals(4, reports.getDetails().size()); - assertFalse(reports.isHealthy()); - - int index = 0; - - Report report = reports.getDetails().get(index++); - assertEquals(true, report.isHealthy()); - assertEquals("PDP-D", report.getName()); - assertEquals("self", report.getUrl()); - assertEquals("alive", report.getMessage()); - assertEquals(HttpURLConnection.HTTP_OK, report.getCode()); - - report = reports.getDetails().get(index++); - assertEquals(true, report.isHealthy()); - assertEquals(client1.getName(), report.getName()); - assertEquals(client1.getBaseUrl(), report.getUrl()); - assertEquals(RPT_MSG, report.getMessage()); - assertEquals(HttpURLConnection.HTTP_OK, report.getCode()); - - report = reports.getDetails().get(index++); - assertEquals(false, report.isHealthy()); - assertEquals(client2.getName(), report.getName()); - assertEquals(client2.getBaseUrl(), report.getUrl()); - - report = reports.getDetails().get(index++); - assertEquals(false, report.isHealthy()); - assertEquals(client3.getName(), report.getName()); - assertEquals(client3.getBaseUrl(), report.getUrl()); - assertEquals(RPT_NAME, report.getMessage()); - assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, report.getCode()); - - // indicate that engine is no longer healthy and re-run health check - when(engineMgr.isAlive()).thenReturn(false); - - reports = monitor.healthCheck(); - report = reports.getDetails().get(0); - - assertEquals(false, report.isHealthy()); - assertEquals("not alive", report.getMessage()); - assertEquals(500, report.getCode()); - } - - @Test - public void testHealthCheckMonitor_Start() { - // arrange for one server to throw an exception - when(server1.start()).thenThrow(new RuntimeException(EXPECTED)); - - assertTrue(monitor.start()); - - verify(server1).start(); - verify(server2).start(); - - /* - * Generate exception during building. - */ - - // new monitor - monitor = new HealthCheckMonitorImpl() { - @Override - protected HttpServletServerFactory getServerFactory() { - throw new RuntimeException(EXPECTED); - } - }; - - assertFalse(monitor.start()); - } - - @Test - public void testHealthCheckMonitor_Stop() { - monitor.start(); - - // arrange for one server and one client to throw an exception - when(server1.stop()).thenThrow(new RuntimeException(EXPECTED)); - when(client2.stop()).thenThrow(new RuntimeException(EXPECTED)); - - assertTrue(monitor.stop()); - - verify(server1).stop(); - verify(server2).stop(); - verify(client1).stop(); - verify(client2).stop(); - verify(client3).stop(); - } - - @Test - public void testHealthCheckMonitor_Shutdown() { - monitor.start(); - monitor.shutdown(); - - // at least one "stop" should have been called - verify(server1).stop(); - } - - @Test - public void testHealthCheckMonitor_IsAlive() { - assertFalse(monitor.isAlive()); - - monitor.start(); - assertTrue(monitor.isAlive()); - } - - @Test - public void testHealthCheckMonitor_GetServers_GetClients() { - monitor.start(); - assertEquals(servers, monitor.getServers()); - assertEquals(clients, monitor.getClients()); - } - - @Test - public void testHealthCheckMonitor_GetHttpBody() { - Response response = mock(Response.class); - when(response.readEntity(String.class)).thenReturn(RPT_MSG); - assertEquals(RPT_MSG, monitor.getHttpBody(response, client1)); - - // readEntity() throws an exception - when(response.readEntity(String.class)).thenThrow(new RuntimeException(EXPECTED)); - assertEquals(null, monitor.getHttpBody(response, client1)); - } - - @Test - public void testHealthCheckMonitor_StartServer() { - monitor.startServer(server1); - verify(server1).start(); - - // force start() to throw an exception - monitor should still work - when(server1.start()).thenThrow(new RuntimeException(EXPECTED)); - monitor.startServer(server1); - } - - @Test - public void testHealthCheckMonitor_ToString() { - assertTrue(monitor.toString().startsWith("HealthCheckManager(")); - } - - @Test - public void testHealthCheckMonitor_GetEngineManager() { - assertNotNull(new HealthCheckManager().getEngineManager()); - } - - @Test - public void testHealthCheckMonitor_GetServerFactory() { - assertNotNull(new HealthCheckManager().getServerFactory()); - } - - @Test - public void testHealthCheckMonitor_GetClientFactory() { - assertNotNull(new HealthCheckManager().getClientFactory()); - } - - /** - * Monitor with overrides. - */ - private class HealthCheckMonitorImpl extends HealthCheckManager { - - @Override - protected PolicyEngine getEngineManager() { - return engineMgr; - } - - @Override - protected HttpServletServerFactory getServerFactory() { - return servletFactory; - } - - @Override - protected HttpClientFactory getClientFactory() { - return clientFactory; - } - @Override - protected Properties getPersistentProperties(String propertyName) { - return properties; - } + assertNotEquals(0L, reports.getStartTime()); + reports.setEndTime(); + assertNotEquals(0L, reports.getEndTime()); + assertEquals(reports.getEndTime() - reports.getStartTime(), reports.getElapsedTime()); } } |