From 32fc0bcd38eb7bdc48fcd0eb5d866bcf964bc21e Mon Sep 17 00:00:00 2001 From: Carl Mastrangelo Date: Thu, 24 Jan 2019 15:19:51 -0800 Subject: [PATCH] services: set the default serving state of all services to SERVING --- .../java/io/grpc/services/HealthServiceImpl.java | 5 +++++ .../java/io/grpc/services/HealthStatusManager.java | 3 +++ .../io/grpc/services/HealthStatusManagerTest.java | 13 +++++++++++++ 3 files changed, 21 insertions(+) diff --git a/services/src/main/java/io/grpc/services/HealthServiceImpl.java b/services/src/main/java/io/grpc/services/HealthServiceImpl.java index 378ef65790..906f5250d3 100644 --- a/services/src/main/java/io/grpc/services/HealthServiceImpl.java +++ b/services/src/main/java/io/grpc/services/HealthServiceImpl.java @@ -59,6 +59,11 @@ final class HealthServiceImpl extends HealthGrpc.HealthImplBase { private final HashMap, Boolean>> watchers = new HashMap<>(); + HealthServiceImpl() { + // Copy of what Go and C++ do. + statusMap.put(HealthStatusManager.SERVICE_NAME_ALL_SERVICES, ServingStatus.SERVING); + } + @Override public void check(HealthCheckRequest request, StreamObserver responseObserver) { diff --git a/services/src/main/java/io/grpc/services/HealthStatusManager.java b/services/src/main/java/io/grpc/services/HealthStatusManager.java index 89fa68de20..1edcb53c77 100644 --- a/services/src/main/java/io/grpc/services/HealthStatusManager.java +++ b/services/src/main/java/io/grpc/services/HealthStatusManager.java @@ -26,6 +26,9 @@ import io.grpc.health.v1.HealthCheckResponse.ServingStatus; * created in the constructor of {@code HealthStatusManager}, and it can be retrieved by the * {@link #getHealthService()} method. * The health status manager can update the health statuses of the server. + * + *

The default, empty-string, service name, {@link #SERVICE_NAME_ALL_SERVICES}, is initialized to + * {@link ServingStatus#SERVING}. */ @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/4696") public final class HealthStatusManager { diff --git a/services/src/test/java/io/grpc/services/HealthStatusManagerTest.java b/services/src/test/java/io/grpc/services/HealthStatusManagerTest.java index f3ac087380..47ce276e22 100644 --- a/services/src/test/java/io/grpc/services/HealthStatusManagerTest.java +++ b/services/src/test/java/io/grpc/services/HealthStatusManagerTest.java @@ -133,6 +133,19 @@ public class HealthStatusManagerTest { assertThat(resp.getStatus()).isEqualTo(ServingStatus.NOT_SERVING); } + @Test + public void defaultIsServing() throws Exception { + HealthCheckRequest request = + HealthCheckRequest.newBuilder().setService(HealthStatusManager.SERVICE_NAME_ALL_SERVICES) + .build(); + + HealthCheckResponse response = + blockingStub.withDeadlineAfter(5, TimeUnit.SECONDS).check(request); + + assertThat(response).isEqualTo( + HealthCheckResponse.newBuilder().setStatus(ServingStatus.SERVING).build()); + } + @Test public void getHealthService_getterReturnsTheSameHealthRefAfterUpdate() throws Exception { BindableService health = manager.getHealthService();