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:25 UTC

[incubator-servicecomb-java-chassis] 01/13: SCB-166 add health check implement

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 ca84f1708aa09e0599c079ea1e12e7d1e718d5aa
Author: zhengyangyong <ya...@huawei.com>
AuthorDate: Thu Jan 4 17:58:27 2018 +0800

    SCB-166 add health check implement
    
    Signed-off-by: zhengyangyong <ya...@huawei.com>
---
 .../common/DefaultHealthCheckExtraData.java        | 69 ++++++++++++++++++
 .../metrics/common/HealthCheckResult.java          | 56 +++++++++++++++
 .../servicecomb/metrics/common/HealthChecker.java  | 24 +++++++
 .../metrics/common/HealthCheckerPublisher.java     | 26 +++++++
 .../health/DefaultMicroserviceHealthChecker.java   | 60 ++++++++++++++++
 .../core/publish/DefaultHealthCheckerManager.java  | 62 +++++++++++++++++
 .../publish/DefaultHealthCheckerPublisher.java     | 59 ++++++++++++++++
 .../metrics/core/publish/HealthCheckerManager.java | 31 +++++++++
 .../metrics/core/TestHealthCheckerManager.java     | 81 ++++++++++++++++++++++
 .../metrics/core/TestHealthCheckerPublisher.java   | 59 ++++++++++++++++
 10 files changed, 527 insertions(+)

