You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by wu...@apache.org on 2018/01/10 07:38:33 UTC
[incubator-servicecomb-java-chassis] 09/13: SCB-166 rebase and fix
pr comment
This is an automated email from the ASF dual-hosted git repository.
wujimin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit 4eaf6cda32717c07d29fa210593859989e95f69e
Author: zhengyangyong <ya...@huawei.com>
AuthorDate: Tue Jan 9 16:37:57 2018 +0800
SCB-166 rebase and fix pr comment
Signed-off-by: zhengyangyong <ya...@huawei.com>
---
.../core/publish/DefaultHealthCheckerManager.java | 17 +-
.../metrics/core/TestHealthCheckerManager.java | 221 +--------------------
.../SomeServiceWithHealthCheckerManager.java | 36 ++++
3 files changed, 53 insertions(+), 221 deletions(-)
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultHealthCheckerManager.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultHealthCheckerManager.java
index 667b02a..71e9f1a 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultHealthCheckerManager.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultHealthCheckerManager.java
@@ -19,6 +19,7 @@ package io.servicecomb.metrics.core.publish;
import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
@@ -27,7 +28,6 @@ import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import io.servicecomb.metrics.common.HealthCheckResult;
@@ -42,20 +42,15 @@ public class DefaultHealthCheckerManager implements HealthCheckerManager {
private final Map<String, HealthChecker> healthCheckers;
- private ApplicationContext context;
-
- @Autowired
- public DefaultHealthCheckerManager(ApplicationContext context) {
- this.context = context;
+ @Autowired(required = false)
+ public DefaultHealthCheckerManager(List<HealthChecker> springHealthCheckers) {
this.healthCheckers = new ConcurrentHashMap<>();
HealthChecker defaultHealthChecker = new DefaultMicroserviceHealthChecker();
this.healthCheckers.put(defaultHealthChecker.getName(), defaultHealthChecker);
- for (String beanName : context.getBeanDefinitionNames()) {
- Class<?> beanClass = context.getType(beanName);
- if (HealthChecker.class.isAssignableFrom(beanClass)) {
- Object bean = context.getBean(beanName);
- this.healthCheckers.put(((HealthChecker) bean).getName(), (HealthChecker) bean);
+ if (springHealthCheckers != null && !springHealthCheckers.isEmpty()) {
+ for (HealthChecker checker : springHealthCheckers) {
+ this.healthCheckers.put(checker.getName(), checker);
}
}
}
diff --git a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestHealthCheckerManager.java b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestHealthCheckerManager.java
index 9101fd1..74f65cf 100644
--- a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestHealthCheckerManager.java
+++ b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestHealthCheckerManager.java
@@ -18,29 +18,19 @@
package io.servicecomb.metrics.core;
import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.util.Locale;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.NoSuchBeanDefinitionException;
-import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationEvent;
-import org.springframework.context.MessageSourceResolvable;
-import org.springframework.context.NoSuchMessageException;
-import org.springframework.core.ResolvableType;
-import org.springframework.core.env.Environment;
-import org.springframework.core.io.Resource;
import com.google.common.collect.Lists;
import io.servicecomb.foundation.common.utils.JsonUtils;
import io.servicecomb.metrics.common.DefaultHealthCheckExtraData;
import io.servicecomb.metrics.common.HealthCheckResult;
+import io.servicecomb.metrics.common.HealthChecker;
import io.servicecomb.metrics.core.publish.DefaultHealthCheckerManager;
import io.servicecomb.metrics.core.publish.HealthCheckerManager;
import io.servicecomb.serviceregistry.RegistryUtils;
@@ -77,209 +67,20 @@ public class TestHealthCheckerManager {
}
};
- HealthCheckerManager manager = new DefaultHealthCheckerManager(new ApplicationContext() {
+ List<HealthChecker> checkers = new ArrayList<>();
+ checkers.add(new HealthChecker() {
@Override
- public String getId() {
- return null;
+ public String getName() {
+ return "custom";
}
@Override
- public String getApplicationName() {
- return null;
- }
-
- @Override
- public String getDisplayName() {
- return null;
- }
-
- @Override
- public long getStartupDate() {
- return 0;
- }
-
- @Override
- public ApplicationContext getParent() {
- return null;
- }
-
- @Override
- public AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException {
- return null;
- }
-
- @Override
- public BeanFactory getParentBeanFactory() {
- return null;
- }
-
- @Override
- public boolean containsLocalBean(String s) {
- return false;
- }
-
- @Override
- public boolean containsBeanDefinition(String s) {
- return false;
- }
-
- @Override
- public int getBeanDefinitionCount() {
- return 0;
- }
-
- @Override
- public String[] getBeanDefinitionNames() {
- return new String[0];
- }
-
- @Override
- public String[] getBeanNamesForType(ResolvableType resolvableType) {
- return new String[0];
- }
-
- @Override
- public String[] getBeanNamesForType(Class<?> aClass) {
- return new String[0];
- }
-
- @Override
- public String[] getBeanNamesForType(Class<?> aClass, boolean b, boolean b1) {
- return new String[0];
- }
-
- @Override
- public <T> Map<String, T> getBeansOfType(Class<T> aClass) throws BeansException {
- return null;
- }
-
- @Override
- public <T> Map<String, T> getBeansOfType(Class<T> aClass, boolean b, boolean b1) throws BeansException {
- return null;
- }
-
- @Override
- public String[] getBeanNamesForAnnotation(Class<? extends Annotation> aClass) {
- return new String[0];
- }
-
- @Override
- public Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> aClass) throws BeansException {
- return null;
- }
-
- @Override
- public <A extends Annotation> A findAnnotationOnBean(String s, Class<A> aClass)
- throws NoSuchBeanDefinitionException {
- return null;
- }
-
- @Override
- public Object getBean(String s) throws BeansException {
- return null;
- }
-
- @Override
- public <T> T getBean(String s, Class<T> aClass) throws BeansException {
- return null;
- }
-
- @Override
- public <T> T getBean(Class<T> aClass) throws BeansException {
- return null;
- }
-
- @Override
- public Object getBean(String s, Object... objects) throws BeansException {
- return null;
- }
-
- @Override
- public <T> T getBean(Class<T> aClass, Object... objects) throws BeansException {
- return null;
- }
-
- @Override
- public boolean containsBean(String s) {
- return false;
- }
-
- @Override
- public boolean isSingleton(String s) throws NoSuchBeanDefinitionException {
- return false;
- }
-
- @Override
- public boolean isPrototype(String s) throws NoSuchBeanDefinitionException {
- return false;
- }
-
- @Override
- public boolean isTypeMatch(String s, ResolvableType resolvableType) throws NoSuchBeanDefinitionException {
- return false;
- }
-
- @Override
- public boolean isTypeMatch(String s, Class<?> aClass) throws NoSuchBeanDefinitionException {
- return false;
- }
-
- @Override
- public Class<?> getType(String s) throws NoSuchBeanDefinitionException {
- return null;
- }
-
- @Override
- public String[] getAliases(String s) {
- return new String[0];
- }
-
- @Override
- public void publishEvent(ApplicationEvent applicationEvent) {
-
- }
-
- @Override
- public void publishEvent(Object o) {
-
- }
-
- @Override
- public String getMessage(String s, Object[] objects, String s1, Locale locale) {
- return null;
- }
-
- @Override
- public String getMessage(String s, Object[] objects, Locale locale) throws NoSuchMessageException {
- return null;
- }
-
- @Override
- public String getMessage(MessageSourceResolvable messageSourceResolvable, Locale locale)
- throws NoSuchMessageException {
- return null;
- }
-
- @Override
- public Environment getEnvironment() {
- return null;
- }
-
- @Override
- public Resource[] getResources(String s) throws IOException {
- return new Resource[0];
- }
-
- @Override
- public Resource getResource(String s) {
- return null;
- }
-
- @Override
- public ClassLoader getClassLoader() {
- return null;
+ public HealthCheckResult check() {
+ return new HealthCheckResult(true, "", "");
}
});
+
+ HealthCheckerManager manager = new DefaultHealthCheckerManager(checkers);
Map<String, HealthCheckResult> results = manager.check();
Assert.assertTrue(results.get("default").isHealthy());
diff --git a/samples/metrics-extend-healthcheck/src/main/java/io/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java b/samples/metrics-extend-healthcheck/src/main/java/io/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java
new file mode 100644
index 0000000..43871b1
--- /dev/null
+++ b/samples/metrics-extend-healthcheck/src/main/java/io/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java
@@ -0,0 +1,36 @@
+/*
+ * 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 io.servicecomb.samples.metrics.extendhealthcheck;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import io.servicecomb.metrics.core.publish.HealthCheckerManager;
+
+@Service
+public class SomeServiceWithHealthCheckerManager {
+
+ private final HealthCheckerManager manager;
+
+ @Autowired
+ public SomeServiceWithHealthCheckerManager(HealthCheckerManager manager) {
+ this.manager = manager;
+
+ this.manager.register(new MySqlHealthChecker());
+ }
+}
--
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.