From bab1fe38dc50d4178955b79cfb1636afd2aa64df Mon Sep 17 00:00:00 2001 From: Chengyuan Zhang Date: Fri, 16 Apr 2021 17:27:12 -0700 Subject: [PATCH] services: move classes with protobuf dependency into io.grpc.protobuf.services (#8056) To separately manage services/classes with and without protobuf dependency in services package, we are moving classes with protobuf dependency into io.grpc.protobuf.services. This includes healthchecking, reflection, channelz, and binlogging. Forwarding classes are created to avoid breaking existing users, while they are marked as deprecated to notify users to migrate. --- .../testing/integration/XdsTestServer.java | 2 +- services/BUILD.bazel | 18 +- .../services/BinaryLogProvider.java | 2 +- .../services/BinaryLogProviderImpl.java | 2 +- .../services/BinaryLogSink.java | 2 +- .../io/grpc/protobuf/services/BinaryLogs.java | 53 ++++ .../{ => protobuf}/services/BinlogHelper.java | 4 +- .../services/ChannelzProtoUtil.java | 2 +- .../protobuf/services/ChannelzService.java | 234 ++++++++++++++++++ .../HealthCheckingLoadBalancerFactory.java | 2 +- .../HealthCheckingLoadBalancerUtil.java | 2 +- .../services/HealthServiceImpl.java | 2 +- .../services/HealthStatusManager.java | 89 +++++++ .../services/InetAddressUtil.java | 4 +- .../{ => protobuf}/services/TempFileSink.java | 2 +- ...heckingRoundRobinLoadBalancerProvider.java | 4 +- .../grpc/protobuf/services/package-info.java | 20 ++ .../java/io/grpc/services/AdminInterface.java | 1 + .../java/io/grpc/services/BinaryLogs.java | 11 +- .../io/grpc/services/ChannelzService.java | 157 ++---------- .../io/grpc/services/HealthStatusManager.java | 21 +- .../java/io/grpc/services/package-info.java | 2 + .../services/io.grpc.LoadBalancerProvider | 2 +- .../services/BinaryLogProviderImplTest.java | 2 +- .../services/BinaryLogProviderTest.java | 2 +- .../services/BinlogHelperTest.java | 18 +- .../services/ChannelzProtoUtilTest.java | 10 +- .../services/ChannelzServiceTest.java | 8 +- .../services/ChannelzTestHelper.java | 2 +- ...HealthCheckingLoadBalancerFactoryTest.java | 4 +- .../services/HealthStatusManagerTest.java | 2 +- .../services/TempFileSinkTest.java | 5 +- ...ingRoundRobinLoadBalancerProviderTest.java | 4 +- .../grpc/services/CallMetricRecorderTest.java | 2 +- 34 files changed, 488 insertions(+), 209 deletions(-) rename services/src/main/java/io/grpc/{ => protobuf}/services/BinaryLogProvider.java (99%) rename services/src/main/java/io/grpc/{ => protobuf}/services/BinaryLogProviderImpl.java (98%) rename services/src/main/java/io/grpc/{ => protobuf}/services/BinaryLogSink.java (96%) create mode 100644 services/src/main/java/io/grpc/protobuf/services/BinaryLogs.java rename services/src/main/java/io/grpc/{ => protobuf}/services/BinlogHelper.java (99%) rename services/src/main/java/io/grpc/{ => protobuf}/services/ChannelzProtoUtil.java (99%) create mode 100644 services/src/main/java/io/grpc/protobuf/services/ChannelzService.java rename services/src/main/java/io/grpc/{ => protobuf}/services/HealthCheckingLoadBalancerFactory.java (99%) rename services/src/main/java/io/grpc/{ => protobuf}/services/HealthCheckingLoadBalancerUtil.java (98%) rename services/src/main/java/io/grpc/{ => protobuf}/services/HealthServiceImpl.java (99%) create mode 100644 services/src/main/java/io/grpc/protobuf/services/HealthStatusManager.java rename services/src/main/java/io/grpc/{ => protobuf}/services/InetAddressUtil.java (98%) rename services/src/main/java/io/grpc/{ => protobuf}/services/TempFileSink.java (98%) rename services/src/main/java/io/grpc/{ => protobuf}/services/internal/HealthCheckingRoundRobinLoadBalancerProvider.java (95%) create mode 100644 services/src/main/java/io/grpc/protobuf/services/package-info.java rename services/src/test/java/io/grpc/{ => protobuf}/services/BinaryLogProviderImplTest.java (98%) rename services/src/test/java/io/grpc/{ => protobuf}/services/BinaryLogProviderTest.java (99%) rename services/src/test/java/io/grpc/{ => protobuf}/services/BinlogHelperTest.java (99%) rename services/src/test/java/io/grpc/{ => protobuf}/services/ChannelzProtoUtilTest.java (99%) rename services/src/test/java/io/grpc/{ => protobuf}/services/ChannelzServiceTest.java (97%) rename services/src/test/java/io/grpc/{ => protobuf}/services/ChannelzTestHelper.java (99%) rename services/src/test/java/io/grpc/{ => protobuf}/services/HealthCheckingLoadBalancerFactoryTest.java (99%) rename services/src/test/java/io/grpc/{ => protobuf}/services/HealthStatusManagerTest.java (99%) rename services/src/test/java/io/grpc/{ => protobuf}/services/TempFileSinkTest.java (94%) rename services/src/test/java/io/grpc/{ => protobuf}/services/internal/HealthCheckingRoundRobinLoadBalancerProviderTest.java (94%) diff --git a/interop-testing/src/main/java/io/grpc/testing/integration/XdsTestServer.java b/interop-testing/src/main/java/io/grpc/testing/integration/XdsTestServer.java index c8f94bff074..8b46e849c92 100644 --- a/interop-testing/src/main/java/io/grpc/testing/integration/XdsTestServer.java +++ b/interop-testing/src/main/java/io/grpc/testing/integration/XdsTestServer.java @@ -30,9 +30,9 @@ import io.grpc.StatusRuntimeException; import io.grpc.health.v1.HealthCheckResponse.ServingStatus; import io.grpc.netty.NettyServerBuilder; +import io.grpc.protobuf.services.HealthStatusManager; import io.grpc.protobuf.services.ProtoReflectionService; import io.grpc.services.AdminInterface; -import io.grpc.services.HealthStatusManager; import io.grpc.stub.StreamObserver; import io.grpc.testing.integration.Messages.SimpleRequest; import io.grpc.testing.integration.Messages.SimpleResponse; diff --git a/services/BUILD.bazel b/services/BUILD.bazel index 97b5120ccd3..c1dd3ad353f 100644 --- a/services/BUILD.bazel +++ b/services/BUILD.bazel @@ -5,12 +5,12 @@ package(default_visibility = ["//visibility:public"]) java_library( name = "binarylog", srcs = [ - "src/main/java/io/grpc/services/BinaryLogProvider.java", - "src/main/java/io/grpc/services/BinaryLogProviderImpl.java", - "src/main/java/io/grpc/services/BinaryLogSink.java", - "src/main/java/io/grpc/services/BinlogHelper.java", - "src/main/java/io/grpc/services/InetAddressUtil.java", - "src/main/java/io/grpc/services/TempFileSink.java", + "src/main/java/io/grpc/protobuf/services/BinaryLogProvider.java", + "src/main/java/io/grpc/protobuf/services/BinaryLogProviderImpl.java", + "src/main/java/io/grpc/protobuf/services/BinaryLogSink.java", + "src/main/java/io/grpc/protobuf/services/BinlogHelper.java", + "src/main/java/io/grpc/protobuf/services/InetAddressUtil.java", + "src/main/java/io/grpc/protobuf/services/TempFileSink.java", ], deps = [ "//api", @@ -26,7 +26,8 @@ java_library( java_library( name = "channelz", srcs = [ - "src/main/java/io/grpc/services/ChannelzProtoUtil.java", + "src/main/java/io/grpc/protobuf/services/ChannelzProtoUtil.java", + "src/main/java/io/grpc/protobuf/services/ChannelzService.java", "src/main/java/io/grpc/services/ChannelzService.java", ], deps = [ @@ -66,7 +67,8 @@ java_library( java_library( name = "health", srcs = [ - "src/main/java/io/grpc/services/HealthServiceImpl.java", + "src/main/java/io/grpc/protobuf/services/HealthServiceImpl.java", + "src/main/java/io/grpc/protobuf/services/HealthStatusManager.java", "src/main/java/io/grpc/services/HealthStatusManager.java", ], deps = [ diff --git a/services/src/main/java/io/grpc/services/BinaryLogProvider.java b/services/src/main/java/io/grpc/protobuf/services/BinaryLogProvider.java similarity index 99% rename from services/src/main/java/io/grpc/services/BinaryLogProvider.java rename to services/src/main/java/io/grpc/protobuf/services/BinaryLogProvider.java index 3ca5de65558..bbbb88ce6e8 100644 --- a/services/src/main/java/io/grpc/services/BinaryLogProvider.java +++ b/services/src/main/java/io/grpc/protobuf/services/BinaryLogProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; diff --git a/services/src/main/java/io/grpc/services/BinaryLogProviderImpl.java b/services/src/main/java/io/grpc/protobuf/services/BinaryLogProviderImpl.java similarity index 98% rename from services/src/main/java/io/grpc/services/BinaryLogProviderImpl.java rename to services/src/main/java/io/grpc/protobuf/services/BinaryLogProviderImpl.java index dee13a924c6..f68d67b27b7 100644 --- a/services/src/main/java/io/grpc/services/BinaryLogProviderImpl.java +++ b/services/src/main/java/io/grpc/protobuf/services/BinaryLogProviderImpl.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import com.google.common.base.Preconditions; import io.grpc.CallOptions; diff --git a/services/src/main/java/io/grpc/services/BinaryLogSink.java b/services/src/main/java/io/grpc/protobuf/services/BinaryLogSink.java similarity index 96% rename from services/src/main/java/io/grpc/services/BinaryLogSink.java rename to services/src/main/java/io/grpc/protobuf/services/BinaryLogSink.java index 1c1c193e4fe..44e4e2cc856 100644 --- a/services/src/main/java/io/grpc/services/BinaryLogSink.java +++ b/services/src/main/java/io/grpc/protobuf/services/BinaryLogSink.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import com.google.protobuf.MessageLite; import io.grpc.ExperimentalApi; diff --git a/services/src/main/java/io/grpc/protobuf/services/BinaryLogs.java b/services/src/main/java/io/grpc/protobuf/services/BinaryLogs.java new file mode 100644 index 00000000000..4a7757c8617 --- /dev/null +++ b/services/src/main/java/io/grpc/protobuf/services/BinaryLogs.java @@ -0,0 +1,53 @@ +/* + * Copyright 2018, gRPC Authors 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. + */ + +package io.grpc.protobuf.services; + +import io.grpc.BinaryLog; +import io.grpc.ExperimentalApi; +import java.io.IOException; + +@ExperimentalApi("https://github.com/grpc/grpc-java/issues/4017") +public final class BinaryLogs { + /** + * Creates a binary log that writes to a temp file. Warning: this implementation is + * not performance optimized, and RPCs will experience back pressure if disk IO does not keep + * up. + */ + public static BinaryLog createBinaryLog() throws IOException { + return new BinaryLogProviderImpl(); + } + + /** + * Deprecated and will be removed in a future version of gRPC. + */ + @Deprecated + public static BinaryLog createBinaryLog(BinaryLogSink sink) throws IOException { + return new BinaryLogProviderImpl(sink); + } + + /** + * Creates a binary log with a custom {@link BinaryLogSink} for receiving the logged data, + * and a config string as defined by + * + * A16-binary-logging. + */ + public static BinaryLog createBinaryLog(BinaryLogSink sink, String configStr) throws IOException { + return new BinaryLogProviderImpl(sink, configStr); + } + + private BinaryLogs() {} +} diff --git a/services/src/main/java/io/grpc/services/BinlogHelper.java b/services/src/main/java/io/grpc/protobuf/services/BinlogHelper.java similarity index 99% rename from services/src/main/java/io/grpc/services/BinlogHelper.java rename to services/src/main/java/io/grpc/protobuf/services/BinlogHelper.java index d8923160e5c..167eefa44c6 100644 --- a/services/src/main/java/io/grpc/services/BinlogHelper.java +++ b/services/src/main/java/io/grpc/protobuf/services/BinlogHelper.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; -import static io.grpc.services.BinaryLogProvider.BYTEARRAY_MARSHALLER; +import static io.grpc.protobuf.services.BinaryLogProvider.BYTEARRAY_MARSHALLER; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Charsets; diff --git a/services/src/main/java/io/grpc/services/ChannelzProtoUtil.java b/services/src/main/java/io/grpc/protobuf/services/ChannelzProtoUtil.java similarity index 99% rename from services/src/main/java/io/grpc/services/ChannelzProtoUtil.java rename to services/src/main/java/io/grpc/protobuf/services/ChannelzProtoUtil.java index 349995d9f80..cf003b2f881 100644 --- a/services/src/main/java/io/grpc/services/ChannelzProtoUtil.java +++ b/services/src/main/java/io/grpc/protobuf/services/ChannelzProtoUtil.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.ListenableFuture; diff --git a/services/src/main/java/io/grpc/protobuf/services/ChannelzService.java b/services/src/main/java/io/grpc/protobuf/services/ChannelzService.java new file mode 100644 index 00000000000..66daf559d32 --- /dev/null +++ b/services/src/main/java/io/grpc/protobuf/services/ChannelzService.java @@ -0,0 +1,234 @@ +/* + * Copyright 2018 The gRPC Authors + * + * 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. + */ + +package io.grpc.protobuf.services; + +import com.google.common.annotations.VisibleForTesting; +import io.grpc.ExperimentalApi; +import io.grpc.InternalChannelz; +import io.grpc.InternalChannelz.ChannelStats; +import io.grpc.InternalChannelz.ServerList; +import io.grpc.InternalChannelz.ServerSocketsList; +import io.grpc.InternalChannelz.ServerStats; +import io.grpc.InternalChannelz.SocketStats; +import io.grpc.InternalInstrumented; +import io.grpc.Status; +import io.grpc.StatusRuntimeException; +import io.grpc.channelz.v1.ChannelzGrpc; +import io.grpc.channelz.v1.GetChannelRequest; +import io.grpc.channelz.v1.GetChannelResponse; +import io.grpc.channelz.v1.GetServerRequest; +import io.grpc.channelz.v1.GetServerResponse; +import io.grpc.channelz.v1.GetServerSocketsRequest; +import io.grpc.channelz.v1.GetServerSocketsResponse; +import io.grpc.channelz.v1.GetServersRequest; +import io.grpc.channelz.v1.GetServersResponse; +import io.grpc.channelz.v1.GetSocketRequest; +import io.grpc.channelz.v1.GetSocketResponse; +import io.grpc.channelz.v1.GetSubchannelRequest; +import io.grpc.channelz.v1.GetSubchannelResponse; +import io.grpc.channelz.v1.GetTopChannelsRequest; +import io.grpc.channelz.v1.GetTopChannelsResponse; +import io.grpc.stub.StreamObserver; + +/** + * The channelz service provides stats about a running gRPC process. + */ +@ExperimentalApi("https://github.com/grpc/grpc-java/issues/4206") +public final class ChannelzService extends ChannelzGrpc.ChannelzImplBase { + private final InternalChannelz channelz; + private final int maxPageSize; + + /** + * Creates an instance. + */ + public static ChannelzService newInstance(int maxPageSize) { + return new ChannelzService(InternalChannelz.instance(), maxPageSize); + } + + @VisibleForTesting + ChannelzService(InternalChannelz channelz, int maxPageSize) { + this.channelz = channelz; + this.maxPageSize = maxPageSize; + } + + /** Returns top level channel aka {@link io.grpc.ManagedChannel}. */ + @Override + public void getTopChannels( + GetTopChannelsRequest request, StreamObserver responseObserver) { + InternalChannelz.RootChannelList rootChannels + = channelz.getRootChannels(request.getStartChannelId(), maxPageSize); + + GetTopChannelsResponse resp; + try { + resp = ChannelzProtoUtil.toGetTopChannelResponse(rootChannels); + } catch (StatusRuntimeException e) { + responseObserver.onError(e); + return; + } + + responseObserver.onNext(resp); + responseObserver.onCompleted(); + } + + /** Returns a top level channel aka {@link io.grpc.ManagedChannel}. */ + @Override + public void getChannel( + GetChannelRequest request, StreamObserver responseObserver) { + InternalInstrumented s = channelz.getRootChannel(request.getChannelId()); + if (s == null) { + responseObserver.onError( + Status.NOT_FOUND.withDescription("Can't find channel " + request.getChannelId()) + .asRuntimeException()); + return; + } + + GetChannelResponse resp; + try { + resp = GetChannelResponse + .newBuilder() + .setChannel(ChannelzProtoUtil.toChannel(s)) + .build(); + } catch (StatusRuntimeException e) { + responseObserver.onError(e); + return; + } + + responseObserver.onNext(resp); + responseObserver.onCompleted(); + } + + /** Returns servers. */ + @Override + public void getServers( + GetServersRequest request, StreamObserver responseObserver) { + ServerList servers = channelz.getServers(request.getStartServerId(), maxPageSize); + + GetServersResponse resp; + try { + resp = ChannelzProtoUtil.toGetServersResponse(servers); + } catch (StatusRuntimeException e) { + responseObserver.onError(e); + return; + } + + responseObserver.onNext(resp); + responseObserver.onCompleted(); + } + + /** Returns a server. */ + @Override + public void getServer( + GetServerRequest request, StreamObserver responseObserver) { + InternalInstrumented s = channelz.getServer(request.getServerId()); + if (s == null) { + responseObserver.onError( + Status.NOT_FOUND.withDescription("Can't find server " + request.getServerId()) + .asRuntimeException()); + return; + } + + GetServerResponse resp; + try { + resp = GetServerResponse + .newBuilder() + .setServer(ChannelzProtoUtil.toServer(s)) + .build(); + } catch (StatusRuntimeException e) { + responseObserver.onError(e); + return; + } + + responseObserver.onNext(resp); + responseObserver.onCompleted(); + } + + /** Returns a subchannel. */ + @Override + public void getSubchannel( + GetSubchannelRequest request, StreamObserver responseObserver) { + InternalInstrumented s = channelz.getSubchannel(request.getSubchannelId()); + if (s == null) { + responseObserver.onError( + Status.NOT_FOUND.withDescription("Can't find subchannel " + request.getSubchannelId()) + .asRuntimeException()); + return; + } + + GetSubchannelResponse resp; + try { + resp = GetSubchannelResponse + .newBuilder() + .setSubchannel(ChannelzProtoUtil.toSubchannel(s)) + .build(); + } catch (StatusRuntimeException e) { + responseObserver.onError(e); + return; + } + + responseObserver.onNext(resp); + responseObserver.onCompleted(); + } + + /** Returns a socket. */ + @Override + public void getSocket( + GetSocketRequest request, StreamObserver responseObserver) { + InternalInstrumented s = channelz.getSocket(request.getSocketId()); + if (s == null) { + responseObserver.onError( + Status.NOT_FOUND.withDescription("Can't find socket " + request.getSocketId()) + .asRuntimeException()); + return; + } + + GetSocketResponse resp; + try { + resp = + GetSocketResponse.newBuilder().setSocket(ChannelzProtoUtil.toSocket(s)).build(); + } catch (StatusRuntimeException e) { + responseObserver.onError(e); + return; + } + + responseObserver.onNext(resp); + responseObserver.onCompleted(); + } + + @Override + public void getServerSockets( + GetServerSocketsRequest request, StreamObserver responseObserver) { + ServerSocketsList serverSockets + = channelz.getServerSockets(request.getServerId(), request.getStartSocketId(), maxPageSize); + if (serverSockets == null) { + responseObserver.onError( + Status.NOT_FOUND.withDescription("Can't find server " + request.getServerId()) + .asRuntimeException()); + return; + } + + GetServerSocketsResponse resp; + try { + resp = ChannelzProtoUtil.toGetServerSocketsResponse(serverSockets); + } catch (StatusRuntimeException e) { + responseObserver.onError(e); + return; + } + + responseObserver.onNext(resp); + responseObserver.onCompleted(); + } +} diff --git a/services/src/main/java/io/grpc/services/HealthCheckingLoadBalancerFactory.java b/services/src/main/java/io/grpc/protobuf/services/HealthCheckingLoadBalancerFactory.java similarity index 99% rename from services/src/main/java/io/grpc/services/HealthCheckingLoadBalancerFactory.java rename to services/src/main/java/io/grpc/protobuf/services/HealthCheckingLoadBalancerFactory.java index e233d94a98a..d027d13f08b 100644 --- a/services/src/main/java/io/grpc/services/HealthCheckingLoadBalancerFactory.java +++ b/services/src/main/java/io/grpc/protobuf/services/HealthCheckingLoadBalancerFactory.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; diff --git a/services/src/main/java/io/grpc/services/HealthCheckingLoadBalancerUtil.java b/services/src/main/java/io/grpc/protobuf/services/HealthCheckingLoadBalancerUtil.java similarity index 98% rename from services/src/main/java/io/grpc/services/HealthCheckingLoadBalancerUtil.java rename to services/src/main/java/io/grpc/protobuf/services/HealthCheckingLoadBalancerUtil.java index c22716f46cf..7988ed8ff9e 100644 --- a/services/src/main/java/io/grpc/services/HealthCheckingLoadBalancerUtil.java +++ b/services/src/main/java/io/grpc/protobuf/services/HealthCheckingLoadBalancerUtil.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import io.grpc.ExperimentalApi; import io.grpc.LoadBalancer; diff --git a/services/src/main/java/io/grpc/services/HealthServiceImpl.java b/services/src/main/java/io/grpc/protobuf/services/HealthServiceImpl.java similarity index 99% rename from services/src/main/java/io/grpc/services/HealthServiceImpl.java rename to services/src/main/java/io/grpc/protobuf/services/HealthServiceImpl.java index 906f5250d36..a1933c632fd 100644 --- a/services/src/main/java/io/grpc/services/HealthServiceImpl.java +++ b/services/src/main/java/io/grpc/protobuf/services/HealthServiceImpl.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import com.google.common.annotations.VisibleForTesting; import com.google.common.util.concurrent.MoreExecutors; diff --git a/services/src/main/java/io/grpc/protobuf/services/HealthStatusManager.java b/services/src/main/java/io/grpc/protobuf/services/HealthStatusManager.java new file mode 100644 index 00000000000..56cff68f3aa --- /dev/null +++ b/services/src/main/java/io/grpc/protobuf/services/HealthStatusManager.java @@ -0,0 +1,89 @@ +/* + * Copyright 2016 The gRPC Authors + * + * 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. + */ + +package io.grpc.protobuf.services; + +import static com.google.common.base.Preconditions.checkNotNull; + +import io.grpc.BindableService; +import io.grpc.health.v1.HealthCheckResponse.ServingStatus; + +/** + * A {@code HealthStatusManager} object manages a health check service. A health check service is + * 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 { + /** + * The special "service name" that represent all services on a GRPC server. It is an empty + * string. + */ + public static final String SERVICE_NAME_ALL_SERVICES = ""; + + private final HealthServiceImpl healthService; + + /** + * Creates a new health service instance. + */ + public HealthStatusManager() { + healthService = new HealthServiceImpl(); + } + + /** + * Gets the health check service created in the constructor. + */ + public BindableService getHealthService() { + return healthService; + } + + /** + * Updates the status of the server. + * @param service the name of some aspect of the server that is associated with a health status. + * This name can have no relation with the gRPC services that the server is running with. + * It can also be an empty String {@code ""} per the gRPC specification. + * @param status is one of the values {@link ServingStatus#SERVING}, + * {@link ServingStatus#NOT_SERVING} and {@link ServingStatus#UNKNOWN}. + */ + public void setStatus(String service, ServingStatus status) { + checkNotNull(status, "status"); + healthService.setStatus(service, status); + } + + /** + * Clears the health status record of a service. The health service will respond with NOT_FOUND + * error on checking the status of a cleared service. + * @param service the name of some aspect of the server that is associated with a health status. + * This name can have no relation with the gRPC services that the server is running with. + * It can also be an empty String {@code ""} per the gRPC specification. + */ + public void clearStatus(String service) { + healthService.clearStatus(service); + } + + /** + * enterTerminalState causes the health status manager to mark all services as not serving, and + * prevents future updates to services. This method is meant to be called prior to server + * shutdown as a way to indicate that clients should redirect their traffic elsewhere. + */ + public void enterTerminalState() { + healthService.enterTerminalState(); + } +} diff --git a/services/src/main/java/io/grpc/services/InetAddressUtil.java b/services/src/main/java/io/grpc/protobuf/services/InetAddressUtil.java similarity index 98% rename from services/src/main/java/io/grpc/services/InetAddressUtil.java rename to services/src/main/java/io/grpc/protobuf/services/InetAddressUtil.java index 057a8ccb5e6..b8bacbc2bb3 100644 --- a/services/src/main/java/io/grpc/services/InetAddressUtil.java +++ b/services/src/main/java/io/grpc/protobuf/services/InetAddressUtil.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; @@ -91,4 +91,4 @@ private static String hextetsToIPv6String(int[] hextets) { } return buf.toString(); } -} \ No newline at end of file +} diff --git a/services/src/main/java/io/grpc/services/TempFileSink.java b/services/src/main/java/io/grpc/protobuf/services/TempFileSink.java similarity index 98% rename from services/src/main/java/io/grpc/services/TempFileSink.java rename to services/src/main/java/io/grpc/protobuf/services/TempFileSink.java index c28339d1bd6..0ab91f54329 100644 --- a/services/src/main/java/io/grpc/services/TempFileSink.java +++ b/services/src/main/java/io/grpc/protobuf/services/TempFileSink.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import com.google.protobuf.MessageLite; import java.io.BufferedOutputStream; diff --git a/services/src/main/java/io/grpc/services/internal/HealthCheckingRoundRobinLoadBalancerProvider.java b/services/src/main/java/io/grpc/protobuf/services/internal/HealthCheckingRoundRobinLoadBalancerProvider.java similarity index 95% rename from services/src/main/java/io/grpc/services/internal/HealthCheckingRoundRobinLoadBalancerProvider.java rename to services/src/main/java/io/grpc/protobuf/services/internal/HealthCheckingRoundRobinLoadBalancerProvider.java index c2c6357b68e..68d67dbeb28 100644 --- a/services/src/main/java/io/grpc/services/internal/HealthCheckingRoundRobinLoadBalancerProvider.java +++ b/services/src/main/java/io/grpc/protobuf/services/internal/HealthCheckingRoundRobinLoadBalancerProvider.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services.internal; +package io.grpc.protobuf.services.internal; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Throwables; @@ -23,7 +23,7 @@ import io.grpc.LoadBalancer.Helper; import io.grpc.LoadBalancerProvider; import io.grpc.NameResolver.ConfigOrError; -import io.grpc.services.HealthCheckingLoadBalancerUtil; +import io.grpc.protobuf.services.HealthCheckingLoadBalancerUtil; import java.util.Map; /** diff --git a/services/src/main/java/io/grpc/protobuf/services/package-info.java b/services/src/main/java/io/grpc/protobuf/services/package-info.java new file mode 100644 index 00000000000..6fb88cc4756 --- /dev/null +++ b/services/src/main/java/io/grpc/protobuf/services/package-info.java @@ -0,0 +1,20 @@ +/* + * Copyright 2020 The gRPC Authors + * + * 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. + */ + +/** + * Service definitions and utilities with protobuf dependency for the pre-defined gRPC services. + */ +package io.grpc.protobuf.services; diff --git a/services/src/main/java/io/grpc/services/AdminInterface.java b/services/src/main/java/io/grpc/services/AdminInterface.java index 32c467ba63c..2288d844fd1 100644 --- a/services/src/main/java/io/grpc/services/AdminInterface.java +++ b/services/src/main/java/io/grpc/services/AdminInterface.java @@ -19,6 +19,7 @@ import io.grpc.BindableService; import io.grpc.ExperimentalApi; import io.grpc.ServerServiceDefinition; +import io.grpc.protobuf.services.ChannelzService; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; diff --git a/services/src/main/java/io/grpc/services/BinaryLogs.java b/services/src/main/java/io/grpc/services/BinaryLogs.java index fc2d8d84ad1..e4831dc5bfa 100644 --- a/services/src/main/java/io/grpc/services/BinaryLogs.java +++ b/services/src/main/java/io/grpc/services/BinaryLogs.java @@ -18,8 +18,13 @@ import io.grpc.BinaryLog; import io.grpc.ExperimentalApi; +import io.grpc.protobuf.services.BinaryLogSink; import java.io.IOException; +/** + * @deprecated Use {@link io.grpc.protobuf.services.BinaryLogs} instead. + */ +@Deprecated @ExperimentalApi("https://github.com/grpc/grpc-java/issues/4017") public final class BinaryLogs { /** @@ -28,7 +33,7 @@ public final class BinaryLogs { * up. */ public static BinaryLog createBinaryLog() throws IOException { - return new BinaryLogProviderImpl(); + return io.grpc.protobuf.services.BinaryLogs.createBinaryLog(); } /** @@ -36,7 +41,7 @@ public static BinaryLog createBinaryLog() throws IOException { */ @Deprecated public static BinaryLog createBinaryLog(BinaryLogSink sink) throws IOException { - return new BinaryLogProviderImpl(sink); + return io.grpc.protobuf.services.BinaryLogs.createBinaryLog(sink); } /** @@ -46,7 +51,7 @@ public static BinaryLog createBinaryLog(BinaryLogSink sink) throws IOException { * A16-binary-logging. */ public static BinaryLog createBinaryLog(BinaryLogSink sink, String configStr) throws IOException { - return new BinaryLogProviderImpl(sink, configStr); + return io.grpc.protobuf.services.BinaryLogs.createBinaryLog(sink, configStr); } private BinaryLogs() {} diff --git a/services/src/main/java/io/grpc/services/ChannelzService.java b/services/src/main/java/io/grpc/services/ChannelzService.java index 8032d0ad222..e8ef2bb8a9a 100644 --- a/services/src/main/java/io/grpc/services/ChannelzService.java +++ b/services/src/main/java/io/grpc/services/ChannelzService.java @@ -16,17 +16,7 @@ package io.grpc.services; -import com.google.common.annotations.VisibleForTesting; import io.grpc.ExperimentalApi; -import io.grpc.InternalChannelz; -import io.grpc.InternalChannelz.ChannelStats; -import io.grpc.InternalChannelz.ServerList; -import io.grpc.InternalChannelz.ServerSocketsList; -import io.grpc.InternalChannelz.ServerStats; -import io.grpc.InternalChannelz.SocketStats; -import io.grpc.InternalInstrumented; -import io.grpc.Status; -import io.grpc.StatusRuntimeException; import io.grpc.channelz.v1.ChannelzGrpc; import io.grpc.channelz.v1.GetChannelRequest; import io.grpc.channelz.v1.GetChannelResponse; @@ -46,189 +36,70 @@ /** * The channelz service provides stats about a running gRPC process. + * + * @deprecated Use {@link io.grpc.protobuf.services.ChannelzService} instead. */ +@Deprecated @ExperimentalApi("https://github.com/grpc/grpc-java/issues/4206") public final class ChannelzService extends ChannelzGrpc.ChannelzImplBase { - private final InternalChannelz channelz; - private final int maxPageSize; + private final io.grpc.protobuf.services.ChannelzService delegate; /** * Creates an instance. */ public static ChannelzService newInstance(int maxPageSize) { - return new ChannelzService(InternalChannelz.instance(), maxPageSize); + return new ChannelzService(maxPageSize); } - @VisibleForTesting - ChannelzService(InternalChannelz channelz, int maxPageSize) { - this.channelz = channelz; - this.maxPageSize = maxPageSize; + private ChannelzService(int maxPageSize) { + delegate = io.grpc.protobuf.services.ChannelzService.newInstance(maxPageSize); } /** Returns top level channel aka {@link io.grpc.ManagedChannel}. */ @Override public void getTopChannels( GetTopChannelsRequest request, StreamObserver responseObserver) { - InternalChannelz.RootChannelList rootChannels - = channelz.getRootChannels(request.getStartChannelId(), maxPageSize); - - GetTopChannelsResponse resp; - try { - resp = ChannelzProtoUtil.toGetTopChannelResponse(rootChannels); - } catch (StatusRuntimeException e) { - responseObserver.onError(e); - return; - } - - responseObserver.onNext(resp); - responseObserver.onCompleted(); + delegate.getTopChannels(request, responseObserver); } /** Returns a top level channel aka {@link io.grpc.ManagedChannel}. */ @Override public void getChannel( GetChannelRequest request, StreamObserver responseObserver) { - InternalInstrumented s = channelz.getRootChannel(request.getChannelId()); - if (s == null) { - responseObserver.onError( - Status.NOT_FOUND.withDescription("Can't find channel " + request.getChannelId()) - .asRuntimeException()); - return; - } - - GetChannelResponse resp; - try { - resp = GetChannelResponse - .newBuilder() - .setChannel(ChannelzProtoUtil.toChannel(s)) - .build(); - } catch (StatusRuntimeException e) { - responseObserver.onError(e); - return; - } - - responseObserver.onNext(resp); - responseObserver.onCompleted(); + delegate.getChannel(request, responseObserver); } /** Returns servers. */ @Override public void getServers( GetServersRequest request, StreamObserver responseObserver) { - ServerList servers = channelz.getServers(request.getStartServerId(), maxPageSize); - - GetServersResponse resp; - try { - resp = ChannelzProtoUtil.toGetServersResponse(servers); - } catch (StatusRuntimeException e) { - responseObserver.onError(e); - return; - } - - responseObserver.onNext(resp); - responseObserver.onCompleted(); + delegate.getServers(request, responseObserver); } /** Returns a server. */ @Override public void getServer( GetServerRequest request, StreamObserver responseObserver) { - InternalInstrumented s = channelz.getServer(request.getServerId()); - if (s == null) { - responseObserver.onError( - Status.NOT_FOUND.withDescription("Can't find server " + request.getServerId()) - .asRuntimeException()); - return; - } - - GetServerResponse resp; - try { - resp = GetServerResponse - .newBuilder() - .setServer(ChannelzProtoUtil.toServer(s)) - .build(); - } catch (StatusRuntimeException e) { - responseObserver.onError(e); - return; - } - - responseObserver.onNext(resp); - responseObserver.onCompleted(); + delegate.getServer(request, responseObserver); } /** Returns a subchannel. */ @Override public void getSubchannel( GetSubchannelRequest request, StreamObserver responseObserver) { - InternalInstrumented s = channelz.getSubchannel(request.getSubchannelId()); - if (s == null) { - responseObserver.onError( - Status.NOT_FOUND.withDescription("Can't find subchannel " + request.getSubchannelId()) - .asRuntimeException()); - return; - } - - GetSubchannelResponse resp; - try { - resp = GetSubchannelResponse - .newBuilder() - .setSubchannel(ChannelzProtoUtil.toSubchannel(s)) - .build(); - } catch (StatusRuntimeException e) { - responseObserver.onError(e); - return; - } - - responseObserver.onNext(resp); - responseObserver.onCompleted(); + delegate.getSubchannel(request, responseObserver); } /** Returns a socket. */ @Override public void getSocket( GetSocketRequest request, StreamObserver responseObserver) { - InternalInstrumented s = channelz.getSocket(request.getSocketId()); - if (s == null) { - responseObserver.onError( - Status.NOT_FOUND.withDescription("Can't find socket " + request.getSocketId()) - .asRuntimeException()); - return; - } - - GetSocketResponse resp; - try { - resp = - GetSocketResponse.newBuilder().setSocket(ChannelzProtoUtil.toSocket(s)).build(); - } catch (StatusRuntimeException e) { - responseObserver.onError(e); - return; - } - - responseObserver.onNext(resp); - responseObserver.onCompleted(); + delegate.getSocket(request, responseObserver); } @Override public void getServerSockets( GetServerSocketsRequest request, StreamObserver responseObserver) { - ServerSocketsList serverSockets - = channelz.getServerSockets(request.getServerId(), request.getStartSocketId(), maxPageSize); - if (serverSockets == null) { - responseObserver.onError( - Status.NOT_FOUND.withDescription("Can't find server " + request.getServerId()) - .asRuntimeException()); - return; - } - - GetServerSocketsResponse resp; - try { - resp = ChannelzProtoUtil.toGetServerSocketsResponse(serverSockets); - } catch (StatusRuntimeException e) { - responseObserver.onError(e); - return; - } - - responseObserver.onNext(resp); - responseObserver.onCompleted(); + delegate.getServerSockets(request, responseObserver); } } diff --git a/services/src/main/java/io/grpc/services/HealthStatusManager.java b/services/src/main/java/io/grpc/services/HealthStatusManager.java index 1edcb53c77f..7bcaf52da52 100644 --- a/services/src/main/java/io/grpc/services/HealthStatusManager.java +++ b/services/src/main/java/io/grpc/services/HealthStatusManager.java @@ -16,8 +16,6 @@ package io.grpc.services; -import static com.google.common.base.Preconditions.checkNotNull; - import io.grpc.BindableService; import io.grpc.health.v1.HealthCheckResponse.ServingStatus; @@ -29,29 +27,33 @@ * *

The default, empty-string, service name, {@link #SERVICE_NAME_ALL_SERVICES}, is initialized to * {@link ServingStatus#SERVING}. + * + * @deprecated Use {@link io.grpc.protobuf.services.HealthStatusManager} instead. */ +@Deprecated @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/4696") public final class HealthStatusManager { /** * The special "service name" that represent all services on a GRPC server. It is an empty * string. */ - public static final String SERVICE_NAME_ALL_SERVICES = ""; + public static final String SERVICE_NAME_ALL_SERVICES = + io.grpc.protobuf.services.HealthStatusManager.SERVICE_NAME_ALL_SERVICES; - private final HealthServiceImpl healthService; + private io.grpc.protobuf.services.HealthStatusManager delegate; /** * Creates a new health service instance. */ public HealthStatusManager() { - healthService = new HealthServiceImpl(); + delegate = new io.grpc.protobuf.services.HealthStatusManager(); } /** * Gets the health check service created in the constructor. */ public BindableService getHealthService() { - return healthService; + return delegate.getHealthService(); } /** @@ -63,8 +65,7 @@ public BindableService getHealthService() { * {@link ServingStatus#NOT_SERVING} and {@link ServingStatus#UNKNOWN}. */ public void setStatus(String service, ServingStatus status) { - checkNotNull(status, "status"); - healthService.setStatus(service, status); + delegate.setStatus(service, status); } /** @@ -75,7 +76,7 @@ public void setStatus(String service, ServingStatus status) { * It can also be an empty String {@code ""} per the gRPC specification. */ public void clearStatus(String service) { - healthService.clearStatus(service); + delegate.clearStatus(service); } /** @@ -84,6 +85,6 @@ public void clearStatus(String service) { * shutdown as a way to indicate that clients should redirect their traffic elsewhere. */ public void enterTerminalState() { - healthService.enterTerminalState(); + delegate.enterTerminalState(); } } diff --git a/services/src/main/java/io/grpc/services/package-info.java b/services/src/main/java/io/grpc/services/package-info.java index 3b5b639361c..7e21ae519bb 100644 --- a/services/src/main/java/io/grpc/services/package-info.java +++ b/services/src/main/java/io/grpc/services/package-info.java @@ -14,6 +14,8 @@ * limitations under the License. */ +// TODO(chengyuanzhang): update description after deleting classes with protobuf dependency that +// have already been moved. /** * Service definitions and utilities for the pre-defined gRPC services. */ diff --git a/services/src/main/resources/META-INF/services/io.grpc.LoadBalancerProvider b/services/src/main/resources/META-INF/services/io.grpc.LoadBalancerProvider index bbc2a4902df..d3e5f85ffbb 100644 --- a/services/src/main/resources/META-INF/services/io.grpc.LoadBalancerProvider +++ b/services/src/main/resources/META-INF/services/io.grpc.LoadBalancerProvider @@ -1 +1 @@ -io.grpc.services.internal.HealthCheckingRoundRobinLoadBalancerProvider +io.grpc.protobuf.services.internal.HealthCheckingRoundRobinLoadBalancerProvider diff --git a/services/src/test/java/io/grpc/services/BinaryLogProviderImplTest.java b/services/src/test/java/io/grpc/protobuf/services/BinaryLogProviderImplTest.java similarity index 98% rename from services/src/test/java/io/grpc/services/BinaryLogProviderImplTest.java rename to services/src/test/java/io/grpc/protobuf/services/BinaryLogProviderImplTest.java index 238f5fbc0ef..cab7dcf05e5 100644 --- a/services/src/test/java/io/grpc/services/BinaryLogProviderImplTest.java +++ b/services/src/test/java/io/grpc/protobuf/services/BinaryLogProviderImplTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import static org.junit.Assert.assertNull; import static org.mockito.Mockito.mock; diff --git a/services/src/test/java/io/grpc/services/BinaryLogProviderTest.java b/services/src/test/java/io/grpc/protobuf/services/BinaryLogProviderTest.java similarity index 99% rename from services/src/test/java/io/grpc/services/BinaryLogProviderTest.java rename to services/src/test/java/io/grpc/protobuf/services/BinaryLogProviderTest.java index 6905cbb603d..53f361c83ec 100644 --- a/services/src/test/java/io/grpc/services/BinaryLogProviderTest.java +++ b/services/src/test/java/io/grpc/protobuf/services/BinaryLogProviderTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import static com.google.common.base.Charsets.UTF_8; import static com.google.common.truth.Truth.assertThat; diff --git a/services/src/test/java/io/grpc/services/BinlogHelperTest.java b/services/src/test/java/io/grpc/protobuf/services/BinlogHelperTest.java similarity index 99% rename from services/src/test/java/io/grpc/services/BinlogHelperTest.java rename to services/src/test/java/io/grpc/protobuf/services/BinlogHelperTest.java index f7d0d40726c..15c1444fa42 100644 --- a/services/src/test/java/io/grpc/services/BinlogHelperTest.java +++ b/services/src/test/java/io/grpc/protobuf/services/BinlogHelperTest.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import static com.google.common.truth.Truth.assertThat; -import static io.grpc.services.BinaryLogProvider.BYTEARRAY_MARSHALLER; -import static io.grpc.services.BinlogHelper.createMetadataProto; -import static io.grpc.services.BinlogHelper.getPeerSocket; +import static io.grpc.protobuf.services.BinaryLogProvider.BYTEARRAY_MARSHALLER; +import static io.grpc.protobuf.services.BinlogHelper.createMetadataProto; +import static io.grpc.protobuf.services.BinlogHelper.getPeerSocket; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -70,11 +70,11 @@ import io.grpc.internal.NoopClientCall; import io.grpc.internal.NoopServerCall; import io.grpc.protobuf.StatusProto; -import io.grpc.services.BinlogHelper.FactoryImpl; -import io.grpc.services.BinlogHelper.MaybeTruncated; -import io.grpc.services.BinlogHelper.SinkWriter; -import io.grpc.services.BinlogHelper.SinkWriterImpl; -import io.grpc.services.BinlogHelper.TimeProvider; +import io.grpc.protobuf.services.BinlogHelper.FactoryImpl; +import io.grpc.protobuf.services.BinlogHelper.MaybeTruncated; +import io.grpc.protobuf.services.BinlogHelper.SinkWriter; +import io.grpc.protobuf.services.BinlogHelper.SinkWriterImpl; +import io.grpc.protobuf.services.BinlogHelper.TimeProvider; import io.netty.channel.unix.DomainSocketAddress; import java.net.InetAddress; import java.net.InetSocketAddress; diff --git a/services/src/test/java/io/grpc/services/ChannelzProtoUtilTest.java b/services/src/test/java/io/grpc/protobuf/services/ChannelzProtoUtilTest.java similarity index 99% rename from services/src/test/java/io/grpc/services/ChannelzProtoUtilTest.java rename to services/src/test/java/io/grpc/protobuf/services/ChannelzProtoUtilTest.java index 45dd8056ddf..4098885fd0d 100644 --- a/services/src/test/java/io/grpc/services/ChannelzProtoUtilTest.java +++ b/services/src/test/java/io/grpc/protobuf/services/ChannelzProtoUtilTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import static com.google.common.truth.Truth.assertThat; import static io.grpc.InternalChannelz.id; @@ -74,10 +74,10 @@ import io.grpc.channelz.v1.SocketRef; import io.grpc.channelz.v1.Subchannel; import io.grpc.channelz.v1.SubchannelRef; -import io.grpc.services.ChannelzTestHelper.TestChannel; -import io.grpc.services.ChannelzTestHelper.TestListenSocket; -import io.grpc.services.ChannelzTestHelper.TestServer; -import io.grpc.services.ChannelzTestHelper.TestSocket; +import io.grpc.protobuf.services.ChannelzTestHelper.TestChannel; +import io.grpc.protobuf.services.ChannelzTestHelper.TestListenSocket; +import io.grpc.protobuf.services.ChannelzTestHelper.TestServer; +import io.grpc.protobuf.services.ChannelzTestHelper.TestSocket; import io.netty.channel.unix.DomainSocketAddress; import java.net.Inet4Address; import java.net.InetSocketAddress; diff --git a/services/src/test/java/io/grpc/services/ChannelzServiceTest.java b/services/src/test/java/io/grpc/protobuf/services/ChannelzServiceTest.java similarity index 97% rename from services/src/test/java/io/grpc/services/ChannelzServiceTest.java rename to services/src/test/java/io/grpc/protobuf/services/ChannelzServiceTest.java index 54d84358bdd..bb520a16dec 100644 --- a/services/src/test/java/io/grpc/services/ChannelzServiceTest.java +++ b/services/src/test/java/io/grpc/protobuf/services/ChannelzServiceTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import static com.google.common.truth.Truth.assertWithMessage; import static org.junit.Assert.assertEquals; @@ -35,9 +35,9 @@ import io.grpc.channelz.v1.GetSubchannelResponse; import io.grpc.channelz.v1.GetTopChannelsRequest; import io.grpc.channelz.v1.GetTopChannelsResponse; -import io.grpc.services.ChannelzTestHelper.TestChannel; -import io.grpc.services.ChannelzTestHelper.TestServer; -import io.grpc.services.ChannelzTestHelper.TestSocket; +import io.grpc.protobuf.services.ChannelzTestHelper.TestChannel; +import io.grpc.protobuf.services.ChannelzTestHelper.TestServer; +import io.grpc.protobuf.services.ChannelzTestHelper.TestSocket; import io.grpc.stub.StreamObserver; import java.util.concurrent.ExecutionException; import org.junit.Test; diff --git a/services/src/test/java/io/grpc/services/ChannelzTestHelper.java b/services/src/test/java/io/grpc/protobuf/services/ChannelzTestHelper.java similarity index 99% rename from services/src/test/java/io/grpc/services/ChannelzTestHelper.java rename to services/src/test/java/io/grpc/protobuf/services/ChannelzTestHelper.java index 6bd8e8bceb5..0b93a8d9271 100644 --- a/services/src/test/java/io/grpc/services/ChannelzTestHelper.java +++ b/services/src/test/java/io/grpc/protobuf/services/ChannelzTestHelper.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import com.google.common.base.MoreObjects; import com.google.common.util.concurrent.ListenableFuture; diff --git a/services/src/test/java/io/grpc/services/HealthCheckingLoadBalancerFactoryTest.java b/services/src/test/java/io/grpc/protobuf/services/HealthCheckingLoadBalancerFactoryTest.java similarity index 99% rename from services/src/test/java/io/grpc/services/HealthCheckingLoadBalancerFactoryTest.java rename to services/src/test/java/io/grpc/protobuf/services/HealthCheckingLoadBalancerFactoryTest.java index fc9b3f62ecf..c1e11941a4b 100644 --- a/services/src/test/java/io/grpc/services/HealthCheckingLoadBalancerFactoryTest.java +++ b/services/src/test/java/io/grpc/protobuf/services/HealthCheckingLoadBalancerFactoryTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; @@ -68,7 +68,7 @@ import io.grpc.internal.BackoffPolicy; import io.grpc.internal.FakeClock; import io.grpc.internal.ServiceConfigUtil; -import io.grpc.services.HealthCheckingLoadBalancerFactory.SubchannelImpl; +import io.grpc.protobuf.services.HealthCheckingLoadBalancerFactory.SubchannelImpl; import io.grpc.stub.StreamObserver; import java.net.SocketAddress; import java.text.MessageFormat; diff --git a/services/src/test/java/io/grpc/services/HealthStatusManagerTest.java b/services/src/test/java/io/grpc/protobuf/services/HealthStatusManagerTest.java similarity index 99% rename from services/src/test/java/io/grpc/services/HealthStatusManagerTest.java rename to services/src/test/java/io/grpc/protobuf/services/HealthStatusManagerTest.java index fe04419656f..5c5b30f336d 100644 --- a/services/src/test/java/io/grpc/services/HealthStatusManagerTest.java +++ b/services/src/test/java/io/grpc/protobuf/services/HealthStatusManagerTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; diff --git a/services/src/test/java/io/grpc/services/TempFileSinkTest.java b/services/src/test/java/io/grpc/protobuf/services/TempFileSinkTest.java similarity index 94% rename from services/src/test/java/io/grpc/services/TempFileSinkTest.java rename to services/src/test/java/io/grpc/protobuf/services/TempFileSinkTest.java index f47f10569d6..e3b662a8588 100644 --- a/services/src/test/java/io/grpc/services/TempFileSinkTest.java +++ b/services/src/test/java/io/grpc/protobuf/services/TempFileSinkTest.java @@ -14,11 +14,12 @@ * limitations under the License. */ -package io.grpc.services; +package io.grpc.protobuf.services; import static org.junit.Assert.assertEquals; import io.grpc.binarylog.v1.GrpcLogEntry; +import io.grpc.protobuf.services.TempFileSink; import java.io.DataInputStream; import java.io.FileInputStream; import java.io.IOException; @@ -27,7 +28,7 @@ import org.junit.runners.JUnit4; /** - * Tests for {@link io.grpc.services.TempFileSink}. + * Tests for {@link TempFileSink}. */ @RunWith(JUnit4.class) public class TempFileSinkTest { diff --git a/services/src/test/java/io/grpc/services/internal/HealthCheckingRoundRobinLoadBalancerProviderTest.java b/services/src/test/java/io/grpc/protobuf/services/internal/HealthCheckingRoundRobinLoadBalancerProviderTest.java similarity index 94% rename from services/src/test/java/io/grpc/services/internal/HealthCheckingRoundRobinLoadBalancerProviderTest.java rename to services/src/test/java/io/grpc/protobuf/services/internal/HealthCheckingRoundRobinLoadBalancerProviderTest.java index 1c122967d9a..470670f2060 100644 --- a/services/src/test/java/io/grpc/services/internal/HealthCheckingRoundRobinLoadBalancerProviderTest.java +++ b/services/src/test/java/io/grpc/protobuf/services/internal/HealthCheckingRoundRobinLoadBalancerProviderTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.grpc.services.internal; +package io.grpc.protobuf.services.internal; import static com.google.common.truth.Truth.assertThat; @@ -25,7 +25,7 @@ import org.junit.runners.JUnit4; /** - * Tests for {@link InternalHealthCheckingRoundRobinLoadBalancerProvider}. + * Tests for {@link HealthCheckingRoundRobinLoadBalancerProvider}. */ @RunWith(JUnit4.class) public class HealthCheckingRoundRobinLoadBalancerProviderTest { diff --git a/services/src/test/java/io/grpc/services/CallMetricRecorderTest.java b/services/src/test/java/io/grpc/services/CallMetricRecorderTest.java index db6b294bf3a..fe7a9c54df8 100644 --- a/services/src/test/java/io/grpc/services/CallMetricRecorderTest.java +++ b/services/src/test/java/io/grpc/services/CallMetricRecorderTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** Tests for {@link BinlogHelper}. */ +/** Tests for {@link CallMetricRecorder}. */ @RunWith(JUnit4.class) public class CallMetricRecorderTest {