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.
This commit is contained in:
zpencer 2017-11-30 13:01:58 -08:00 committed by GitHub
parent aee5fc4176
commit 25cd0be24c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 150 additions and 115 deletions

View File

@ -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.
*
* <p>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;
}
}

View File

@ -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<TransportTracer.Stats> getTransportStats() {
public Future<InternalTransportStats> getTransportStats() {
// TODO(zpencer): add transport tracing to in-process server
SettableFuture<TransportTracer.Stats> ret = SettableFuture.create();
SettableFuture<InternalTransportStats> ret = SettableFuture.create();
ret.set(null);
return ret;
}

View File

@ -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<TransportTracer.Stats> getTransportStats();
Future<InternalTransportStats> getTransportStats();
/**
* A callback that is invoked when the acknowledgement to a {@link #ping} is received. Exactly one

View File

@ -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<TransportTracer.Stats> getTransportStats() {
SettableFuture<TransportTracer.Stats> ret = SettableFuture.create();
public Future<InternalTransportStats> getTransportStats() {
SettableFuture<InternalTransportStats> ret = SettableFuture.create();
ret.set(null);
return ret;
}

View File

@ -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<TransportTracer.Stats> getTransportStats() {
SettableFuture<TransportTracer.Stats> ret = SettableFuture.create();
public Future<InternalTransportStats> getTransportStats() {
SettableFuture<InternalTransportStats> ret = SettableFuture.create();
ret.set(null);
return ret;
}

View File

@ -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<TransportTracer.Stats> getTransportStats() {
SettableFuture<TransportTracer.Stats> ret = SettableFuture.create();
public Future<InternalTransportStats> getTransportStats() {
SettableFuture<InternalTransportStats> ret = SettableFuture.create();
ret.set(null);
return ret;
}

View File

@ -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<TransportTracer.Stats> getTransportStats() {
public Future<InternalTransportStats> getTransportStats() {
return transport.getTransportStats();
}
};

View File

@ -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<TransportTracer.Stats> getTransportStats();
Future<InternalTransportStats> getTransportStats();
}

View File

@ -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.

View File

@ -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;

View File

@ -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<TransportTracer.Stats> getTransportStats() {
SettableFuture<TransportTracer.Stats> ret = SettableFuture.create();
public Future<InternalTransportStats> getTransportStats() {
SettableFuture<InternalTransportStats> ret = SettableFuture.create();
ret.set(null);
return ret;
}

View File

@ -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<TransportTracer.Stats> getTransportStats() {
public Future<InternalTransportStats> getTransportStats() {
if (channel.eventLoop().inEventLoop()) {
// This is necessary, otherwise we will block forever if we get the future from inside
// the event loop.
SettableFuture<TransportTracer.Stats> result = SettableFuture.create();
SettableFuture<InternalTransportStats> result = SettableFuture.create();
result.set(transportTracer.getStats());
return result;
}
return channel.eventLoop().submit(
new Callable<TransportTracer.Stats>() {
new Callable<InternalTransportStats>() {
@Override
public TransportTracer.Stats call() throws Exception {
public InternalTransportStats call() throws Exception {
return transportTracer.getStats();
}
});

View File

@ -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<TransportTracer.Stats> getTransportStats() {
public Future<InternalTransportStats> getTransportStats() {
if (channel.eventLoop().inEventLoop()) {
// This is necessary, otherwise we will block forever if we get the future from inside
// the event loop.
SettableFuture<TransportTracer.Stats> result = SettableFuture.create();
SettableFuture<InternalTransportStats> result = SettableFuture.create();
result.set(transportTracer.getStats());
return result;
}
return channel.eventLoop().submit(
new Callable<TransportTracer.Stats>() {
new Callable<InternalTransportStats>() {
@Override
public TransportTracer.Stats call() throws Exception {
public InternalTransportStats call() throws Exception {
return transportTracer.getStats();
}
});

View File

@ -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<T extends Http2ConnectionHandler> {
@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<T extends Http2ConnectionHandler> {
@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<T extends Http2ConnectionHandler> {
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()));

View File

@ -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<TransportTracer.Stats> getTransportStats() {
SettableFuture<TransportTracer.Stats> ret = SettableFuture.create();
public Future<InternalTransportStats> getTransportStats() {
SettableFuture<InternalTransportStats> ret = SettableFuture.create();
ret.set(null);
return ret;
}

View File

@ -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);