This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit 928108a5516b351d5727e368cc8896e8d1afae6e Author: zhengyangyong <[email protected]> AuthorDate: Mon Feb 12 11:24:10 2018 +0800 SCB-327 adjust health check package Signed-off-by: zhengyangyong <[email protected]> --- .../org/apache/servicecomb/demo/perf/PerfMain.java | 3 +- .../demo/perf/PerfMetricsFilePublisher.java | 2 +- .../health}/DefaultHealthCheckerManager.java | 9 +- .../{publish => health}/HealthCheckResult.java | 2 +- .../metrics/{publish => health}/HealthChecker.java | 2 +- .../metrics/health}/HealthCheckerManager.java | 5 +- .../metrics/health/TestHealthCheckerManager.java | 62 ++++++++++++ .../metrics/publish/TestMetricsLoader.java | 62 ++++++++++++ .../metrics/core/{publish => }/DataSource.java | 2 +- .../core/{publish => }/DefaultDataSource.java | 3 +- .../core/health}/DefaultHealthCheckExtraData.java | 2 +- .../health/DefaultMicroserviceHealthChecker.java | 5 +- .../publish/DefaultHealthCheckerPublisher.java | 3 +- .../core/publish/DefaultMetricsPublisher.java | 1 + .../metrics/core/TestEventAndRunner.java | 1 - .../metrics/core/TestHealthCheckerManager.java | 104 --------------------- .../metrics/core/TestHealthCheckerPublisher.java | 67 +++++++++++-- .../metrics/core/TestMetricsPublisher.java | 1 - .../metrics/prometheus/MetricsCollector.java | 2 +- .../CustomHealthCheckerAnnotation.java | 4 +- .../extendhealthcheck/MySqlHealthChecker.java | 4 +- .../SomeServiceWithHealthCheckerManager.java | 2 +- .../samples/mwf/WriteFileInitializer.java | 2 +- 23 files changed, 203 insertions(+), 147 deletions(-) diff --git a/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMain.java b/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMain.java index 5c6a38c..f85d08d 100644 --- a/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMain.java +++ b/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMain.java @@ -24,7 +24,7 @@ import java.util.concurrent.TimeUnit; import org.apache.servicecomb.foundation.common.utils.BeanUtils; import org.apache.servicecomb.foundation.vertx.VertxUtils; -import org.apache.servicecomb.metrics.core.publish.DataSource; +import org.apache.servicecomb.metrics.core.DataSource; public class PerfMain { @@ -45,5 +45,4 @@ public class PerfMain { consumer.runConsumer(); } } - } diff --git a/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMetricsFilePublisher.java b/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMetricsFilePublisher.java index 915b404..a56bb0b 100644 --- a/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMetricsFilePublisher.java +++ b/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMetricsFilePublisher.java @@ -23,7 +23,7 @@ import org.apache.servicecomb.foundation.metrics.MetricsConst; import org.apache.servicecomb.foundation.metrics.publish.MetricNode; import org.apache.servicecomb.foundation.metrics.publish.MetricsLoader; import org.apache.servicecomb.foundation.vertx.VertxUtils; -import org.apache.servicecomb.metrics.core.publish.DataSource; +import org.apache.servicecomb.metrics.core.DataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultHealthCheckerManager.java b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/DefaultHealthCheckerManager.java similarity index 82% rename from metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultHealthCheckerManager.java rename to foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/DefaultHealthCheckerManager.java index a20105c..9e19e84 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultHealthCheckerManager.java +++ b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/DefaultHealthCheckerManager.java @@ -15,9 +15,7 @@ * limitations under the License. */ -package org.apache.servicecomb.metrics.core.publish; - -import static javax.ws.rs.core.Response.Status.BAD_REQUEST; +package org.apache.servicecomb.foundation.metrics.health; import java.util.List; import java.util.Map; @@ -25,9 +23,6 @@ import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; -import org.apache.servicecomb.foundation.metrics.publish.HealthCheckResult; -import org.apache.servicecomb.foundation.metrics.publish.HealthChecker; -import org.apache.servicecomb.swagger.invocation.exception.InvocationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -61,6 +56,6 @@ public class DefaultHealthCheckerManager implements HealthCheckerManager { if (checker != null) { return checker.check(); } - throw new InvocationException(BAD_REQUEST, "HealthChecker name : " + name + " unregister"); + return null; } } diff --git a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/HealthCheckResult.java b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthCheckResult.java similarity index 96% rename from foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/HealthCheckResult.java rename to foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthCheckResult.java index 19bad42..fc147fb 100644 --- a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/HealthCheckResult.java +++ b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthCheckResult.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.servicecomb.foundation.metrics.publish; +package org.apache.servicecomb.foundation.metrics.health; public class HealthCheckResult { private boolean healthy; diff --git a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/HealthChecker.java b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthChecker.java similarity index 93% rename from foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/HealthChecker.java rename to foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthChecker.java index 2236a5e..4dd016f 100644 --- a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/HealthChecker.java +++ b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthChecker.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.servicecomb.foundation.metrics.publish; +package org.apache.servicecomb.foundation.metrics.health; public interface HealthChecker { String getName(); diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/HealthCheckerManager.java b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthCheckerManager.java similarity index 83% rename from metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/HealthCheckerManager.java rename to foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthCheckerManager.java index 687d6c6..776b815 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/HealthCheckerManager.java +++ b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthCheckerManager.java @@ -15,13 +15,10 @@ * limitations under the License. */ -package org.apache.servicecomb.metrics.core.publish; +package org.apache.servicecomb.foundation.metrics.health; import java.util.Map; -import org.apache.servicecomb.foundation.metrics.publish.HealthCheckResult; -import org.apache.servicecomb.foundation.metrics.publish.HealthChecker; - public interface HealthCheckerManager { void register(HealthChecker checker); diff --git a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java new file mode 100644 index 0000000..40b653c --- /dev/null +++ b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ + +package org.apache.servicecomb.foundation.metrics.health; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.junit.Assert; +import org.junit.Test; + +public class TestHealthCheckerManager { + + @Test + public void testRegistry() { + + List<HealthChecker> checkers = new ArrayList<>(); + + HealthCheckerManager manager = new DefaultHealthCheckerManager(checkers); + + manager.register(new HealthChecker() { + @Override + public String getName() { + return "test"; + } + + @Override + public HealthCheckResult check() { + return new HealthCheckResult(false, "bad", "bad call"); + } + }); + + Map<String, HealthCheckResult> results = manager.check(); + + Assert.assertEquals(1, results.size()); + + HealthCheckResult result = manager.check().get("test"); + Assert.assertEquals(false, result.isHealthy()); + Assert.assertEquals("bad", result.getInformation()); + Assert.assertEquals("bad call", result.getExtraData()); + + result = manager.check("test"); + Assert.assertEquals(false, result.isHealthy()); + Assert.assertEquals("bad", result.getInformation()); + Assert.assertEquals("bad call", result.getExtraData()); + } +} diff --git a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/publish/TestMetricsLoader.java b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/publish/TestMetricsLoader.java new file mode 100644 index 0000000..9d5254a --- /dev/null +++ b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/publish/TestMetricsLoader.java @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ + +package org.apache.servicecomb.foundation.metrics.publish; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.Assert; +import org.junit.Test; + +import com.google.common.collect.Lists; + +public class TestMetricsLoader { + @Test + public void test() { + Map<String, Double> metrics = new HashMap<>(); + metrics.put("X(K1=1,K2=2,K3=3)", 100.0); + metrics.put("X(K1=1,K2=20,K3=30)", 200.0); + metrics.put("X(K1=2,K2=200,K3=300)", 300.0); + metrics.put("X(K1=2,K2=2000,K3=3000)", 400.0); + + metrics.put("Y(K1=1,K2=2,K3=3)", 500.0); + metrics.put("Y(K1=10,K2=20,K3=30)", 600.0); + metrics.put("Y(K1=100,K2=200,K3=300)", 700.0); + metrics.put("Y(K1=1000,K2=2000,K3=3000)", 800.0); + + MetricsLoader loader = new MetricsLoader(metrics); + + Assert.assertEquals(200.0, loader.getFirstMatchMetricValue("X", "K3", "30"), 0); + + MetricNode node = loader.getMetricTree("X", "K1"); + + Assert.assertEquals(2, node.getChildren().size()); + + MetricNode node_k1 = node.getChildrenNode("1"); + + Assert.assertEquals(200, node_k1.getFirstMatchMetricValue( + Lists.newArrayList("K2", "K3"), + Lists.newArrayList("20", "30")), 0); + + Assert.assertEquals(100, node_k1.getFirstMatchMetricValue("K2", "2"), 0); + + MetricNode newGroup = new MetricNode(node_k1.getMetrics(), "K2", "K3"); + + Assert.assertEquals(1, newGroup.getChildrenNode("2").getChildrenNode("3").getMetrics().size(), 0); + } +} diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DataSource.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DataSource.java similarity index 98% rename from metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DataSource.java rename to metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DataSource.java index 89bf40e..ce21faf 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DataSource.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DataSource.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.servicecomb.metrics.core.publish; +package org.apache.servicecomb.metrics.core; import java.util.List; import java.util.Map; diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultDataSource.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DefaultDataSource.java similarity index 97% rename from metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultDataSource.java rename to metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DefaultDataSource.java index 661cddb..30241c8 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultDataSource.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DefaultDataSource.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.servicecomb.metrics.core.publish; +package org.apache.servicecomb.metrics.core; import static javax.ws.rs.core.Response.Status.BAD_REQUEST; @@ -26,7 +26,6 @@ import java.util.Map; import java.util.Set; import org.apache.servicecomb.foundation.common.exceptions.ServiceCombException; -import org.apache.servicecomb.metrics.core.MetricsConfig; import org.apache.servicecomb.metrics.core.monitor.RegistryMonitor; import org.apache.servicecomb.swagger.invocation.exception.InvocationException; import org.springframework.beans.factory.annotation.Autowired; diff --git a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/DefaultHealthCheckExtraData.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/health/DefaultHealthCheckExtraData.java similarity index 96% rename from foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/DefaultHealthCheckExtraData.java rename to metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/health/DefaultHealthCheckExtraData.java index 6415927..8a78fd1 100644 --- a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/DefaultHealthCheckExtraData.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/health/DefaultHealthCheckExtraData.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.servicecomb.foundation.metrics.publish; +package org.apache.servicecomb.metrics.core.health; public class DefaultHealthCheckExtraData { private String instanceId; diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/health/DefaultMicroserviceHealthChecker.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/health/DefaultMicroserviceHealthChecker.java index d452591..fb9185d 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/health/DefaultMicroserviceHealthChecker.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/health/DefaultMicroserviceHealthChecker.java @@ -20,9 +20,8 @@ package org.apache.servicecomb.metrics.core.health; import javax.ws.rs.core.Response.Status; import org.apache.servicecomb.foundation.common.utils.JsonUtils; -import org.apache.servicecomb.foundation.metrics.publish.DefaultHealthCheckExtraData; -import org.apache.servicecomb.foundation.metrics.publish.HealthCheckResult; -import org.apache.servicecomb.foundation.metrics.publish.HealthChecker; +import org.apache.servicecomb.foundation.metrics.health.HealthCheckResult; +import org.apache.servicecomb.foundation.metrics.health.HealthChecker; import org.apache.servicecomb.serviceregistry.RegistryUtils; import org.apache.servicecomb.serviceregistry.api.registry.Microservice; import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance; diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultHealthCheckerPublisher.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultHealthCheckerPublisher.java index 70d0482..e0de808 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultHealthCheckerPublisher.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultHealthCheckerPublisher.java @@ -19,7 +19,8 @@ package org.apache.servicecomb.metrics.core.publish; import java.util.Map; -import org.apache.servicecomb.foundation.metrics.publish.HealthCheckResult; +import org.apache.servicecomb.foundation.metrics.health.HealthCheckResult; +import org.apache.servicecomb.foundation.metrics.health.HealthCheckerManager; import org.apache.servicecomb.provider.rest.common.RestSchema; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PathVariable; diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultMetricsPublisher.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultMetricsPublisher.java index 57bd6f9..5d8385a 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultMetricsPublisher.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultMetricsPublisher.java @@ -19,6 +19,7 @@ package org.apache.servicecomb.metrics.core.publish; import java.util.Map; +import org.apache.servicecomb.metrics.core.DataSource; import org.apache.servicecomb.provider.rest.common.RestSchema; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java index f4e2ff8..b6ee521 100644 --- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java +++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java @@ -39,7 +39,6 @@ import org.apache.servicecomb.foundation.metrics.publish.MetricsLoader; import org.apache.servicecomb.metrics.core.event.DefaultEventListenerManager; import org.apache.servicecomb.metrics.core.monitor.DefaultSystemMonitor; import org.apache.servicecomb.metrics.core.monitor.RegistryMonitor; -import org.apache.servicecomb.metrics.core.publish.DefaultDataSource; import org.apache.servicecomb.swagger.invocation.InvocationType; import org.junit.Assert; import org.junit.Test; diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerManager.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerManager.java deleted file mode 100644 index 506d215..0000000 --- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerManager.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.servicecomb.metrics.core; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import org.apache.servicecomb.foundation.common.utils.JsonUtils; -import org.apache.servicecomb.foundation.metrics.publish.DefaultHealthCheckExtraData; -import org.apache.servicecomb.foundation.metrics.publish.HealthCheckResult; -import org.apache.servicecomb.foundation.metrics.publish.HealthChecker; -import org.apache.servicecomb.metrics.core.health.DefaultMicroserviceHealthChecker; -import org.apache.servicecomb.metrics.core.publish.DefaultHealthCheckerManager; -import org.apache.servicecomb.metrics.core.publish.HealthCheckerManager; -import org.apache.servicecomb.serviceregistry.RegistryUtils; -import org.apache.servicecomb.serviceregistry.api.registry.Microservice; -import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance; -import org.junit.Assert; -import org.junit.Test; - -import com.google.common.collect.Lists; - -import mockit.Expectations; - -public class TestHealthCheckerManager { - - @Test - public void testRegistry() throws IOException { - - Microservice microservice = new Microservice(); - microservice.setAppId("appId"); - microservice.setServiceName("serviceName"); - microservice.setVersion("0.0.1"); - - MicroserviceInstance microserviceInstance = new MicroserviceInstance(); - microserviceInstance.setEndpoints(Lists.newArrayList("127.0.0.1", "192.168.0.100")); - microserviceInstance.setInstanceId("001"); - microserviceInstance.setHostName("localhost"); - - new Expectations(RegistryUtils.class) { - { - RegistryUtils.getMicroservice(); - result = microservice; - } - }; - - new Expectations(RegistryUtils.class) { - { - RegistryUtils.getMicroserviceInstance(); - result = microserviceInstance; - } - }; - - List<HealthChecker> checkers = new ArrayList<>(); - checkers.add(new DefaultMicroserviceHealthChecker()); - - HealthCheckerManager manager = new DefaultHealthCheckerManager(checkers); - - manager.register(new HealthChecker() { - @Override - public String getName() { - return "test"; - } - - @Override - public HealthCheckResult check() { - return new HealthCheckResult(false, "bad", "bad"); - } - }); - - Map<String, HealthCheckResult> results = manager.check(); - - Assert.assertEquals(true, results.get("default").isHealthy()); - - DefaultHealthCheckExtraData data = JsonUtils.OBJ_MAPPER - .readValue(results.get("default").getExtraData(), DefaultHealthCheckExtraData.class); - Assert.assertEquals("appId", data.getAppId()); - Assert.assertEquals("serviceName", data.getServiceName()); - Assert.assertEquals("0.0.1", data.getServiceVersion()); - Assert.assertEquals("001", data.getInstanceId()); - Assert.assertEquals("localhost", data.getHostName()); - Assert.assertEquals("127.0.0.1,192.168.0.100", data.getEndpoints()); - - HealthCheckResult result = manager.check("test"); - Assert.assertEquals(false, result.isHealthy()); - } -} diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerPublisher.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerPublisher.java index 8f91d33..1764e52 100644 --- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerPublisher.java +++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerPublisher.java @@ -20,36 +20,83 @@ package org.apache.servicecomb.metrics.core; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache.servicecomb.foundation.common.utils.JsonUtils; -import org.apache.servicecomb.foundation.metrics.publish.HealthCheckResult; +import org.apache.servicecomb.foundation.metrics.health.HealthCheckResult; +import org.apache.servicecomb.foundation.metrics.health.HealthChecker; +import org.apache.servicecomb.foundation.metrics.health.HealthCheckerManager; +import org.apache.servicecomb.metrics.core.health.DefaultHealthCheckExtraData; +import org.apache.servicecomb.metrics.core.health.DefaultMicroserviceHealthChecker; import org.apache.servicecomb.metrics.core.publish.DefaultHealthCheckerPublisher; -import org.apache.servicecomb.metrics.core.publish.HealthCheckerManager; +import org.apache.servicecomb.serviceregistry.RegistryUtils; +import org.apache.servicecomb.serviceregistry.api.registry.Microservice; +import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance; import org.junit.Assert; import org.junit.Test; -import com.fasterxml.jackson.core.JsonProcessingException; +import com.google.common.collect.Lists; + +import mockit.Expectations; public class TestHealthCheckerPublisher { @Test - public void testPublisher() throws JsonProcessingException { + public void testPublisher() throws IOException { + Microservice microservice = new Microservice(); + microservice.setAppId("appId"); + microservice.setServiceName("serviceName"); + microservice.setVersion("0.0.1"); + + MicroserviceInstance microserviceInstance = new MicroserviceInstance(); + microserviceInstance.setEndpoints(Lists.newArrayList("127.0.0.1", "192.168.0.100")); + microserviceInstance.setInstanceId("001"); + microserviceInstance.setHostName("localhost"); + + new Expectations(RegistryUtils.class) { + { + RegistryUtils.getMicroservice(); + result = microservice; + } + }; + + new Expectations(RegistryUtils.class) { + { + RegistryUtils.getMicroserviceInstance(); + result = microserviceInstance; + } + }; + HealthCheckerManager manager = mock(HealthCheckerManager.class); Map<String, HealthCheckResult> results = new HashMap<>(); - HealthCheckResult result = new HealthCheckResult(true, "ok", "extra"); - results.put("default", result); + HealthChecker result = new DefaultMicroserviceHealthChecker(); + results.put("default", result.check()); when(manager.check()).thenReturn(results); - when(manager.check("default")).thenReturn(result); + when(manager.check("default")).thenReturn(result.check()); DefaultHealthCheckerPublisher publisher = new DefaultHealthCheckerPublisher(manager); Map<String, HealthCheckResult> content = publisher.health(); - Assert.assertEquals(JsonUtils.writeValueAsString(result), JsonUtils.writeValueAsString(content.get("default"))); - HealthCheckResult checkResult = publisher.healthWithName("default"); - Assert.assertEquals(JsonUtils.writeValueAsString(result), JsonUtils.writeValueAsString(checkResult)); + DefaultHealthCheckExtraData data = JsonUtils.OBJ_MAPPER + .readValue(content.get("default").getExtraData(), DefaultHealthCheckExtraData.class); + Assert.assertEquals("appId", data.getAppId()); + Assert.assertEquals("serviceName", data.getServiceName()); + Assert.assertEquals("0.0.1", data.getServiceVersion()); + Assert.assertEquals("001", data.getInstanceId()); + Assert.assertEquals("localhost", data.getHostName()); + Assert.assertEquals("127.0.0.1,192.168.0.100", data.getEndpoints()); + + data = JsonUtils.OBJ_MAPPER + .readValue(publisher.healthWithName("default").getExtraData(), DefaultHealthCheckExtraData.class); + Assert.assertEquals("appId", data.getAppId()); + Assert.assertEquals("serviceName", data.getServiceName()); + Assert.assertEquals("0.0.1", data.getServiceVersion()); + Assert.assertEquals("001", data.getInstanceId()); + Assert.assertEquals("localhost", data.getHostName()); + Assert.assertEquals("127.0.0.1,192.168.0.100", data.getEndpoints()); } } diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsPublisher.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsPublisher.java index 1a6bc0e..096e2da 100644 --- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsPublisher.java +++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsPublisher.java @@ -21,7 +21,6 @@ import java.util.Map; import org.apache.servicecomb.metrics.core.monitor.DefaultSystemMonitor; import org.apache.servicecomb.metrics.core.monitor.RegistryMonitor; -import org.apache.servicecomb.metrics.core.publish.DefaultDataSource; import org.apache.servicecomb.metrics.core.publish.DefaultMetricsPublisher; import org.junit.Assert; import org.junit.Test; diff --git a/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsCollector.java b/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsCollector.java index 08e5135..10cbd36 100644 --- a/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsCollector.java +++ b/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsCollector.java @@ -23,7 +23,7 @@ import java.util.Map; import java.util.Map.Entry; import org.apache.servicecomb.foundation.metrics.MetricsConst; -import org.apache.servicecomb.metrics.core.publish.DataSource; +import org.apache.servicecomb.metrics.core.DataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/CustomHealthCheckerAnnotation.java b/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/CustomHealthCheckerAnnotation.java index c0ac13d..27688d0 100644 --- a/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/CustomHealthCheckerAnnotation.java +++ b/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/CustomHealthCheckerAnnotation.java @@ -17,8 +17,8 @@ package org.apache.servicecomb.samples.metrics.extendhealthcheck; -import org.apache.servicecomb.foundation.metrics.publish.HealthCheckResult; -import org.apache.servicecomb.foundation.metrics.publish.HealthChecker; +import org.apache.servicecomb.foundation.metrics.health.HealthCheckResult; +import org.apache.servicecomb.foundation.metrics.health.HealthChecker; import org.springframework.stereotype.Component; //this health check will auto register because spring bean annotation diff --git a/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/MySqlHealthChecker.java b/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/MySqlHealthChecker.java index a1465e3..6e11578 100644 --- a/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/MySqlHealthChecker.java +++ b/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/MySqlHealthChecker.java @@ -21,8 +21,8 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; -import org.apache.servicecomb.foundation.metrics.publish.HealthCheckResult; -import org.apache.servicecomb.foundation.metrics.publish.HealthChecker; +import org.apache.servicecomb.foundation.metrics.health.HealthCheckResult; +import org.apache.servicecomb.foundation.metrics.health.HealthChecker; //this is a demo health checker for mysql diff --git a/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java b/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java index eee7129..42e3064 100644 --- a/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java +++ b/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java @@ -17,7 +17,7 @@ package org.apache.servicecomb.samples.metrics.extendhealthcheck; -import org.apache.servicecomb.metrics.core.publish.HealthCheckerManager; +import org.apache.servicecomb.foundation.metrics.health.HealthCheckerManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/WriteFileInitializer.java b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/WriteFileInitializer.java index f97d255..7837a65 100644 --- a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/WriteFileInitializer.java +++ b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/WriteFileInitializer.java @@ -24,8 +24,8 @@ import java.util.concurrent.Executors; import org.apache.commons.lang3.StringUtils; import org.apache.servicecomb.foundation.common.net.NetUtils; +import org.apache.servicecomb.metrics.core.DataSource; import org.apache.servicecomb.metrics.core.MetricsConfig; -import org.apache.servicecomb.metrics.core.publish.DataSource; import org.apache.servicecomb.serviceregistry.RegistryUtils; import org.apache.servicecomb.serviceregistry.api.registry.Microservice; import org.springframework.beans.factory.annotation.Autowired; -- To stop receiving notification emails like this one, please contact [email protected].
