Skip to content

Commit 6618f97

Browse files
authored
core: add inboundHeaders() to ClientStreamTracer. (grpc#2921)
Also renamed headersSent to outboundHeaders
1 parent 25658cb commit 6618f97

8 files changed

Lines changed: 38 additions & 16 deletions

File tree

core/src/main/java/io/grpc/ClientStreamTracer.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,13 @@ public abstract class ClientStreamTracer extends StreamTracer {
4242
/**
4343
* Headers has been sent to the socket.
4444
*/
45-
public void headersSent() {
45+
public void outboundHeaders() {
46+
}
47+
48+
/**
49+
* Headers has been received from the server.
50+
*/
51+
public void inboundHeaders() {
4652
}
4753

4854
/**

core/src/main/java/io/grpc/internal/AbstractClientStream2.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ protected final ClientStreamListener listener() {
232232
*/
233233
protected void inboundHeadersReceived(Metadata headers) {
234234
Preconditions.checkState(!statusReported, "Received headers on closed stream");
235+
statsTraceCtx.clientInboundHeaders();
235236
listener().headersRead(headers);
236237
}
237238

core/src/main/java/io/grpc/internal/StatsTraceContext.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,13 +103,24 @@ public List<StreamTracer> getTracersForTest() {
103103
}
104104

105105
/**
106-
* See {@link ClientStreamTracer#headersSent}. For client-side only.
106+
* See {@link ClientStreamTracer#outboundHeaders}. For client-side only.
107107
*
108108
* <p>Transport-specific, thus should be called by transport implementations.
109109
*/
110-
public void clientHeadersSent() {
110+
public void clientOutboundHeaders() {
111111
for (StreamTracer tracer : tracers) {
112-
((ClientStreamTracer) tracer).headersSent();
112+
((ClientStreamTracer) tracer).outboundHeaders();
113+
}
114+
}
115+
116+
/**
117+
* See {@link ClientStreamTracer#inboundHeaders}. For client-side only.
118+
*
119+
* <p>Called from abstract stream implementations.
120+
*/
121+
public void clientInboundHeaders() {
122+
for (StreamTracer tracer : tracers) {
123+
((ClientStreamTracer) tracer).inboundHeaders();
113124
}
114125
}
115126

core/src/test/java/io/grpc/internal/CensusStreamTracerModuleTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ public void clientBasicStats() {
191191
ClientStreamTracer tracer = callTracer.newClientStreamTracer(headers);
192192

193193
fakeClock.forwardTime(30, MILLISECONDS);
194-
tracer.headersSent();
194+
tracer.outboundHeaders();
195195

196196
fakeClock.forwardTime(100, MILLISECONDS);
197197
tracer.outboundWireSize(1028);

interop-testing/src/main/java/io/grpc/testing/integration/AbstractInteropTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1448,7 +1448,7 @@ private void assertClientMetrics(String method, Status.Code status,
14481448
// Tracer-based stats
14491449
ClientStreamTracer tracer = clientStreamTracers.poll();
14501450
assertNotNull(tracer);
1451-
verify(tracer).headersSent();
1451+
verify(tracer).outboundHeaders();
14521452
ArgumentCaptor<Status> statusCaptor = ArgumentCaptor.forClass(Status.class);
14531453
// assertClientMetrics() is called right after application receives status,
14541454
// but streamClosed() may be called slightly later than that. So we need a timeout.

netty/src/main/java/io/grpc/netty/NettyClientHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ public void operationComplete(ChannelFuture future) throws Exception {
422422
// was canceled via RST_STREAM.
423423
Http2Stream http2Stream = connection().stream(streamId);
424424
if (http2Stream != null) {
425-
stream.getStatsTraceContext().clientHeadersSent();
425+
stream.getStatsTraceContext().clientOutboundHeaders();
426426
http2Stream.setProperty(streamKey, stream);
427427

428428
// Attach the client stream to the HTTP/2 stream object as user data.

okhttp/src/main/java/io/grpc/okhttp/OkHttpClientStream.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ public void start(int streamId) {
212212
if (pendingData != null) {
213213
// Only happens when the stream has neither been started nor cancelled.
214214
frameWriter.synStream(false, false, id, 0, requestHeaders);
215-
statsTraceCtx.clientHeadersSent();
215+
statsTraceCtx.clientOutboundHeaders();
216216
requestHeaders = null;
217217

218218
boolean flush = false;

testing/src/main/java/io/grpc/internal/testing/AbstractTransportTest.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ public void basicStream() throws Exception {
661661
StreamCreation serverStreamCreation
662662
= serverTransportListener.takeStreamOrFail(TIMEOUT_MS, TimeUnit.MILLISECONDS);
663663
if (metricsExpected()) {
664-
clientInOrder.verify(clientStreamTracer).headersSent();
664+
clientInOrder.verify(clientStreamTracer).outboundHeaders();
665665
}
666666
assertEquals(methodDescriptor.getFullMethodName(), serverStreamCreation.method);
667667
assertEquals(Lists.newArrayList(clientHeadersCopy.getAll(asciiKey)),
@@ -733,6 +733,7 @@ public void basicStream() throws Exception {
733733
if (metricsExpected()) {
734734
serverInOrder.verify(serverStreamTracer).outboundWireSize(anyLong());
735735
serverInOrder.verify(serverStreamTracer, atLeast(1)).outboundUncompressedSize(anyLong());
736+
clientInOrder.verify(clientStreamTracer).inboundHeaders();
736737
clientInOrder.verify(clientStreamTracer).inboundMessage();
737738
}
738739
assertEquals("Hi. Who are you?", methodDescriptor.parseResponse(inputStreamCaptor.getValue()));
@@ -817,7 +818,8 @@ public void zeroMessageStream() throws Exception {
817818
assertEquals(status.getCode(), statusCaptor.getValue().getCode());
818819
assertEquals(status.getDescription(), statusCaptor.getValue().getDescription());
819820
if (metricsExpected()) {
820-
verify(clientStreamTracer).headersSent();
821+
verify(clientStreamTracer).outboundHeaders();
822+
verify(clientStreamTracer).inboundHeaders();
821823
verify(clientStreamTracer).streamClosed(same(statusCaptor.getValue()));
822824
verify(serverStreamTracer).streamClosed(same(status));
823825
verifyNoMoreInteractions(clientStreamTracer);
@@ -854,7 +856,8 @@ public void earlyServerClose_withServerHeaders() throws Exception {
854856
assertEquals("Hello. Goodbye.", statusCaptor.getValue().getDescription());
855857
assertNull(statusCaptor.getValue().getCause());
856858
if (metricsExpected()) {
857-
verify(clientStreamTracer).headersSent();
859+
verify(clientStreamTracer).outboundHeaders();
860+
verify(clientStreamTracer).inboundHeaders();
858861
verify(clientStreamTracer).streamClosed(same(statusCaptor.getValue()));
859862
verify(serverStreamTracer).streamClosed(same(status));
860863
verifyNoMoreInteractions(clientStreamTracer);
@@ -898,7 +901,7 @@ public void earlyServerClose_noServerHeaders() throws Exception {
898901
assertEquals(Lists.newArrayList(trailers.getAll(binaryKey)),
899902
Lists.newArrayList(metadataCaptor.getValue().getAll(binaryKey)));
900903
if (metricsExpected()) {
901-
verify(clientStreamTracer).headersSent();
904+
verify(clientStreamTracer).outboundHeaders();
902905
verify(clientStreamTracer).streamClosed(same(statusCaptor.getValue()));
903906
verify(serverStreamTracer).streamClosed(same(status));
904907
verifyNoMoreInteractions(clientStreamTracer);
@@ -933,7 +936,7 @@ public void earlyServerClose_serverFailure() throws Exception {
933936
assertEquals(status.getDescription(), statusCaptor.getValue().getDescription());
934937
assertNull(statusCaptor.getValue().getCause());
935938
if (metricsExpected()) {
936-
verify(clientStreamTracer).headersSent();
939+
verify(clientStreamTracer).outboundHeaders();
937940
verify(clientStreamTracer).streamClosed(same(statusCaptor.getValue()));
938941
verify(serverStreamTracer).streamClosed(same(status));
939942
verifyNoMoreInteractions(clientStreamTracer);
@@ -971,7 +974,7 @@ public void clientCancel() throws Exception {
971974
verify(mockServerStreamListener, never()).closed(any(Status.class));
972975
verify(mockClientStreamListener, never()).closed(any(Status.class), any(Metadata.class));
973976
if (metricsExpected()) {
974-
verify(clientStreamTracer).headersSent();
977+
verify(clientStreamTracer).outboundHeaders();
975978
verify(clientStreamTracer).streamClosed(same(status));
976979
verify(serverStreamTracer).streamClosed(same(statusCaptor.getValue()));
977980
verifyNoMoreInteractions(clientStreamTracer);
@@ -1034,7 +1037,8 @@ public void onReady() {
10341037

10351038
serverStream.close(Status.OK, new Metadata());
10361039
if (metricsExpected()) {
1037-
verify(clientStreamTracer).headersSent();
1040+
verify(clientStreamTracer).outboundHeaders();
1041+
verify(clientStreamTracer).inboundHeaders();
10381042
verify(clientStreamTracer).inboundMessage();
10391043
verify(clientStreamTracer).inboundWireSize(anyLong());
10401044
verify(clientStreamTracer, atLeast(1)).inboundUncompressedSize(anyLong());
@@ -1080,7 +1084,7 @@ public void serverCancel() throws Exception {
10801084

10811085
if (metricsExpected()) {
10821086
verify(clientStreamTracerFactory).newClientStreamTracer(any(Metadata.class));
1083-
verify(clientStreamTracer).headersSent();
1087+
verify(clientStreamTracer).outboundHeaders();
10841088
verify(clientStreamTracer).streamClosed(same(statusCaptor.getValue()));
10851089
verify(serverStreamTracerFactory).newServerStreamTracer(anyString(), any(Metadata.class));
10861090
verify(serverStreamTracer).streamClosed(same(status));

0 commit comments

Comments
 (0)