/* * 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.base.MoreObjects; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; import io.grpc.ConnectivityState; import io.grpc.InternalChannelz; import io.grpc.InternalChannelz.ChannelStats; import io.grpc.InternalChannelz.Security; import io.grpc.InternalChannelz.ServerStats; import io.grpc.InternalChannelz.SocketOptions; import io.grpc.InternalChannelz.SocketStats; import io.grpc.InternalChannelz.TransportStats; import io.grpc.InternalInstrumented; import io.grpc.InternalLogId; import io.grpc.InternalWithLogId; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.util.Collections; /** * Test class definitions that will be used in the proto utils test as well as * channelz service test. */ final class ChannelzTestHelper { static final class TestSocket implements InternalInstrumented { private final InternalLogId id = InternalLogId.allocate("socket", /*details=*/ null); TransportStats transportStats = new TransportStats( /*streamsStarted=*/ 1, /*lastLocalStreamCreatedTimeNanos=*/ 2, /*lastRemoteStreamCreatedTimeNanos=*/ 3, /*streamsSucceeded=*/ 4, /*streamsFailed=*/ 5, /*messagesSent=*/ 6, /*messagesReceived=*/ 7, /*keepAlivesSent=*/ 8, /*lastMessageSentTimeNanos=*/ 9, /*lastMessageReceivedTimeNanos=*/ 10, /*localFlowControlWindow=*/ 11, /*remoteFlowControlWindow=*/ 12); SocketAddress local = new InetSocketAddress("10.0.0.1", 1000); SocketAddress remote = new InetSocketAddress("10.0.0.2", 1000); InternalChannelz.SocketOptions socketOptions = new InternalChannelz.SocketOptions.Builder().build(); Security security = null; @Override public ListenableFuture getStats() { SettableFuture ret = SettableFuture.create(); ret.set( new SocketStats( transportStats, local, remote, socketOptions, security)); return ret; } @Override public InternalLogId getLogId() { return id; } @Override public String toString() { return MoreObjects.toStringHelper(this) .add("logId", getLogId()) .toString(); } } static final class TestListenSocket implements InternalInstrumented { private final InternalLogId id = InternalLogId.allocate("listensocket", /*details=*/ null); SocketAddress listenAddress = new InetSocketAddress("10.0.0.1", 1234); @Override public ListenableFuture getStats() { SettableFuture ret = SettableFuture.create(); ret.set( new SocketStats( /*data=*/ null, listenAddress, /*remote=*/ null, new SocketOptions.Builder().addOption("listen_option", "listen_option_value").build(), /*security=*/ null)); return ret; } @Override public InternalLogId getLogId() { return id; } @Override public String toString() { return MoreObjects.toStringHelper(this) .add("logId", getLogId()) .toString(); } } static final class TestServer implements InternalInstrumented { private final InternalLogId id = InternalLogId.allocate("server", /*details=*/ null); ServerStats serverStats = new ServerStats( /*callsStarted=*/ 1, /*callsSucceeded=*/ 2, /*callsFailed=*/ 3, /*lastCallStartedNanos=*/ 4, Collections.>emptyList()); @Override public ListenableFuture getStats() { SettableFuture ret = SettableFuture.create(); ret.set(serverStats); return ret; } @Override public InternalLogId getLogId() { return id; } @Override public String toString() { return MoreObjects.toStringHelper(this) .add("logId", getLogId()) .toString(); } } static final class TestChannel implements InternalInstrumented { private final InternalLogId id = InternalLogId.allocate("channel-or-subchannel", /*details=*/ null); ChannelStats stats = new ChannelStats.Builder() .setTarget("sometarget") .setState(ConnectivityState.READY) .setCallsStarted(1) .setCallsSucceeded(2) .setCallsFailed(3) .setLastCallStartedNanos(4) .setSubchannels(Collections.emptyList()) .setSockets(Collections.emptyList()) .build(); @Override public ListenableFuture getStats() { SettableFuture ret = SettableFuture.create(); ret.set(stats); return ret; } @Override public InternalLogId getLogId() { return id; } @Override public String toString() { return MoreObjects.toStringHelper(this) .add("logId", getLogId()) .toString(); } } }