summaryrefslogtreecommitdiffstats
path: root/status-control
diff options
context:
space:
mode:
Diffstat (limited to 'status-control')
-rw-r--r--status-control/pom.xml39
-rw-r--r--status-control/src/main/java/org/openecomp/mso/HealthCheckUtils.java308
-rw-r--r--status-control/src/main/java/org/openecomp/mso/MsoStatusHandler.java64
-rw-r--r--status-control/src/main/java/org/openecomp/mso/MsoStatusUtil.java50
-rw-r--r--status-control/src/test/java/org/openecomp/mso/HealthCheckUtilsTest.java267
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