Skip to content

Commit 9e16565

Browse files
committed
refactor: remove SpanName constructor from TracedUnaryCallable
1 parent 85f51b2 commit 9e16565

5 files changed

Lines changed: 42 additions & 64 deletions

File tree

sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallableFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ OperationCallable<RequestT, ResponseT, MetadataT> createOperationCallable(
199199
// Create a sub-trace for the initial RPC that starts the operation.
200200
UnaryCallable<RequestT, OperationSnapshot> tracedInitialCallable =
201201
new TracedOperationInitialCallable<>(
202-
initialCallable, clientContext.getTracerFactory(), initialSpanName);
202+
initialCallable, clientContext.getTracerFactory(), tracerContext);
203203

204204
LongRunningClient longRunningClient = new GrpcLongRunningClient(operationsStub);
205205
OperationCallable<RequestT, ResponseT, MetadataT> operationCallable =

sdk-platform-java/gax-java/gax/src/main/java/com/google/api/gax/tracing/TracedOperationInitialCallable.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ public class TracedOperationInitialCallable<RequestT>
4949
public TracedOperationInitialCallable(
5050
UnaryCallable<RequestT, OperationSnapshot> innerCallable,
5151
ApiTracerFactory tracedFactory,
52-
SpanName spanName) {
53-
super(innerCallable, tracedFactory, spanName);
52+
ApiTracerContext apiTracerContext) {
53+
super(innerCallable, tracedFactory, apiTracerContext, null);
5454
}
5555

5656
@Override

sdk-platform-java/gax-java/gax/src/main/java/com/google/api/gax/tracing/TracedUnaryCallable.java

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,10 @@ public class TracedUnaryCallable<RequestT, ResponseT> extends UnaryCallable<Requ
5151
private final UnaryCallable<RequestT, ResponseT> innerCallable;
5252
private final ApiTracerFactory tracerFactory;
5353
private final SpanName spanName;
54-
@Nullable private final ApiTracerContext apiTracerContext;
54+
private final ApiTracerContext apiTracerContext;
5555
@Nullable private final ResourceNameExtractor<RequestT> resourceNameExtractor;
5656

57-
public TracedUnaryCallable(
58-
UnaryCallable<RequestT, ResponseT> innerCallable,
59-
ApiTracerFactory tracerFactory,
60-
SpanName spanName) {
61-
this.innerCallable = innerCallable;
62-
this.tracerFactory = tracerFactory;
63-
this.spanName = spanName;
64-
this.apiTracerContext = null;
65-
this.resourceNameExtractor = null;
66-
}
57+
6758

