diff options
author | Benjamin, Max (mb388a) <mb388a@us.att.com> | 2018-07-30 15:56:09 -0400 |
---|---|---|
committer | Benjamin, Max (mb388a) <mb388a@us.att.com> | 2018-07-31 11:09:25 -0400 |
commit | 5a6a6de6f1a26a1897e4917a0df613e25a24eb70 (patch) | |
tree | 59a968f27b4b603aacc9d5e7b51fb598aeec5321 /status-control | |
parent | b6dc38501f3b746426b42d9de4cc883d894149e8 (diff) |
Containerization feature of SO
Change-Id: I95381232eeefcd247a66a5cec370a8ce1c288e18
Issue-ID: SO-670
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
Diffstat (limited to 'status-control')
5 files changed, 0 insertions, 728 deletions
diff --git a/status-control/pom.xml b/status-control/pom.xml deleted file mode 100644 index 9174f2118b..0000000000 --- a/status-control/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so</groupId>
- <artifactId>so</artifactId>
- <version>1.2.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>status-control</artifactId>
- <name>MSO Status Control module</name>
- <description>Contains classes to update and query the MSO status per site</description>
-
- <dependencies>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>mso-catalog-db</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>mso-requests-db</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- <scope>provided</scope>
- </dependency>
- </dependencies>
-</project>
diff --git a/status-control/src/main/java/org/openecomp/mso/HealthCheckUtils.java b/status-control/src/main/java/org/openecomp/mso/HealthCheckUtils.java deleted file mode 100644 index b64f5bf232..0000000000 --- a/status-control/src/main/java/org/openecomp/mso/HealthCheckUtils.java +++ /dev/null @@ -1,308 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * 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.db.catalog.CatalogDatabase; -import org.openecomp.mso.logger.MessageEnum; -import org.openecomp.mso.logger.MsoLogger; -import org.openecomp.mso.properties.MsoJavaProperties; -import org.openecomp.mso.properties.MsoPropertiesFactory; -import org.openecomp.mso.requestsdb.RequestsDatabase; -import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; -import org.apache.http.client.config.RequestConfig; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClientBuilder; - -import javax.ws.rs.core.Response; - -public class HealthCheckUtils { - - private static final String HEALTH_CHECK = "HealthCheck"; - private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.GENERAL); - private static final String MSO_PROP_TOPOLOGY = "MSO_PROP_TOPOLOGY"; - private static MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory(); - private static final String CHECK_HTML = "<!DOCTYPE html><html><head><meta charset=\"ISO-8859-1\"><title>Health Check</title></head><body>Application ready</body></html>"; - private static final String NOT_FOUND = "<!DOCTYPE html><html><head><meta charset=\"ISO-8859-1\"><title>Application Not Started</title></head><body>Application not started. Properties file missing or invalid or database Connection failed</body></html>"; - private static final String NOT_HEALTHY = "<!DOCTYPE html><html><head><meta charset=\"ISO-8859-1\"><title>Application Not Started</title></head><body>Application not available or at least one of the sub-modules is not available.</body></html>"; - public static final Response HEALTH_CHECK_RESPONSE = Response.status (HttpStatus.SC_OK) - .entity (CHECK_HTML) - .build (); - public static final Response HEALTH_CHECK_NOK_RESPONSE = Response.status (HttpStatus.SC_SERVICE_UNAVAILABLE) - .entity (NOT_HEALTHY) - . build (); - public static final Response NOT_STARTED_RESPONSE = Response.status (HttpStatus.SC_SERVICE_UNAVAILABLE) - .entity (NOT_FOUND) - .build (); - - public enum NodeType {APIH, RA, BPMN} - - public boolean catalogDBCheck (MsoLogger subMsoLogger, long startTime) { - try(CatalogDatabase catalogDB = CatalogDatabase.getInstance()) { - catalogDB.healthCheck (); - } catch (Exception e) { - subMsoLogger.error(MessageEnum.GENERAL_EXCEPTION, "", HEALTH_CHECK, MsoLogger.ErrorCode.DataError, "Failed to check catalog database", e); - subMsoLogger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, "Exception during healthcheck"); - return false; - } - return true; - } - - public boolean requestDBCheck (MsoLogger subMsoLogger, long startTime) { - try { - (RequestsDatabase.getInstance()).healthCheck (); - } catch (Exception e) { - subMsoLogger.error(MessageEnum.GENERAL_EXCEPTION, "", HEALTH_CHECK, MsoLogger.ErrorCode.DataError, "Failed to check request database", e); - subMsoLogger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.ServiceNotAvailable, "Exception during local healthcheck"); - return false; - } - return true; - } - - public boolean siteStatusCheck(MsoLogger subMsoLogger) { - // Check the Site Status value in DB first, if set to false, return NOK - String site = getProperty("site-name"); - - MsoStatusUtil statusUtil = new MsoStatusUtil (); - if (!statusUtil.getSiteStatus (site)) { - subMsoLogger.debug("This site is currently disabled for maintenance."); - return false; - } - return true; - } - - public boolean configFileCheck (MsoLogger subMsoLogger, long startTime, String propertiesFile) { - if (null != propertiesFile) { - MsoJavaProperties props = loadMsoProperties (propertiesFile); - if (props == null) { - subMsoLogger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.ServiceNotAvailable, "Configuration file can not be loaded"); - return false; - } - } - return true; - } - - - private MsoJavaProperties loadMsoProperties (String fileName) { - MsoJavaProperties msoProperties; - try { - msoProperties = msoPropertiesFactory.getMsoJavaProperties(fileName); - } catch (Exception e) { - msoLogger.error (MessageEnum.LOAD_PROPERTIES_FAIL, fileName, "", HEALTH_CHECK, MsoLogger.ErrorCode.DataError, "Failed to load topology properties", e); - return null; - } - if (msoProperties !=null && msoProperties.size() > 0) { - return msoProperties; - } else { - msoLogger.error (MessageEnum.NO_PROPERTIES, fileName, "", HEALTH_CHECK, MsoLogger.ErrorCode.DataError, "No topology properties"); - return null; - } - } - - protected boolean verifyLocalHealth(String ip, String apiPort, String url, String sslEnabled, String requestId) { - String finalUrl = getFinalUrl(ip, apiPort, url, sslEnabled); - long startTime = System.currentTimeMillis (); - if (null != requestId) { - finalUrl = finalUrl + "?requestId=" + requestId; - } - try { - HttpResponse response; - CloseableHttpClient client = getHttpClient (); - HttpGet get = new HttpGet(finalUrl); - msoLogger.debug("Get url is: " + finalUrl); - response = client.execute(get); - msoLogger.debug("Get response is: " + response); - client.close (); //shut down the connection - if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { - msoLogger.debug("verifyLocalHealth - Successfully communicate with APIH/BPMN/RA"); - return true; - } - msoLogger.debug("verifyLocalHealth - Service not available"); - } catch (Exception e) { - msoLogger.error(MessageEnum.GENERAL_EXCEPTION, "", HEALTH_CHECK, MsoLogger.ErrorCode.UnknownError, "Error in local HealthCheck", e); - msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, "Exception while communicate with APIH/BPMN/RA", url, HEALTH_CHECK, null); - msoLogger.debug("Exception while triggering local health check api:" + finalUrl); - } - return false; - } - - protected CloseableHttpClient getHttpClient () { - // set the connection timeout value to 30 seconds (30000 milliseconds) - RequestConfig.Builder requestBuilder = RequestConfig.custom(); - requestBuilder = requestBuilder.setConnectTimeout(30000); - requestBuilder = requestBuilder.setConnectionRequestTimeout(30000); - HttpClientBuilder builder = HttpClientBuilder.create (); - builder.setDefaultRequestConfig (requestBuilder.build ()); - - return builder.build (); - } - - public MsoJavaProperties loadTopologyProperties() { - MsoJavaProperties msoProperties; - try { - msoProperties = msoPropertiesFactory.getMsoJavaProperties(MSO_PROP_TOPOLOGY); - } catch (Exception e) { - msoLogger.error(MessageEnum.LOAD_PROPERTIES_FAIL, MSO_PROP_TOPOLOGY, "", HEALTH_CHECK, MsoLogger.ErrorCode.DataError, "Not able to load topology properties", e); - return null; - } - - if (msoProperties != null && msoProperties.size() > 0) { - return msoProperties; - } else { - msoLogger.error(MessageEnum.LOAD_PROPERTIES_FAIL, MSO_PROP_TOPOLOGY, "", HEALTH_CHECK, MsoLogger.ErrorCode.DataError, "Not able to load topology properties"); - return null; - } - } - - public boolean verifyNodeHealthCheck (HealthCheckUtils.NodeType type, String requestId) { - // Get info from topology properties file - MsoJavaProperties topologyProp = this.loadTopologyProperties(); - if (null == topologyProp) { - return false; - } - - checkHealthForProperty(topologyProp, "", requestId); - - boolean healthCheck = false; - switch (type) { - case APIH: - healthCheck = checkHealthForProperty(topologyProp, "apih-healthcheck-urn", requestId); - break; - case RA: - healthCheck = checkHealthForProperty(topologyProp, "jra-healthcheck-urn", requestId); - break; - case BPMN: - healthCheck = checkHealthForProperty(topologyProp, "camunda-healthcheck-urn", requestId); - break; - default: - msoLogger.error(MessageEnum.GENERAL_EXCEPTION_ARG, "Unknown NodeType:" + type, "", HEALTH_CHECK, MsoLogger.ErrorCode.DataError, "Unknown NodeType:" + type); - break; - } - - return healthCheck; - } - - public boolean verifyGlobalHealthCheck(boolean verifyBpmn, String requestId) { - // Get info from topology properties file - MsoJavaProperties topologyProp = this.loadTopologyProperties(); - if (null == topologyProp) { - msoLogger.error (MessageEnum.GENERAL_EXCEPTION_ARG, "Not able to find the topology file", "", HEALTH_CHECK, MsoLogger.ErrorCode.PermissionError, "Not able to find the topology file"); - return false; - } - - return verifyApihServersHealthCheck(topologyProp, requestId) && - verifyCamundaServersHealthCheck(topologyProp, requestId, verifyBpmn) && - verifyRaServersHealthCheck(topologyProp, requestId); - } - - public String getProperty (String name) { - MsoJavaProperties prop = this.loadTopologyProperties(); - - return prop.getProperty(name, null); - } - - protected String getFinalUrl (String ip, String port, String url, String sslEnabled) { - if (null == port && null == sslEnabled) { - int length = ip.length(); - if ("/".equals(ip.substring(length - 1))) { - ip = ip.substring(0, length - 1); - } - return ip + url; - } else if ("true".equalsIgnoreCase(sslEnabled)) { - return "https://" + ip + ":" + port + url; - } else { - return "http://" + ip + ":" + port + url; - } - } - - private boolean verifyRaServersHealthCheck(MsoJavaProperties topologyProp, String requestId) { - String jraLB = topologyProp.getProperty("jra-load-balancer", null); - String jraApi = topologyProp.getProperty("jra-nodehealthcheck-urn", null); - - if (null == jraLB || null == jraApi || jraLB.isEmpty() || jraApi.isEmpty()) { - msoLogger.error(MessageEnum.GENERAL_EXCEPTION_ARG, "Key parameters are missing from the topology file", "", HEALTH_CHECK, MsoLogger.ErrorCode.DataError, "Key parameters are missing from the topology file"); - return false; - } - - return verifyLocalHealth(jraLB, null, jraApi, null, requestId); - } - - private boolean verifyCamundaServersHealthCheck(MsoJavaProperties topologyProp, String requestId, boolean verifyBpmn) { - String bpmnLB = topologyProp.getProperty("camunda-load-balancer", null); - String bpmnApi = topologyProp.getProperty("camunda-nodehealthcheck-urn", null); - - if (null == bpmnLB || null == bpmnApi || bpmnLB.isEmpty() || bpmnApi.isEmpty()) { - msoLogger.error(MessageEnum.GENERAL_EXCEPTION_ARG, "Key parameters are missing from the topology file", "", HEALTH_CHECK, MsoLogger.ErrorCode.DataError, "Key parameters are missing from the topology file"); - return false; - } - - return !verifyBpmn || verifyLocalHealth(bpmnLB, null, bpmnApi, null, requestId); - } - - private boolean verifyApihServersHealthCheck(MsoJavaProperties topologyProp, String requestId) { - String apihLB = topologyProp.getProperty("apih-load-balancer", null); - String apihApi = topologyProp.getProperty("apih-nodehealthcheck-urn", null); - - if (null == apihLB || null == apihApi || apihLB.isEmpty() || apihApi.isEmpty()) { - msoLogger.error(MessageEnum.GENERAL_EXCEPTION_ARG, "Key parameters are missing from the topology file", "", HEALTH_CHECK, MsoLogger.ErrorCode.DataError, "Key parameters are missing from the topology file"); - return false; - } - - return verifyLocalHealth(apihLB, null, apihApi, null, requestId); - } - - private boolean checkHealthForProperty(MsoJavaProperties topologyProp, String property, String requestId) { - String apiList = topologyProp.getProperty(property, null); - if (apiList == null) { - String errorDescription = "Not able to get " + property + " parameter"; - msoLogger.error(MessageEnum.GENERAL_EXCEPTION_ARG, errorDescription, "", HEALTH_CHECK, MsoLogger.ErrorCode.DataError, errorDescription); - return false; - } - String[] apis = apiList.split(","); - return checkHealthForEachApi(topologyProp, apis, requestId); - } - - private boolean checkHealthForEachApi(MsoJavaProperties topologyProp, String[] apis, String requestId) { - - String port = topologyProp.getProperty("server-port", null); - String ip = System.getProperty("jboss.qualified.host.name"); - String sslEnabled = topologyProp.getProperty("ssl-enable", null); - - if (null == port || null == ip || ip.isEmpty() || port.isEmpty()) { - msoLogger.error(MessageEnum.GENERAL_EXCEPTION_ARG, "Not able to get the IP or the Port value. IP:" + ip + "; Port:" + port, "", HEALTH_CHECK, MsoLogger.ErrorCode.DataError, "Not able to get the IP or the Port value. IP:" + ip + "; Port:" + port); - return false; - } - - for (String url : apis) { - // if any of the parameters is null or empty, no need to establish the health check request, just go to the next iteration - if ((url == null) || url.isEmpty()) { - continue; - } - // Exit the loop if local health check returns false from any of the sub component - if (!this.verifyLocalHealth(ip, port, url, sslEnabled, requestId)) { - return false; - } - } - return true; - } -} diff --git a/status-control/src/main/java/org/openecomp/mso/MsoStatusHandler.java b/status-control/src/main/java/org/openecomp/mso/MsoStatusHandler.java deleted file mode 100644 index f47efd0dee..0000000000 --- a/status-control/src/main/java/org/openecomp/mso/MsoStatusHandler.java +++ /dev/null @@ -1,64 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * 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.utils.UUIDChecker; -import org.openecomp.mso.logger.MessageEnum; -import org.openecomp.mso.logger.MsoLogger; -import org.openecomp.mso.requestsdb.RequestsDatabase; - -import javax.ws.rs.*; -import javax.ws.rs.core.Response; - -@Path("/") -public class MsoStatusHandler { - private MsoLogger logger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL); - - @POST - @Path("/setStatus/{siteName}") - @Produces("text/plain") - public Response setSiteStatus (@DefaultValue("true") @QueryParam("enable") Boolean enable, - @PathParam("siteName") String siteName) { - long startTime = System.currentTimeMillis(); - // Set logger parameters - UUIDChecker.generateUUID (logger); - MsoLogger.setServiceName ("SetSiteStatus"); - - - if (null == siteName) { - logger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.BadRequest, "Not able to find the site name attribute in the config file"); - return Response.status (Response.Status.INTERNAL_SERVER_ERROR).entity ("Exception: not able to find the site name attribute in the config file").build (); - } - - // Query DB for the value - try { - (RequestsDatabase.getInstance()).updateSiteStatus(siteName, enable); - - } catch (Exception e) { - logger.error (MessageEnum.GENERAL_EXCEPTION, "", "setSiteStatus", MsoLogger.ErrorCode.DataError, "Failed to set site status", e); - logger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, "Exception while updating site status"); - return Response.status (Response.Status.INTERNAL_SERVER_ERROR).entity ("Exception while updating site status").build (); - } - logger.recordAuditEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful"); - return Response.status (Response.Status.OK).entity ("Site status successfully updated to " + enable).build (); - } -} diff --git a/status-control/src/main/java/org/openecomp/mso/MsoStatusUtil.java b/status-control/src/main/java/org/openecomp/mso/MsoStatusUtil.java deleted file mode 100644 index a587170fbc..0000000000 --- a/status-control/src/main/java/org/openecomp/mso/MsoStatusUtil.java +++ /dev/null @@ -1,50 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * 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.MessageEnum; -import org.openecomp.mso.logger.MsoLogger; -import org.openecomp.mso.requestsdb.SiteStatus; -import org.openecomp.mso.requestsdb.RequestsDatabase; - -public class MsoStatusUtil { - - private MsoLogger logger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL); - - public boolean getSiteStatus (String siteName) { - // Query DB for the value - - try { - SiteStatus siteStatus = (RequestsDatabase.getInstance()).getSiteStatus(siteName); - if (null != siteStatus) { - return siteStatus.getStatus(); - } else { - // If status not present in the DB, by default the site is on, thus return true - return true; - } - } catch (Exception e) { - logger.error (MessageEnum.GENERAL_EXCEPTION, "", "getSiteStatus", MsoLogger.ErrorCode.DataError, "Exception in getting the site status", e); - } - - return false; - } -} diff --git a/status-control/src/test/java/org/openecomp/mso/HealthCheckUtilsTest.java b/status-control/src/test/java/org/openecomp/mso/HealthCheckUtilsTest.java deleted file mode 100644 index 91016d2475..0000000000 --- a/status-control/src/test/java/org/openecomp/mso/HealthCheckUtilsTest.java +++ /dev/null @@ -1,267 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * 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.apache.http.HttpStatus; -import org.apache.http.HttpVersion; -import org.apache.http.client.methods.CloseableHttpResponse; -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 org.openecomp.mso.properties.MsoJavaProperties; - -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 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 = tempUtil.verifyLocalHealth(ip1, port, apihUrl1, sslEnable, null); - assertTrue(res1); - - Mockito.when (client.execute (any(HttpUriRequest.class))).thenReturn (nokRes); - boolean res2 = 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-camunda 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("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); - newProperties2.setProperty("apih-nodehealthcheck-urn",apihUrl1); - newProperties2.setProperty("camunda-load-balancer",ip1); - newProperties2.setProperty("camunda-nodehealthcheck-urn",bpmnUrl1); - newProperties2.setProperty("jra-load-balancer",ip1); - newProperties2.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); - newProperties3.setProperty("apih-load-balancer", ip1); - newProperties3.setProperty("apih-nodehealthcheck-urn",apihUrl1); - newProperties3.setProperty("camunda-load-balancer",ip1); - newProperties3.setProperty("camunda-nodehealthcheck-urn",bpmnUrl1); - newProperties3.setProperty("jra-load-balancer",ip1); - newProperties3.setProperty("jra-server-list",ip1); - - assertFalse (utils.verifyGlobalHealthCheck (true, null)); - - Mockito.when(utils.loadTopologyProperties()).thenReturn(properties); - } - -}
\ No newline at end of file |