From 25cd0be24cc98c6139241a9e7209ed006f1fcf48 Mon Sep 17 00:00:00 2001 From: zpencer Date: Thu, 30 Nov 2017 13:01:58 -0800 Subject: [PATCH] core,netty,okhttp: move TransportTracer.Stats to io.grpc (#3812) io.grpc can not refer to io.grpc.internal so this needs to be moved out. --- .../java/io/grpc/InternalTransportStats.java | 65 +++++++++++++++++++ .../io/grpc/inprocess/InProcessTransport.java | 6 +- .../io/grpc/internal/ClientTransport.java | 3 +- .../grpc/internal/DelayedClientTransport.java | 5 +- .../grpc/internal/FailingClientTransport.java | 5 +- .../ForwardingConnectionClientTransport.java | 5 +- .../main/java/io/grpc/internal/GrpcUtil.java | 3 +- .../io/grpc/internal/ServerTransport.java | 3 +- .../io/grpc/internal/TransportTracer.java | 59 +++-------------- .../io/grpc/internal/MessageDeframerTest.java | 3 +- .../java/io/grpc/internal/ServerImplTest.java | 5 +- .../io/grpc/netty/NettyClientTransport.java | 9 +-- .../io/grpc/netty/NettyServerTransport.java | 9 +-- .../io/grpc/netty/NettyHandlerTestBase.java | 21 +++--- .../io/grpc/okhttp/OkHttpClientTransport.java | 6 +- .../testing/AbstractTransportTest.java | 58 ++++++++--------- 16 files changed, 150 insertions(+), 115 deletions(-) create mode 100644 core/src/main/java/io/grpc/InternalTransportStats.java diff --git a/core/src/main/java/io/grpc/InternalTransportStats.java b/core/src/main/java/io/grpc/InternalTransportStats.java new file mode 100644 index 0000000000..be0313d8a0 --- /dev/null +++ b/core/src/main/java/io/grpc/InternalTransportStats.java @@ -0,0 +1,65 @@ +/* + * Copyright 2017, 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; + +/** + * Do not use. + * + *

A read only copy of stats from the transport tracer. + */ +@Internal +public final class InternalTransportStats { + public final long streamsStarted; + public final long lastStreamCreatedTimeNanos; + public final long streamsSucceeded; + public final long streamsFailed; + public final long messagesSent; + public final long messagesReceived; + public final long keepAlivesSent; + public final long lastMessageSentTimeNanos; + public final long lastMessageReceivedTimeNanos; + public final long localFlowControlWindow; + public final long remoteFlowControlWindow; + + /** + * Creates an instance. + */ + public InternalTransportStats( + long streamsStarted, + long lastStreamCreatedTimeNanos, + long streamsSucceeded, + long streamsFailed, + long messagesSent, + long messagesReceived, + long keepAlivesSent, + long lastMessageSentTimeNanos, + long lastMessageReceivedTimeNanos, + long localFlowControlWindow, + long remoteFlowControlWindow) { + this.streamsStarted = streamsStarted; + this.lastStreamCreatedTimeNanos = lastStreamCreatedTimeNanos; + this.streamsSucceeded = streamsSucceeded; + this.streamsFailed = streamsFailed; + this.messagesSent = messagesSent; + this.messagesReceived = messagesReceived; + this.keepAlivesSent = keepAlivesSent; + this.lastMessageSentTimeNanos = lastMessageSentTimeNanos; + this.lastMessageReceivedTimeNanos = lastMessageReceivedTimeNanos; + this.localFlowControlWindow = localFlowControlWindow; + this.remoteFlowControlWindow = remoteFlowControlWindow; + } +} diff --git a/core/src/main/java/io/grpc/inprocess/InProcessTransport.java b/core/src/main/java/io/grpc/inprocess/InProcessTransport.java index 74de5d9e6a..aa7372ebe1 100644 --- a/core/src/main/java/io/grpc/inprocess/InProcessTransport.java +++ b/core/src/main/java/io/grpc/inprocess/InProcessTransport.java @@ -25,6 +25,7 @@ import io.grpc.Compressor; import io.grpc.Decompressor; import io.grpc.DecompressorRegistry; import io.grpc.Grpc; +import io.grpc.InternalTransportStats; import io.grpc.Metadata; import io.grpc.MethodDescriptor; import io.grpc.ServerStreamTracer; @@ -42,7 +43,6 @@ import io.grpc.internal.ServerTransport; import io.grpc.internal.ServerTransportListener; import io.grpc.internal.StatsTraceContext; import io.grpc.internal.StreamListener; -import io.grpc.internal.TransportTracer; import java.io.InputStream; import java.util.ArrayDeque; import java.util.ArrayList; @@ -221,9 +221,9 @@ final class InProcessTransport implements ServerTransport, ConnectionClientTrans } @Override - public Future getTransportStats() { + public Future getTransportStats() { // TODO(zpencer): add transport tracing to in-process server - SettableFuture ret = SettableFuture.create(); + SettableFuture ret = SettableFuture.create(); ret.set(null); return ret; } diff --git a/core/src/main/java/io/grpc/internal/ClientTransport.java b/core/src/main/java/io/grpc/internal/ClientTransport.java index e498ad1fbe..ccf9c7d253 100644 --- a/core/src/main/java/io/grpc/internal/ClientTransport.java +++ b/core/src/main/java/io/grpc/internal/ClientTransport.java @@ -17,6 +17,7 @@ package io.grpc.internal; import io.grpc.CallOptions; +import io.grpc.InternalTransportStats; import io.grpc.Metadata; import io.grpc.MethodDescriptor; import java.util.concurrent.Executor; @@ -67,7 +68,7 @@ public interface ClientTransport { * Returns a Future representing the transport level stats. If this transport does not support * stats, the return value will be a Future of a null value. */ - Future getTransportStats(); + Future getTransportStats(); /** * A callback that is invoked when the acknowledgement to a {@link #ping} is received. Exactly one diff --git a/core/src/main/java/io/grpc/internal/DelayedClientTransport.java b/core/src/main/java/io/grpc/internal/DelayedClientTransport.java index c0b24b90b7..c150d1cf41 100644 --- a/core/src/main/java/io/grpc/internal/DelayedClientTransport.java +++ b/core/src/main/java/io/grpc/internal/DelayedClientTransport.java @@ -20,6 +20,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.util.concurrent.SettableFuture; import io.grpc.CallOptions; import io.grpc.Context; +import io.grpc.InternalTransportStats; import io.grpc.LoadBalancer.PickResult; import io.grpc.LoadBalancer.PickSubchannelArgs; import io.grpc.LoadBalancer.SubchannelPicker; @@ -188,8 +189,8 @@ final class DelayedClientTransport implements ManagedClientTransport { } @Override - public Future getTransportStats() { - SettableFuture ret = SettableFuture.create(); + public Future getTransportStats() { + SettableFuture ret = SettableFuture.create(); ret.set(null); return ret; } diff --git a/core/src/main/java/io/grpc/internal/FailingClientTransport.java b/core/src/main/java/io/grpc/internal/FailingClientTransport.java index 7399a68b0a..984ad767eb 100644 --- a/core/src/main/java/io/grpc/internal/FailingClientTransport.java +++ b/core/src/main/java/io/grpc/internal/FailingClientTransport.java @@ -20,6 +20,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.SettableFuture; import io.grpc.CallOptions; +import io.grpc.InternalTransportStats; import io.grpc.Metadata; import io.grpc.MethodDescriptor; import io.grpc.Status; @@ -55,8 +56,8 @@ class FailingClientTransport implements ClientTransport { } @Override - public Future getTransportStats() { - SettableFuture ret = SettableFuture.create(); + public Future getTransportStats() { + SettableFuture ret = SettableFuture.create(); ret.set(null); return ret; } diff --git a/core/src/main/java/io/grpc/internal/ForwardingConnectionClientTransport.java b/core/src/main/java/io/grpc/internal/ForwardingConnectionClientTransport.java index 4bf25ccaa2..6594fb77b6 100644 --- a/core/src/main/java/io/grpc/internal/ForwardingConnectionClientTransport.java +++ b/core/src/main/java/io/grpc/internal/ForwardingConnectionClientTransport.java @@ -19,6 +19,7 @@ package io.grpc.internal; import com.google.common.util.concurrent.SettableFuture; import io.grpc.Attributes; import io.grpc.CallOptions; +import io.grpc.InternalTransportStats; import io.grpc.Metadata; import io.grpc.MethodDescriptor; import io.grpc.Status; @@ -68,8 +69,8 @@ abstract class ForwardingConnectionClientTransport implements ConnectionClientTr } @Override - public Future getTransportStats() { - SettableFuture ret = SettableFuture.create(); + public Future getTransportStats() { + SettableFuture ret = SettableFuture.create(); ret.set(null); return ret; } diff --git a/core/src/main/java/io/grpc/internal/GrpcUtil.java b/core/src/main/java/io/grpc/internal/GrpcUtil.java index 2889e78fe3..406802f14c 100644 --- a/core/src/main/java/io/grpc/internal/GrpcUtil.java +++ b/core/src/main/java/io/grpc/internal/GrpcUtil.java @@ -30,6 +30,7 @@ import io.grpc.CallOptions; import io.grpc.ClientStreamTracer; import io.grpc.InternalMetadata; import io.grpc.InternalMetadata.TrustedAsciiMarshaller; +import io.grpc.InternalTransportStats; import io.grpc.LoadBalancer.PickResult; import io.grpc.LoadBalancer.Subchannel; import io.grpc.Metadata; @@ -682,7 +683,7 @@ public final class GrpcUtil { @Nullable @Override - public Future getTransportStats() { + public Future getTransportStats() { return transport.getTransportStats(); } }; diff --git a/core/src/main/java/io/grpc/internal/ServerTransport.java b/core/src/main/java/io/grpc/internal/ServerTransport.java index 88c9228b5b..493a960819 100644 --- a/core/src/main/java/io/grpc/internal/ServerTransport.java +++ b/core/src/main/java/io/grpc/internal/ServerTransport.java @@ -16,6 +16,7 @@ package io.grpc.internal; +import io.grpc.InternalTransportStats; import io.grpc.Status; import java.util.concurrent.Future; import java.util.concurrent.ScheduledExecutorService; @@ -48,5 +49,5 @@ public interface ServerTransport extends WithLogId { * Returns a Future representing the transport level stats. If this transport does not support * stats, the return value will be a Future of a null value. */ - Future getTransportStats(); + Future getTransportStats(); } diff --git a/core/src/main/java/io/grpc/internal/TransportTracer.java b/core/src/main/java/io/grpc/internal/TransportTracer.java index c6ac8e91fd..97ef44d96b 100644 --- a/core/src/main/java/io/grpc/internal/TransportTracer.java +++ b/core/src/main/java/io/grpc/internal/TransportTracer.java @@ -18,6 +18,7 @@ package io.grpc.internal; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; +import io.grpc.InternalTransportStats; import java.util.concurrent.TimeUnit; /** @@ -58,8 +59,12 @@ public final class TransportTracer { /** * Returns a read only set of current stats. */ - public Stats getStats() { - return new Stats( + public InternalTransportStats getStats() { + long localFlowControlWindow = + flowControlWindowReader == null ? -1 : flowControlWindowReader.read().localBytes; + long remoteFlowControlWindow = + flowControlWindowReader == null ? -1 : flowControlWindowReader.read().remoteBytes; + return new InternalTransportStats( streamsStarted, lastStreamCreatedTimeNanos, streamsSucceeded, @@ -69,7 +74,8 @@ public final class TransportTracer { keepAlivesSent, lastMessageSentTimeNanos, lastMessageReceivedTimeNanos, - flowControlWindowReader); + localFlowControlWindow, + remoteFlowControlWindow); } /** @@ -150,53 +156,6 @@ public final class TransportTracer { return TimeUnit.MILLISECONDS.toNanos(timeProvider.currentTimeMillis()); } - /** - * A read only copy of stats from the transport tracer. - */ - public static final class Stats { - public final long streamsStarted; - public final long lastStreamCreatedTimeNanos; - public final long streamsSucceeded; - public final long streamsFailed; - public final long messagesSent; - public final long messagesReceived; - public final long keepAlivesSent; - public final long lastMessageSentTimeNanos; - public final long lastMessageReceivedTimeNanos; - public final long localFlowControlWindow; - public final long remoteFlowControlWindow; - - private Stats( - long streamsStarted, - long lastStreamCreatedTimeNanos, - long streamsSucceeded, - long streamsFailed, - long messagesSent, - long messagesReceived, - long keepAlivesSent, - long lastMessageSentTimeNanos, - long lastMessageReceivedTimeNanos, - FlowControlReader flowControlReader) { - this.streamsStarted = streamsStarted; - this.lastStreamCreatedTimeNanos = lastStreamCreatedTimeNanos; - this.streamsSucceeded = streamsSucceeded; - this.streamsFailed = streamsFailed; - this.messagesSent = messagesSent; - this.messagesReceived = messagesReceived; - this.keepAlivesSent = keepAlivesSent; - this.lastMessageSentTimeNanos = lastMessageSentTimeNanos; - this.lastMessageReceivedTimeNanos = lastMessageReceivedTimeNanos; - if (flowControlReader == null) { - this.localFlowControlWindow = -1; - this.remoteFlowControlWindow = -1; - } else { - FlowControlWindows windows = flowControlReader.read(); - this.localFlowControlWindow = windows.localBytes; - this.remoteFlowControlWindow = windows.remoteBytes; - } - } - } - /** * Time source representing the current system time in millis. Used to inject a fake clock * into unit tests. diff --git a/core/src/test/java/io/grpc/internal/MessageDeframerTest.java b/core/src/test/java/io/grpc/internal/MessageDeframerTest.java index 915f1ddd21..64216f316b 100644 --- a/core/src/test/java/io/grpc/internal/MessageDeframerTest.java +++ b/core/src/test/java/io/grpc/internal/MessageDeframerTest.java @@ -35,6 +35,7 @@ import com.google.common.base.Charsets; import com.google.common.io.ByteStreams; import com.google.common.primitives.Bytes; import io.grpc.Codec; +import io.grpc.InternalTransportStats; import io.grpc.StatusRuntimeException; import io.grpc.StreamTracer; import io.grpc.internal.MessageDeframer.Listener; @@ -482,7 +483,7 @@ public class MessageDeframerTest { * @param sizes in the format {wire0, uncompressed0, wire1, uncompressed1, ...} */ private static void checkStats( - TestBaseStreamTracer tracer, TransportTracer.Stats transportStats, long... sizes) { + TestBaseStreamTracer tracer, InternalTransportStats transportStats, long... sizes) { assertEquals(0, sizes.length % 2); int count = sizes.length / 2; long expectedWireSize = 0; diff --git a/core/src/test/java/io/grpc/internal/ServerImplTest.java b/core/src/test/java/io/grpc/internal/ServerImplTest.java index ef92481936..b20dc358ed 100644 --- a/core/src/test/java/io/grpc/internal/ServerImplTest.java +++ b/core/src/test/java/io/grpc/internal/ServerImplTest.java @@ -50,6 +50,7 @@ import io.grpc.Context; import io.grpc.Grpc; import io.grpc.HandlerRegistry; import io.grpc.IntegerMarshaller; +import io.grpc.InternalTransportStats; import io.grpc.Metadata; import io.grpc.MethodDescriptor; import io.grpc.ServerCall; @@ -1273,8 +1274,8 @@ public class ServerImplTest { } @Override - public Future getTransportStats() { - SettableFuture ret = SettableFuture.create(); + public Future getTransportStats() { + SettableFuture ret = SettableFuture.create(); ret.set(null); return ret; } diff --git a/netty/src/main/java/io/grpc/netty/NettyClientTransport.java b/netty/src/main/java/io/grpc/netty/NettyClientTransport.java index caed21ea5b..6bd75861b2 100644 --- a/netty/src/main/java/io/grpc/netty/NettyClientTransport.java +++ b/netty/src/main/java/io/grpc/netty/NettyClientTransport.java @@ -24,6 +24,7 @@ import com.google.common.base.Preconditions; import com.google.common.util.concurrent.SettableFuture; import io.grpc.Attributes; import io.grpc.CallOptions; +import io.grpc.InternalTransportStats; import io.grpc.Metadata; import io.grpc.MethodDescriptor; import io.grpc.Status; @@ -309,18 +310,18 @@ class NettyClientTransport implements ConnectionClientTransport { } @Override - public Future getTransportStats() { + public Future getTransportStats() { if (channel.eventLoop().inEventLoop()) { // This is necessary, otherwise we will block forever if we get the future from inside // the event loop. - SettableFuture result = SettableFuture.create(); + SettableFuture result = SettableFuture.create(); result.set(transportTracer.getStats()); return result; } return channel.eventLoop().submit( - new Callable() { + new Callable() { @Override - public TransportTracer.Stats call() throws Exception { + public InternalTransportStats call() throws Exception { return transportTracer.getStats(); } }); diff --git a/netty/src/main/java/io/grpc/netty/NettyServerTransport.java b/netty/src/main/java/io/grpc/netty/NettyServerTransport.java index f3d6fa3d8c..633f051434 100644 --- a/netty/src/main/java/io/grpc/netty/NettyServerTransport.java +++ b/netty/src/main/java/io/grpc/netty/NettyServerTransport.java @@ -20,6 +20,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.util.concurrent.SettableFuture; +import io.grpc.InternalTransportStats; import io.grpc.ServerStreamTracer; import io.grpc.Status; import io.grpc.internal.LogId; @@ -176,18 +177,18 @@ class NettyServerTransport implements ServerTransport { } @Override - public Future getTransportStats() { + public Future getTransportStats() { if (channel.eventLoop().inEventLoop()) { // This is necessary, otherwise we will block forever if we get the future from inside // the event loop. - SettableFuture result = SettableFuture.create(); + SettableFuture result = SettableFuture.create(); result.set(transportTracer.getStats()); return result; } return channel.eventLoop().submit( - new Callable() { + new Callable() { @Override - public TransportTracer.Stats call() throws Exception { + public InternalTransportStats call() throws Exception { return transportTracer.getStats(); } }); diff --git a/netty/src/test/java/io/grpc/netty/NettyHandlerTestBase.java b/netty/src/test/java/io/grpc/netty/NettyHandlerTestBase.java index 4556eb5667..70206b6ba6 100644 --- a/netty/src/test/java/io/grpc/netty/NettyHandlerTestBase.java +++ b/netty/src/test/java/io/grpc/netty/NettyHandlerTestBase.java @@ -30,6 +30,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import com.google.errorprone.annotations.CanIgnoreReturnValue; +import io.grpc.InternalTransportStats; import io.grpc.internal.FakeClock; import io.grpc.internal.MessageFramer; import io.grpc.internal.StatsTraceContext; @@ -459,30 +460,30 @@ public abstract class NettyHandlerTestBase { @Test public void transportTracer_windowSizeDefault() throws Exception { manualSetUp(); - TransportTracer.Stats stats = transportTracer.getStats(); - assertEquals(Http2CodecUtil.DEFAULT_WINDOW_SIZE, stats.remoteFlowControlWindow); - assertEquals(flowControlWindow, stats.localFlowControlWindow); + InternalTransportStats transportStats = transportTracer.getStats(); + assertEquals(Http2CodecUtil.DEFAULT_WINDOW_SIZE, transportStats.remoteFlowControlWindow); + assertEquals(flowControlWindow, transportStats.localFlowControlWindow); } @Test public void transportTracer_windowSize() throws Exception { flowControlWindow = 1024 * 1024; manualSetUp(); - TransportTracer.Stats stats = transportTracer.getStats(); - assertEquals(Http2CodecUtil.DEFAULT_WINDOW_SIZE, stats.remoteFlowControlWindow); - assertEquals(flowControlWindow, stats.localFlowControlWindow); + InternalTransportStats transportStats = transportTracer.getStats(); + assertEquals(Http2CodecUtil.DEFAULT_WINDOW_SIZE, transportStats.remoteFlowControlWindow); + assertEquals(flowControlWindow, transportStats.localFlowControlWindow); } @Test public void transportTracer_windowUpdate_remote() throws Exception { manualSetUp(); - TransportTracer.Stats before = transportTracer.getStats(); + InternalTransportStats before = transportTracer.getStats(); assertEquals(Http2CodecUtil.DEFAULT_WINDOW_SIZE, before.remoteFlowControlWindow); assertEquals(Http2CodecUtil.DEFAULT_WINDOW_SIZE, before.localFlowControlWindow); ByteBuf serializedSettings = windowUpdate(0, 1000); channelRead(serializedSettings); - TransportTracer.Stats after = transportTracer.getStats(); + InternalTransportStats after = transportTracer.getStats(); assertEquals(Http2CodecUtil.DEFAULT_WINDOW_SIZE + 1000, after.remoteFlowControlWindow); assertEquals(flowControlWindow, after.localFlowControlWindow); @@ -491,7 +492,7 @@ public abstract class NettyHandlerTestBase { @Test public void transportTracer_windowUpdate_local() throws Exception { manualSetUp(); - TransportTracer.Stats before = transportTracer.getStats(); + InternalTransportStats before = transportTracer.getStats(); assertEquals(Http2CodecUtil.DEFAULT_WINDOW_SIZE, before.remoteFlowControlWindow); assertEquals(flowControlWindow, before.localFlowControlWindow); @@ -500,7 +501,7 @@ public abstract class NettyHandlerTestBase { connection().local().flowController().incrementWindowSize( connection().connectionStream(), 8 * Http2CodecUtil.DEFAULT_WINDOW_SIZE); - TransportTracer.Stats after = transportTracer.getStats(); + InternalTransportStats after = transportTracer.getStats(); assertEquals(Http2CodecUtil.DEFAULT_WINDOW_SIZE, after.remoteFlowControlWindow); assertEquals(flowControlWindow + 8 * Http2CodecUtil.DEFAULT_WINDOW_SIZE, connection().local().flowController().windowSize(connection().connectionStream())); diff --git a/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientTransport.java b/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientTransport.java index 6e504d0a9f..57b579ed95 100644 --- a/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientTransport.java +++ b/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientTransport.java @@ -30,6 +30,7 @@ import com.squareup.okhttp.Request; import com.squareup.okhttp.internal.http.StatusLine; import io.grpc.Attributes; import io.grpc.CallOptions; +import io.grpc.InternalTransportStats; import io.grpc.Metadata; import io.grpc.MethodDescriptor; import io.grpc.MethodDescriptor.MethodType; @@ -45,7 +46,6 @@ import io.grpc.internal.LogId; import io.grpc.internal.SerializingExecutor; import io.grpc.internal.SharedResourceHolder; import io.grpc.internal.StatsTraceContext; -import io.grpc.internal.TransportTracer; import io.grpc.okhttp.internal.ConnectionSpec; import io.grpc.okhttp.internal.framed.ErrorCode; import io.grpc.okhttp.internal.framed.FrameReader; @@ -857,8 +857,8 @@ class OkHttpClientTransport implements ConnectionClientTransport { } @Override - public Future getTransportStats() { - SettableFuture ret = SettableFuture.create(); + public Future getTransportStats() { + SettableFuture ret = SettableFuture.create(); ret.set(null); return ret; } diff --git a/testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java b/testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java index d782ef2dba..ed32002c32 100644 --- a/testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java +++ b/testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java @@ -48,6 +48,7 @@ import io.grpc.Attributes; import io.grpc.CallOptions; import io.grpc.ClientStreamTracer; import io.grpc.Grpc; +import io.grpc.InternalTransportStats; import io.grpc.Metadata; import io.grpc.MethodDescriptor; import io.grpc.ServerStreamTracer; @@ -62,7 +63,6 @@ import io.grpc.internal.ServerStream; import io.grpc.internal.ServerStreamListener; import io.grpc.internal.ServerTransport; import io.grpc.internal.ServerTransportListener; -import io.grpc.internal.TransportTracer; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -1406,11 +1406,11 @@ public abstract class AbstractTransportTest { long serverFirstTimestampNanos; long clientFirstTimestampNanos; { - TransportTracer.Stats serverBefore = + InternalTransportStats serverBefore = serverTransportListener.transport.getTransportStats().get(); assertEquals(0, serverBefore.streamsStarted); assertEquals(0, serverBefore.lastStreamCreatedTimeNanos); - TransportTracer.Stats clientBefore = client.getTransportStats().get(); + InternalTransportStats clientBefore = client.getTransportStats().get(); assertEquals(0, clientBefore.streamsStarted); assertEquals(0, clientBefore.lastStreamCreatedTimeNanos); @@ -1420,7 +1420,7 @@ public abstract class AbstractTransportTest { StreamCreation serverStreamCreation = serverTransportListener .takeStreamOrFail(TIMEOUT_MS, TimeUnit.MILLISECONDS); - TransportTracer.Stats serverAfter = + InternalTransportStats serverAfter = serverTransportListener.transport.getTransportStats().get(); assertEquals(1, serverAfter.streamsStarted); serverFirstTimestampNanos = serverAfter.lastStreamCreatedTimeNanos; @@ -1428,7 +1428,7 @@ public abstract class AbstractTransportTest { currentTimeMillis(), TimeUnit.NANOSECONDS.toMillis(serverAfter.lastStreamCreatedTimeNanos)); - TransportTracer.Stats clientAfter = client.getTransportStats().get(); + InternalTransportStats clientAfter = client.getTransportStats().get(); assertEquals(1, clientAfter.streamsStarted); clientFirstTimestampNanos = clientAfter.lastStreamCreatedTimeNanos; assertEquals( @@ -1444,10 +1444,10 @@ public abstract class AbstractTransportTest { // start second stream { - TransportTracer.Stats serverBefore = + InternalTransportStats serverBefore = serverTransportListener.transport.getTransportStats().get(); assertEquals(1, serverBefore.streamsStarted); - TransportTracer.Stats clientBefore = client.getTransportStats().get(); + InternalTransportStats clientBefore = client.getTransportStats().get(); assertEquals(1, clientBefore.streamsStarted); ClientStream clientStream = client.newStream(methodDescriptor, new Metadata(), callOptions); @@ -1456,7 +1456,7 @@ public abstract class AbstractTransportTest { StreamCreation serverStreamCreation = serverTransportListener .takeStreamOrFail(TIMEOUT_MS, TimeUnit.MILLISECONDS); - TransportTracer.Stats serverAfter = + InternalTransportStats serverAfter = serverTransportListener.transport.getTransportStats().get(); assertEquals(2, serverAfter.streamsStarted); assertEquals( @@ -1466,7 +1466,7 @@ public abstract class AbstractTransportTest { TimeUnit.NANOSECONDS.toMillis(serverAfter.lastStreamCreatedTimeNanos); assertEquals(currentTimeMillis(), serverSecondTimestamp); - TransportTracer.Stats clientAfter = client.getTransportStats().get(); + InternalTransportStats clientAfter = client.getTransportStats().get(); assertEquals(2, clientAfter.streamsStarted); assertEquals( TimeUnit.MILLISECONDS.toNanos(elapsedMillis), @@ -1497,11 +1497,11 @@ public abstract class AbstractTransportTest { return; } - TransportTracer.Stats serverBefore = + InternalTransportStats serverBefore = serverTransportListener.transport.getTransportStats().get(); assertEquals(0, serverBefore.streamsSucceeded); assertEquals(0, serverBefore.streamsFailed); - TransportTracer.Stats clientBefore = client.getTransportStats().get(); + InternalTransportStats clientBefore = client.getTransportStats().get(); assertEquals(0, clientBefore.streamsSucceeded); assertEquals(0, clientBefore.streamsFailed); @@ -1512,11 +1512,11 @@ public abstract class AbstractTransportTest { assertNotNull(clientStreamListener.trailers.get(TIMEOUT_MS, TimeUnit.MILLISECONDS)); - TransportTracer.Stats serverAfter = + InternalTransportStats serverAfter = serverTransportListener.transport.getTransportStats().get(); assertEquals(1, serverAfter.streamsSucceeded); assertEquals(0, serverAfter.streamsFailed); - TransportTracer.Stats clientAfter = client.getTransportStats().get(); + InternalTransportStats clientAfter = client.getTransportStats().get(); assertEquals(1, clientAfter.streamsSucceeded); assertEquals(0, clientAfter.streamsFailed); } @@ -1538,11 +1538,11 @@ public abstract class AbstractTransportTest { return; } - TransportTracer.Stats serverBefore = + InternalTransportStats serverBefore = serverTransportListener.transport.getTransportStats().get(); assertEquals(0, serverBefore.streamsFailed); assertEquals(0, serverBefore.streamsSucceeded); - TransportTracer.Stats clientBefore = client.getTransportStats().get(); + InternalTransportStats clientBefore = client.getTransportStats().get(); assertEquals(0, clientBefore.streamsFailed); assertEquals(0, clientBefore.streamsSucceeded); @@ -1552,11 +1552,11 @@ public abstract class AbstractTransportTest { assertNotNull(clientStreamListener.trailers.get(TIMEOUT_MS, TimeUnit.MILLISECONDS)); - TransportTracer.Stats serverAfter = + InternalTransportStats serverAfter = serverTransportListener.transport.getTransportStats().get(); assertEquals(1, serverAfter.streamsFailed); assertEquals(0, serverAfter.streamsSucceeded); - TransportTracer.Stats clientAfter = client.getTransportStats().get(); + InternalTransportStats clientAfter = client.getTransportStats().get(); assertEquals(1, clientAfter.streamsFailed); assertEquals(0, clientAfter.streamsSucceeded); @@ -1579,11 +1579,11 @@ public abstract class AbstractTransportTest { return; } - TransportTracer.Stats serverBefore = + InternalTransportStats serverBefore = serverTransportListener.transport.getTransportStats().get(); assertEquals(0, serverBefore.streamsFailed); assertEquals(0, serverBefore.streamsSucceeded); - TransportTracer.Stats clientBefore = client.getTransportStats().get(); + InternalTransportStats clientBefore = client.getTransportStats().get(); assertEquals(0, clientBefore.streamsFailed); assertEquals(0, clientBefore.streamsSucceeded); @@ -1591,11 +1591,11 @@ public abstract class AbstractTransportTest { // do not validate stats until close() has been called on server assertNotNull(serverStreamCreation.listener.status.get(TIMEOUT_MS, TimeUnit.MILLISECONDS)); - TransportTracer.Stats serverAfter = + InternalTransportStats serverAfter = serverTransportListener.transport.getTransportStats().get(); assertEquals(1, serverAfter.streamsFailed); assertEquals(0, serverAfter.streamsSucceeded); - TransportTracer.Stats clientAfter = client.getTransportStats().get(); + InternalTransportStats clientAfter = client.getTransportStats().get(); assertEquals(1, clientAfter.streamsFailed); assertEquals(0, clientAfter.streamsSucceeded); } @@ -1618,11 +1618,11 @@ public abstract class AbstractTransportTest { return; } - TransportTracer.Stats serverBefore = + InternalTransportStats serverBefore = serverTransportListener.transport.getTransportStats().get(); assertEquals(0, serverBefore.messagesReceived); assertEquals(0, serverBefore.lastMessageReceivedTimeNanos); - TransportTracer.Stats clientBefore = client.getTransportStats().get(); + InternalTransportStats clientBefore = client.getTransportStats().get(); assertEquals(0, clientBefore.messagesSent); assertEquals(0, clientBefore.lastMessageSentTimeNanos); @@ -1632,13 +1632,13 @@ public abstract class AbstractTransportTest { clientStream.halfClose(); verifyMessageCountAndClose(serverStreamListener.messageQueue, 1); - TransportTracer.Stats serverAfter = + InternalTransportStats serverAfter = serverTransportListener.transport.getTransportStats().get(); assertEquals(1, serverAfter.messagesReceived); long serverTimestamp = TimeUnit.NANOSECONDS.toMillis(serverAfter.lastMessageReceivedTimeNanos); assertEquals(currentTimeMillis(), serverTimestamp); - TransportTracer.Stats clientAfter = client.getTransportStats().get(); + InternalTransportStats clientAfter = client.getTransportStats().get(); assertEquals(1, clientAfter.messagesSent); long clientTimestamp = TimeUnit.NANOSECONDS.toMillis(clientAfter.lastMessageSentTimeNanos); @@ -1664,11 +1664,11 @@ public abstract class AbstractTransportTest { return; } - TransportTracer.Stats serverBefore = + InternalTransportStats serverBefore = serverTransportListener.transport.getTransportStats().get(); assertEquals(0, serverBefore.messagesSent); assertEquals(0, serverBefore.lastMessageSentTimeNanos); - TransportTracer.Stats clientBefore = client.getTransportStats().get(); + InternalTransportStats clientBefore = client.getTransportStats().get(); assertEquals(0, clientBefore.messagesReceived); assertEquals(0, clientBefore.lastMessageReceivedTimeNanos); @@ -1678,12 +1678,12 @@ public abstract class AbstractTransportTest { serverStream.flush(); verifyMessageCountAndClose(clientStreamListener.messageQueue, 1); - TransportTracer.Stats serverAfter = + InternalTransportStats serverAfter = serverTransportListener.transport.getTransportStats().get(); assertEquals(1, serverAfter.messagesSent); long serverTimestmap = TimeUnit.NANOSECONDS.toMillis(serverAfter.lastMessageSentTimeNanos); assertEquals(currentTimeMillis(), serverTimestmap); - TransportTracer.Stats clientAfter = client.getTransportStats().get(); + InternalTransportStats clientAfter = client.getTransportStats().get(); assertEquals(1, clientAfter.messagesReceived); long clientTimestmap = TimeUnit.NANOSECONDS.toMillis(clientAfter.lastMessageReceivedTimeNanos);