6859
public TracedUnaryCallable(
6960
UnaryCallable<RequestT, ResponseT> innerCallable,
@@ -86,15 +77,10 @@ public TracedUnaryCallable(
8677
*/
8778
@Override
8879
public ApiFuture<ResponseT> futureCall(RequestT request, ApiCallContext context) {
89-
ApiTracer tracer;
90-
if (apiTracerContext != null) {
91-
tracer =
92-
tracerFactory.newTracer(
93-
context.getTracer(),
94-
apiTracerContext.withResourceNameExtractor(request, resourceNameExtractor));
95-
} else {
96-
tracer = tracerFactory.newTracer(context.getTracer(), spanName, OperationType.Unary);
97-
}
80+
ApiTracer tracer =
81+
tracerFactory.newTracer(
82+
context.getTracer(),
83+
apiTracerContext.withResourceNameExtractor(request, resourceNameExtractor));
9884
TraceFinisher<ResponseT> finisher = new TraceFinisher<>(tracer);
9985

10086
try {

sdk-platform-java/gax-java/gax/src/test/java/com/google/api/gax/tracing/TracedCallableTest.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
import com.google.api.gax.rpc.UnaryCallSettings;
4747
import com.google.api.gax.rpc.UnaryCallable;
4848
import com.google.api.gax.rpc.testing.FakeCallContext;
49+
import com.google.api.gax.rpc.LibraryMetadata;
50+
import com.google.api.gax.tracing.ApiTracerContext.Transport;
4951
import com.google.api.gax.tracing.ApiTracerFactory.OperationType;
5052
import org.junit.jupiter.api.BeforeEach;
5153
import org.junit.jupiter.api.Test;
@@ -56,6 +58,13 @@
5658
@ExtendWith(MockitoExtension.class)
5759
class TracedCallableTest {
5860
private static final SpanName SPAN_NAME = SpanName.of("FakeClient", "FakeRpc");
61+
private static final ApiTracerContext TRACER_CONTEXT =
62+
ApiTracerContext.newBuilder()
63+
.setFullMethodName("FakeClient/FakeRpc")
64+
.setTransport(Transport.GRPC)
65+
.setLibraryMetadata(LibraryMetadata.empty())
66+
.setOperationType(OperationType.Unary)
67+
.build();
5968

6069
@Mock private ApiTracerFactory tracerFactory;
6170
private ApiTracer parentTracer;
@@ -71,8 +80,7 @@ void setUp() {
7180
parentTracer = BaseApiTracer.getInstance();
7281

7382
// Wire the mock tracer factory
74-
when(tracerFactory.newTracer(
75-
any(ApiTracer.class), any(SpanName.class), eq(OperationType.Unary)))
83+
when(tracerFactory.newTracer(any(ApiTracer.class), any(ApiTracerContext.class)))
7684
.thenReturn(tracer);
7785

7886
// Wire the mock inner callable
@@ -87,7 +95,7 @@ public UnaryCallable<String, String> setupTracedUnaryCallable(
8795
UnaryCallSettings<Object, Object> callSettings) {
8896
UnaryCallable<String, String> callable =
8997
Callables.retrying(innerCallable, callSettings, clientContext);
90-
return new TracedUnaryCallable<>(callable, tracerFactory, SPAN_NAME);
98+
return new TracedUnaryCallable<>(callable, tracerFactory, TRACER_CONTEXT, null);
9199
}
92100

93101
@Test
@@ -102,7 +110,7 @@ void testNonRetriedCallable() throws Exception {
102110

103111
ApiFuture<String> future = callable.futureCall("Is your refrigerator running?", callContext);
104112

105-
verify(tracerFactory, times(1)).newTracer(parentTracer, SPAN_NAME, OperationType.Unary);
113+
verify(tracerFactory, times(1)).newTracer(parentTracer, TRACER_CONTEXT);
106114
verify(tracer, times(1)).attemptStarted(anyString(), anyInt());
107115
verify(tracer, times(1)).attemptSucceeded();
108116
verify(tracer, times(1)).operationSucceeded();

sdk-platform-java/gax-java/gax/src/test/java/com/google/api/gax/tracing/TracedUnaryCallableTest.java

Lines changed: 21 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -73,21 +73,14 @@ class TracedUnaryCallableTest {
7373
private TracedUnaryCallable<String, String> tracedUnaryCallable;
7474
private FakeCallContext callContext;
7575

76-
void init(boolean useContext) {
76+
void init() {
7777
parentTracer = BaseApiTracer.getInstance();
7878

7979
// Wire the mock tracer factory
80-
if (useContext) {
81-
when(tracerFactory.newTracer(any(ApiTracer.class), any(ApiTracerContext.class)))
82-
.thenReturn(tracer);
83-
tracedUnaryCallable =
84-
new TracedUnaryCallable<>(innerCallable, tracerFactory, TRACER_CONTEXT, null);
85-
} else {
86-
when(tracerFactory.newTracer(
87-
any(ApiTracer.class), any(SpanName.class), eq(OperationType.Unary)))
88-
.thenReturn(tracer);
89-
tracedUnaryCallable = new TracedUnaryCallable<>(innerCallable, tracerFactory, SPAN_NAME);
90-
}
80+
when(tracerFactory.newTracer(any(ApiTracer.class), any(ApiTracerContext.class)))
81+
.thenReturn(tracer);
82+
tracedUnaryCallable =
83+
new TracedUnaryCallable<>(innerCallable, tracerFactory, TRACER_CONTEXT, null);
9184

9285
// Wire the mock inner callable
9386
innerResult = SettableApiFuture.create();
@@ -96,16 +89,11 @@ void init(boolean useContext) {
9689
callContext = FakeCallContext.createDefault();
9790
}
9891

99-
@ParameterizedTest
100-
@ValueSource(booleans = {false, true})
101-
void testTracerCreated(boolean useContext) {
102-
init(useContext);
92+
@Test
93+
void testTracerCreated() {
94+
init();
10395
tracedUnaryCallable.futureCall("test", callContext);
104-
if (useContext) {
105-
verify(tracerFactory, times(1)).newTracer(parentTracer, TRACER_CONTEXT);
106-
} else {
107-
verify(tracerFactory, times(1)).newTracer(parentTracer, SPAN_NAME, OperationType.Unary);
108-
}
96+
verify(tracerFactory, times(1)).newTracer(parentTracer, TRACER_CONTEXT);
10997
}
11098

11199
@Test
@@ -131,40 +119,36 @@ void testOperationTypeIsSet() {
131119
assertThat(contextCaptor.getValue().operationType()).isEqualTo(OperationType.Unary);
132120
}
133121

134-
@ParameterizedTest
135-
@ValueSource(booleans = {false, true})
136-
void testOperationFinish(boolean useContext) {
137-
init(useContext);
122+
@Test
123+
void testOperationFinish() {
124+
init();
138125
innerResult.set("successful result");
139126
tracedUnaryCallable.futureCall("test", callContext);
140127

141128
verify(tracer, times(1)).operationSucceeded();
142129
}
143130

144-
@ParameterizedTest
145-
@ValueSource(booleans = {false, true})
146-
void testOperationCancelled(boolean useContext) {
147-
init(useContext);
131+
@Test
132+
void testOperationCancelled() {
133+
init();
148134
innerResult.cancel(true);
149135
tracedUnaryCallable.futureCall("test", callContext);
150136
verify(tracer, times(1)).operationCancelled();
151137
}
152138

153-
@ParameterizedTest
154-
@ValueSource(booleans = {false, true})
155-
void testOperationFailed(boolean useContext) {
156-
init(useContext);
139+
@Test
140+
void testOperationFailed() {
141+
init();
157142
RuntimeException fakeError = new RuntimeException("fake error");
158143
innerResult.setException(fakeError);
159144
tracedUnaryCallable.futureCall("test", callContext);
160145

161146
verify(tracer, times(1)).operationFailed(fakeError);
162147
}
163148

164-
@ParameterizedTest
165-
@ValueSource(booleans = {false, true})
166-
void testSyncError(boolean useContext) {
167-
init(useContext);
149+
@Test
150+
void testSyncError() {
151+
init();
168152
RuntimeException fakeError = new RuntimeException("fake error");
169153

170154
// Reset the irrelevant expectations from setup. (only needed to silence the warnings).

0 commit comments

Comments
 (0)