diff --git a/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/DefaultHealthCheckExtraData.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/DefaultHealthCheckExtraData.java
new file mode 100644
index 0000000..aa2c9b4
--- /dev/null
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/DefaultHealthCheckExtraData.java
@@ -0,0 +1,69 @@
+/*
+ * 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.metrics.common;
+
+public class DefaultHealthCheckExtraData {
+  private String instanceId;
+
+  private String hostName;
+
+  private String appId;
+
+  private String serviceName;
+
+  private String serviceVersion;
+
+  private String endpoints;
+
+  public String getInstanceId() {
+    return instanceId;
+  }
+
+  public String getHostName() {
+    return hostName;
+  }
+
+  public String getAppId() {
+    return appId;
+  }
+
+  public String getServiceName() {
+    return serviceName;
+  }
+
+  public String getServiceVersion() {
+    return serviceVersion;
+  }
+
+  public String getEndpoints() {
+    return endpoints;
+  }
+
+  public DefaultHealthCheckExtraData() {
+  }
+
+  public DefaultHealthCheckExtraData(String instanceId, String hostName, String appId, String serviceName,
+      String serviceVersion, String endpoints) {
+    this.instanceId = instanceId;
+    this.hostName = hostName;
+    this.appId = appId;
+    this.serviceName = serviceName;
+    this.serviceVersion = serviceVersion;
+    this.endpoints = endpoints;
+  }
+}
diff --git a/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/HealthCheckResult.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/HealthCheckResult.java
new file mode 100644
index 0000000..b44d8df
--- /dev/null
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/HealthCheckResult.java
@@ -0,0 +1,56 @@
+/*
+ * 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.metrics.common;
+
+public class HealthCheckResult {
+  private boolean isHealth;
+
+  private String information;
+
+  //unsupport object or generic type,so string..
+  private String extraData;
+
+  private long timestamp;
+
+  public boolean isHealth() {
+    return isHealth;
+  }
+
+  public String getInformation() {
+    return information;
+  }
+
+  public String getExtraData() {
+    return extraData;
+  }
+
+  public long getTimestamp() {
+    return timestamp;
+  }
+
+  public HealthCheckResult() {
+  }
+
+  public HealthCheckResult(boolean isHealth, String information, String extraData) {
+    this();
+    this.isHealth = isHealth;
+    this.information = information;
+    this.extraData = extraData;
+    this.timestamp = System.currentTimeMillis();
+  }
+}
diff --git a/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/HealthChecker.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/HealthChecker.java
new file mode 100644
index 0000000..69025e1
--- /dev/null
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/HealthChecker.java
@@ -0,0 +1,24 @@
+/*
+ * 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.metrics.common;
+
+public interface HealthChecker {
+  String getName();
+
+  HealthCheckResult check();
+}
diff --git a/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/HealthCheckerPublisher.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/HealthCheckerPublisher.java
new file mode 100644
index 0000000..68aacca
--- /dev/null
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/HealthCheckerPublisher.java
@@ -0,0 +1,26 @@
+/*
+ * 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.metrics.common;
+
+import java.util.Map;
+
+public interface HealthCheckerPublisher {
+  Map<String, HealthCheckResult> health();
+
+  HealthCheckResult healthWithName(String name);
+}
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/health/DefaultMicroserviceHealthChecker.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/health/DefaultMicroserviceHealthChecker.java
new file mode 100644
index 0000000..1e96b11
--- /dev/null
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/health/DefaultMicroserviceHealthChecker.java
@@ -0,0 +1,60 @@
+/*
+ * 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.metrics.core.health;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+
+import io.servicecomb.foundation.common.exceptions.ServiceCombException;
+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.serviceregistry.RegistryUtils;
+import io.servicecomb.serviceregistry.api.registry.Microservice;
+import io.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
+
+public class DefaultMicroserviceHealthChecker implements HealthChecker {
+
+  private final String extraData;
+
+  public DefaultMicroserviceHealthChecker() {
+    try {
+      Microservice microservice = RegistryUtils.getMicroservice();
+      MicroserviceInstance instance = RegistryUtils.getMicroserviceInstance();
+      extraData = JsonUtils.writeValueAsString(new DefaultHealthCheckExtraData(
+          instance.getInstanceId(),
+          instance.getHostName(),
+          microservice.getAppId(),
+          microservice.getServiceName(),
+          microservice.getVersion(),
+          String.join(",", instance.getEndpoints())));
+    } catch (JsonProcessingException e) {
+      throw new ServiceCombException("unable load microservice info for healthchecker", e);
+    }
+  }
+
+  @Override
+  public String getName() {
+    return "default";
+  }
+
+  @Override
+  public HealthCheckResult check() {
+    return new HealthCheckResult(true, "", extraData);
+  }
+}
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
new file mode 100644
index 0000000..0393ab9
--- /dev/null
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultHealthCheckerManager.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 io.servicecomb.metrics.core.publish;
+
+import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
+
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
+
+import org.springframework.stereotype.Component;
+
+import io.servicecomb.metrics.common.HealthCheckResult;
+import io.servicecomb.metrics.common.HealthChecker;
+import io.servicecomb.metrics.core.health.DefaultMicroserviceHealthChecker;
+import io.servicecomb.swagger.invocation.exception.InvocationException;
+
+@Component
+public class DefaultHealthCheckerManager implements HealthCheckerManager {
+  private final Map<String, HealthChecker> healthCheckers;
+
+  public DefaultHealthCheckerManager() {
+    this.healthCheckers = new ConcurrentHashMap<>();
+    HealthChecker defaultHealthChecker = new DefaultMicroserviceHealthChecker();
+    this.healthCheckers.put(defaultHealthChecker.getName(), defaultHealthChecker);
+  }
+
+  @Override
+  public void register(HealthChecker checker) {
+    healthCheckers.put(checker.getName(), checker);
+  }
+
+  @Override
+  public Map<String, HealthCheckResult> check() {
+    return healthCheckers.entrySet().stream().collect(Collectors.toMap(Entry::getKey, e -> e.getValue().check()));
+  }
+
+  @Override
+  public HealthCheckResult check(String name) {
+    HealthChecker checker = healthCheckers.get(name);
+    if (checker != null) {
+      return checker.check();
+    }
+    throw new InvocationException(BAD_REQUEST, "HealthChecker name : " + name + " unregister");
+  }
+}
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultHealthCheckerPublisher.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultHealthCheckerPublisher.java
new file mode 100644
index 0000000..69eb6b1
--- /dev/null
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultHealthCheckerPublisher.java
@@ -0,0 +1,59 @@
+/*
+ * 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.metrics.core.publish;
+
+import java.util.Map;
+
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import io.servicecomb.metrics.common.HealthCheckResult;
+import io.servicecomb.metrics.common.HealthCheckerPublisher;
+import io.servicecomb.provider.rest.common.RestSchema;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+
+@RestSchema(schemaId = "metricsEndpoint")
+@RequestMapping(path = "/health")
+public class DefaultHealthCheckerPublisher implements HealthCheckerPublisher {
+
+  private final HealthCheckerManager manager;
+
+  public DefaultHealthCheckerPublisher(HealthCheckerManager manager) {
+    this.manager = manager;
+  }
+
+  @RequestMapping(path = "/", method = RequestMethod.GET)
+  @CrossOrigin
+  @Override
+  public Map<String, HealthCheckResult> health() {
+    return manager.check();
+  }
+
+  @ApiResponses({
+      @ApiResponse(code = 400, response = String.class, message = "illegal request content"),
+  })
+  @RequestMapping(path = "/{name}", method = RequestMethod.GET)
+  @CrossOrigin
+  @Override
+  public HealthCheckResult healthWithName(@PathVariable(name = "name") String name) {
+    return manager.check(name);
+  }
+}
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/HealthCheckerManager.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/HealthCheckerManager.java
new file mode 100644
index 0000000..693a7fd
--- /dev/null
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/HealthCheckerManager.java
@@ -0,0 +1,31 @@
+/*
+ * 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.metrics.core.publish;
+
+import java.util.Map;
+
+import io.servicecomb.metrics.common.HealthCheckResult;
+import io.servicecomb.metrics.common.HealthChecker;
+
+public interface HealthCheckerManager {
+  void register(HealthChecker checker);
+
+  Map<String,HealthCheckResult> check();
+
+  HealthCheckResult check(String name);
+}
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
new file mode 100644
index 0000000..4beaf66
--- /dev/null
+++ b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestHealthCheckerManager.java
@@ -0,0 +1,81 @@
+/*
+ * 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.metrics.core;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+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.core.publish.DefaultHealthCheckerManager;
+import io.servicecomb.metrics.core.publish.HealthCheckerManager;
+import io.servicecomb.serviceregistry.RegistryUtils;
+import io.servicecomb.serviceregistry.api.registry.Microservice;
+import io.servicecomb.serviceregistry.api.registry.MicroserviceInstance;
+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;
+      }
+    };
+
+    HealthCheckerManager manager = new DefaultHealthCheckerManager();
+    Map<String, HealthCheckResult> results = manager.check();
+
+    Assert.assertTrue(results.get("default").isHealth());
+
+    DefaultHealthCheckExtraData data = JsonUtils.OBJ_MAPPER
+        .readValue(results.get("default").getExtraData(), DefaultHealthCheckExtraData.class);
+    Assert.assertTrue(data.getAppId().equals("appId"));
+    Assert.assertTrue(data.getServiceName().equals("serviceName"));
+    Assert.assertTrue(data.getServiceVersion().equals("0.0.1"));
+    Assert.assertTrue(data.getInstanceId().equals("001"));
+    Assert.assertTrue(data.getHostName().equals("localhost"));
+    Assert.assertTrue(data.getEndpoints().equals("127.0.0.1,192.168.0.100"));
+  }
+}
diff --git a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestHealthCheckerPublisher.java b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestHealthCheckerPublisher.java
new file mode 100644
index 0000000..44978df
--- /dev/null
+++ b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestHealthCheckerPublisher.java
@@ -0,0 +1,59 @@
+/*
+ * 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.metrics.core;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+
+import io.servicecomb.foundation.common.utils.JsonUtils;
+import io.servicecomb.metrics.common.HealthCheckResult;
+import io.servicecomb.metrics.common.HealthCheckerPublisher;
+import io.servicecomb.metrics.core.publish.DefaultHealthCheckerPublisher;
+import io.servicecomb.metrics.core.publish.HealthCheckerManager;
+
+public class TestHealthCheckerPublisher {
+
+  @Test
+  public void testPublisher() throws JsonProcessingException {
+    HealthCheckerManager manager = mock(HealthCheckerManager.class);
+
+    Map<String, HealthCheckResult> results = new HashMap<>();
+    HealthCheckResult result = new HealthCheckResult(true, "ok", "extra");
+    results.put("default", result);
+
+    when(manager.check()).thenReturn(results);
+    when(manager.check("default")).thenReturn(result);
+
+    HealthCheckerPublisher publisher = new DefaultHealthCheckerPublisher(manager);
+    Map<String, HealthCheckResult> content = publisher.health();
+    Assert.assertTrue(JsonUtils.writeValueAsString(content.get("default"))
+        .equals(JsonUtils.writeValueAsString(result)));
+
+    HealthCheckResult checkResult = publisher.healthWithName("default");
+    Assert.assertTrue(JsonUtils.writeValueAsString(checkResult)
+        .equals(JsonUtils.writeValueAsString(result)));
+  }
+}

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.