diff options
author | ChrisC <cc697w@intl.att.com> | 2017-01-31 11:40:03 +0100 |
---|---|---|
committer | ChrisC <cc697w@intl.att.com> | 2017-01-31 12:59:33 +0100 |
commit | 025301d08b061482c1f046d562bf017c8cbcfe8d (patch) | |
tree | 68a2a549736c9bf0f7cd4e71c76e40ef7e2606f2 /status-control/src/test/java/org/openecomp/mso/HealthCheckUtilsTest.java | |
parent | 2754ad52f833278a5c925bd788a16d1dce16a598 (diff) |
Initial OpenECOMP MSO commit
Change-Id: Ia6a7574859480717402cc2f22534d9973a78fa6d
Signed-off-by: ChrisC <cc697w@intl.att.com>
Diffstat (limited to 'status-control/src/test/java/org/openecomp/mso/HealthCheckUtilsTest.java')
-rw-r--r-- | status-control/src/test/java/org/openecomp/mso/HealthCheckUtilsTest.java | 300 |
1 files changed, 300 insertions, 0 deletions
diff --git a/status-control/src/test/java/org/openecomp/mso/HealthCheckUtilsTest.java b/status-control/src/test/java/org/openecomp/mso/HealthCheckUtilsTest.java new file mode 100644 index 0000000000..712cdb2ce6 --- /dev/null +++ b/status-control/src/test/java/org/openecomp/mso/HealthCheckUtilsTest.java @@ -0,0 +1,300 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - MSO + * ================================================================================ + * Copyright (C) 2017 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.mso; + + +import org.openecomp.mso.logger.MsoLogger; +import org.openecomp.mso.properties.MsoJavaProperties; +import org.openecomp.mso.requestsdb.RequestsDatabase; +import org.apache.http.HttpStatus; +import org.apache.http.HttpVersion; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.message.BasicStatusLine; +import org.junit.BeforeClass; +import org.junit.Test; +import org.mockito.Mockito; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.any; + +/** + */ +public class HealthCheckUtilsTest { + + private static HealthCheckUtils utils; + private static String port = "8080"; + private static String ip1 = "localhost"; + private static String ip2 = "192.3.2.1"; + private static String iptest = "test/"; + private static String apihUrl1 = "/api/healthcheck"; + private static String apihUrl2 = "/api/healthcheck2"; + private static String bpmnUrl1 = "/bpmn/healthcheck"; + private static String raUrl1 = "/tenants/healthcheck"; + private static String raUrl2 = "/vnf/healthcheck"; + private static String raUrl3 = "/sdnc/healthcheck"; + private static MsoJavaProperties properties; + private static String sslEnable = "false"; + private static CloseableHttpClient client; + private static CloseableHttpResponse nokRes, okRes; + + @BeforeClass + public static final void prepareMockvalues() { + utils = Mockito.mock(HealthCheckUtils.class); + client = Mockito.mock(CloseableHttpClient.class); + nokRes = Mockito.mock(CloseableHttpResponse.class); + okRes = Mockito.mock(CloseableHttpResponse.class); + Mockito.when(nokRes.getStatusLine()).thenReturn(new BasicStatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_SERVICE_UNAVAILABLE, "FINE!"));; + Mockito.when(okRes.getStatusLine()).thenReturn(new BasicStatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "FINE!")); + + properties = new MsoJavaProperties(); + properties.setProperty("server-port", port); + properties.setProperty("ssl-enable", sslEnable); + properties.setProperty("apih-load-balancer", ip1); + properties.setProperty("apih-healthcheck-urn",apihUrl1 + "," + apihUrl2); + properties.setProperty("camunda-load-balancer",ip1); + properties.setProperty("camunda-healthcheck-urn",bpmnUrl1); + properties.setProperty("jra-load-balancer",ip1); + properties.setProperty("jra-healthcheck-urn",raUrl1 + "," + raUrl2 + "," + raUrl3); + properties.setProperty("apih-nodehealthcheck-urn", apihUrl1); + properties.setProperty("camunda-nodehealthcheck-urn", bpmnUrl1); + properties.setProperty("jra-nodehealthcheck-urn", raUrl1); + + Mockito.when(utils.loadTopologyProperties()).thenReturn(properties); + Mockito.when(utils.verifyNodeHealthCheck(HealthCheckUtils.NodeType.APIH, null)).thenCallRealMethod(); + Mockito.when(utils.verifyNodeHealthCheck(HealthCheckUtils.NodeType.RA, null)).thenCallRealMethod(); + Mockito.when(utils.verifyGlobalHealthCheck(true, null)).thenCallRealMethod(); + Mockito.when(utils.verifyGlobalHealthCheck(false, null)).thenCallRealMethod(); + + Mockito.when(utils.getFinalUrl (ip1, port, raUrl1, sslEnable)).thenCallRealMethod(); + Mockito.when(utils.getFinalUrl (ip1, port, raUrl1, null)).thenCallRealMethod(); + Mockito.when(utils.getFinalUrl (ip1, port, raUrl1, "true")).thenCallRealMethod(); + Mockito.when(utils.getFinalUrl (ip1, port, raUrl1, "otherValue")).thenCallRealMethod(); + Mockito.when(utils.getFinalUrl (ip1, port, raUrl1, "True")).thenCallRealMethod(); + Mockito.when(utils.getFinalUrl (ip1, port, raUrl1, "TRUE")).thenCallRealMethod(); + Mockito.when(utils.getFinalUrl (ip1, null, raUrl1, null)).thenCallRealMethod(); + Mockito.when(utils.getFinalUrl (iptest, null, raUrl1, null)).thenCallRealMethod(); + + System.setProperty("jboss.qualified.host.name", ip1); + } + + @Test + public final void testVerifyNodeHealthCheck () { + Mockito.when (utils.verifyLocalHealth(ip1, port, apihUrl1, sslEnable, null)).thenReturn(true); + Mockito.when (utils.verifyLocalHealth(ip1, port, apihUrl2, sslEnable, null)).thenReturn(true); + Mockito.when (utils.verifyLocalHealth(ip2, port, apihUrl2, sslEnable, null)).thenReturn(true); + Mockito.when (utils.verifyLocalHealth(ip2, port, apihUrl1, sslEnable, null)).thenReturn(false); + Mockito.when (utils.verifyLocalHealth(ip1, port, raUrl1, sslEnable, null)).thenReturn(true); + Mockito.when (utils.verifyLocalHealth(ip1, port, raUrl2, sslEnable, null)).thenReturn(false); + Mockito.when (utils.verifyLocalHealth(ip1, port, raUrl3, sslEnable, null)).thenReturn(true); + + assertTrue (utils.verifyNodeHealthCheck (HealthCheckUtils.NodeType.APIH, null)); + assertFalse (utils.verifyNodeHealthCheck (HealthCheckUtils.NodeType.RA, null)); + + Mockito.when (utils.verifyLocalHealth(ip1, port, apihUrl1, sslEnable, null)).thenReturn(false); + Mockito.when (utils.verifyLocalHealth(ip1, port, raUrl2, sslEnable, null)).thenReturn(true); + assertFalse (utils.verifyNodeHealthCheck (HealthCheckUtils.NodeType.APIH, null)); + assertTrue (utils.verifyNodeHealthCheck (HealthCheckUtils.NodeType.RA, null)); + + Mockito.when (utils.verifyLocalHealth(ip2, port, apihUrl1, sslEnable, null)).thenReturn(true); + assertFalse (utils.verifyNodeHealthCheck (HealthCheckUtils.NodeType.APIH, null)); + assertTrue (utils.verifyNodeHealthCheck (HealthCheckUtils.NodeType.RA, null)); + + } + + @Test + public final void testVerifyGlobalHealthCheckBPMN () { + + // healthcheck of bpmn returns false + Mockito.when(utils.verifyLocalHealth(ip1, null, bpmnUrl1, null, null)).thenReturn(false); + Mockito.when(utils.verifyLocalHealth(ip1, null, apihUrl1, null, null)).thenReturn(true); + Mockito.when(utils.verifyLocalHealth(ip1, null, raUrl1, null, null)).thenReturn(true); + + // verify BPMN healthcheck + assertFalse(utils.verifyGlobalHealthCheck (true, null)); + + // do not verify BPMN healthcheck + assertTrue(utils.verifyGlobalHealthCheck (false, null)); + + Mockito.when(utils.verifyLocalHealth(ip1, null, bpmnUrl1, null, null)).thenReturn(true); + assertTrue(utils.verifyGlobalHealthCheck (true, null)); + } + + @Test + public final void testVerifyGlobalHealthCheckAPIH () { + + Mockito.when(utils.verifyLocalHealth(ip1, null, apihUrl1, null, null)).thenReturn(true); + Mockito.when(utils.verifyLocalHealth(ip1, null, raUrl1, null, null)).thenReturn(true); + Mockito.when(utils.verifyLocalHealth(ip1, null, bpmnUrl1, null, null)).thenReturn(true); + assertTrue(utils.verifyGlobalHealthCheck (true, null)); + + Mockito.when(utils.verifyLocalHealth(ip1, null, apihUrl1, null, null)).thenReturn(false); + assertFalse(utils.verifyGlobalHealthCheck (true, null)); + } + + @Test + public final void testVerifyGlobalHealthCheckRA () { + // all health check apis returns true + Mockito.when(utils.verifyLocalHealth(ip1, null, apihUrl1, null, null)).thenReturn(true); + Mockito.when(utils.verifyLocalHealth(ip1, null, raUrl1, null, null)).thenReturn(true); + Mockito.when(utils.verifyLocalHealth(ip1, null, bpmnUrl1, null, null)).thenReturn(true); + assertTrue(utils.verifyGlobalHealthCheck (true, null)); + + + // 3rd ra api return false; others return true + Mockito.when(utils.verifyLocalHealth(ip1, null, raUrl1, null, null)).thenReturn(false); + assertFalse(utils.verifyGlobalHealthCheck (true, null)); + } + + @Test + public final void testGetFinalUrl () { + String finalUrl1 = utils.getFinalUrl (ip1, port, raUrl1, sslEnable); + assertTrue (finalUrl1.equals ("http://" + ip1 + ":" + port + raUrl1)); + + String finalUrl2 = utils.getFinalUrl (ip1, port, raUrl1, "true"); + assertTrue (finalUrl2.equals ("https://" + ip1 + ":" + port + raUrl1)); + + String finalUrl3 = utils.getFinalUrl (ip1, port, raUrl1, null); + assertTrue (finalUrl3.equals ("http://" + ip1 + ":" + port + raUrl1)); + + String finalUrl4 = utils.getFinalUrl (ip1, port, raUrl1, "otherValue"); + assertTrue (finalUrl4.equals ("http://" + ip1 + ":" + port + raUrl1)); + + String finalUrl5 = utils.getFinalUrl (ip1, port, raUrl1, "True"); + assertTrue (finalUrl5.equals ("https://" + ip1 + ":" + port + raUrl1)); + + String finalUrl6 = utils.getFinalUrl (ip1, port, raUrl1, "TRUE"); + assertTrue (finalUrl6.equals ("https://" + ip1 + ":" + port + raUrl1)); + + String finalUrl7 = utils.getFinalUrl (ip1, null, raUrl1, null); + assertTrue (finalUrl7.equals (ip1 + raUrl1)); + + String finalUrl8 = utils.getFinalUrl (iptest, null, raUrl1, null); + assertTrue (finalUrl8.equals ("test" + raUrl1)); + } + + @Test + public final void testVerifyLocalHealth() { + HealthCheckUtils tempUtil = Mockito.mock(HealthCheckUtils.class); + + Mockito.when(tempUtil.verifyLocalHealth(ip1, port, apihUrl1, sslEnable, null)).thenCallRealMethod (); + Mockito.when(tempUtil.getFinalUrl (ip1, port, apihUrl1, sslEnable)).thenCallRealMethod (); + Mockito.when(tempUtil.getHttpClient()).thenReturn (client); + + try { + Mockito.when (client.execute (any(HttpUriRequest.class))).thenReturn (okRes); + Boolean res1 = (Boolean)invokeProtectedMethod(tempUtil, "verifyLocalHealth", ip1, port, apihUrl1, sslEnable, null); + assertTrue(res1); + + Mockito.when (client.execute (any(HttpUriRequest.class))).thenReturn (nokRes); + Boolean res2 = (Boolean)invokeProtectedMethod(tempUtil, "verifyLocalHealth", ip1, port, apihUrl1, sslEnable, null); + assertFalse(res2); + + } catch (Exception e) { + e.printStackTrace (); + } + + } + + + @Test + public final void NullityCheck () { + Mockito.when(utils.verifyLocalHealth(ip1, null, bpmnUrl1, null, null)).thenReturn(true); + Mockito.when(utils.verifyLocalHealth(ip1, null, apihUrl1, null, null)).thenReturn(true); + Mockito.when(utils.verifyLocalHealth(ip1, null, raUrl1, null, null)).thenReturn(true); + + assertTrue (utils.verifyGlobalHealthCheck (true, null)); + + // mising server-port parameter + MsoJavaProperties newProperties1 = new MsoJavaProperties(); + Mockito.when(utils.loadTopologyProperties()).thenReturn(newProperties1); + + newProperties1.setProperty("apih-load-balancer", ip1); + newProperties1.setProperty("apih-nodehealthcheck-urn",apihUrl1); + newProperties1.setProperty("camunda-load-balancer",ip1); + newProperties1.setProperty("camunda-nodehealthcheck-urn",bpmnUrl1); + newProperties1.setProperty("jra-load-balancer",ip1); + newProperties1.setProperty("jra-nodehealthcheck-urn",raUrl1); + + assertFalse (utils.verifyGlobalHealthCheck (true, null)); + + // mising apih-server-list parameter + MsoJavaProperties newProperties2 = new MsoJavaProperties(); + Mockito.when(utils.loadTopologyProperties()).thenReturn(newProperties2); + + newProperties2.setProperty("server-port", port); + newProperties1.setProperty("apih-nodehealthcheck-urn",apihUrl1); + newProperties1.setProperty("camunda-load-balancer",ip1); + newProperties1.setProperty("camunda-nodehealthcheck-urn",bpmnUrl1); + newProperties1.setProperty("jra-load-balancer",ip1); + newProperties1.setProperty("jra-nodehealthcheck-urn",raUrl1); + + assertFalse (utils.verifyGlobalHealthCheck (true, null)); + + // mising jra-healthcheck-urn parameter + MsoJavaProperties newProperties3 = new MsoJavaProperties(); + Mockito.when(utils.loadTopologyProperties()).thenReturn(newProperties3); + + newProperties3.setProperty("server-port", port); + newProperties1.setProperty("apih-load-balancer", ip1); + newProperties1.setProperty("apih-nodehealthcheck-urn",apihUrl1); + newProperties1.setProperty("camunda-load-balancer",ip1); + newProperties1.setProperty("camunda-nodehealthcheck-urn",bpmnUrl1); + newProperties1.setProperty("jra-load-balancer",ip1); + newProperties3.setProperty("jra-server-list",ip1); + + assertFalse (utils.verifyGlobalHealthCheck (true, null)); + + Mockito.when(utils.loadTopologyProperties()).thenReturn(properties); + } + + // User reflection to invoke to avoid change the publicity of the method + private static Object invokeProtectedMethod (HealthCheckUtils tempUtil, String methodName, String arg1, String arg2, String arg3, String arg4, String arg5) { + Method method; + try { + method = HealthCheckUtils.class.getDeclaredMethod(methodName, String.class, String.class, String.class, String.class, String.class); + method.setAccessible(true); + return method.invoke(tempUtil, arg1, arg2, arg3, arg4, arg5); + } catch (NoSuchMethodException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (InvocationTargetException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } +} |