Skip to content

Commit fd5c4f9

Browse files
committed
impl(o11y): introduce gcp.client.service attribute
1 parent 965761a commit fd5c4f9

File tree

3 files changed

+73
-4
lines changed

3 files changed

+73
-4
lines changed

sdk-platform-java/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ public static ClientContext create(StubSettings settings) throws IOException {
276276
.setServerAddress(endpointContext.resolvedServerAddress())
277277
.setServerPort(endpointContext.resolvedServerPort())
278278
.setLibraryMetadata(settings.getLibraryMetadata())
279+
.setServiceName(endpointContext.serviceName())
279280
.build();
280281
ApiTracerFactory apiTracerFactory = settings.getTracerFactory();
281282
if (apiTracerFactory instanceof SpanTracerFactory) {

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,19 @@ void testGetAttemptAttributes_emptyStrings() {
186186
assertThat(attributes).isEmpty();
187187
}
188188

189+
@Test
190+
void testGetAttemptAttributes_serviceName() {
191+
ApiTracerContext context =
192+
ApiTracerContext.newBuilder()
193+
.setLibraryMetadata(LibraryMetadata.empty())
194+
.setServiceName("test-service")
195+
.build();
196+
Map<String, Object> attributes = context.getAttemptAttributes();
197+
198+
assertThat(attributes)
199+
.containsEntry(ObservabilityAttributes.GCP_CLIENT_SERVICE_ATTRIBUTE, "test-service");
200+
}
201+
189202
@Test
190203
void testGetMetricsAttributes_serverPort() {
191204
ApiTracerContext context =

sdk-platform-java/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITOtelTracing.java

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@
5050
import com.google.showcase.v1beta1.it.util.TestClientInitializer;
5151
import com.google.showcase.v1beta1.stub.EchoStub;
5252
import com.google.showcase.v1beta1.stub.EchoStubSettings;
53+
import io.grpc.ManagedChannelBuilder;
54+
import java.io.IOException;
5355
import io.opentelemetry.api.GlobalOpenTelemetry;
5456
import io.opentelemetry.api.common.AttributeKey;
5557
import io.opentelemetry.api.trace.SpanKind;
@@ -98,8 +100,22 @@ void tearDown() {
98100
void testTracing_successfulEcho_grpc() throws Exception {
99101
SpanTracerFactory tracingFactory = new SpanTracerFactory(openTelemetrySdk);
100102

101-
try (EchoClient client =
102-
TestClientInitializer.createGrpcEchoClientOpentelemetry(tracingFactory)) {
103+
EchoSettings grpcEchoSettings =
104+
EchoSettings.newBuilder()
105+
.setCredentialsProvider(NoCredentialsProvider.create())
106+
.setTransportChannelProvider(
107+
EchoSettings.defaultGrpcTransportProviderBuilder()
108+
.setChannelConfigurator(ManagedChannelBuilder::usePlaintext)
109+
.build())
110+
.setEndpoint("localhost:7469")
111+
.build();
112+
113+
EchoStubSettings.Builder builder = (EchoStubSettings.Builder) grpcEchoSettings.getStubSettings().toBuilder();
114+
builder.setTracerFactory(tracingFactory);
115+
ExtendedEchoStubSettings echoStubSettings = new ExtendedEchoStubSettings(builder);
116+
EchoStub stub = echoStubSettings.createStub();
117+
118+
try (EchoClient client = EchoClient.create(stub)) {
103119

104120
client.echo(EchoRequest.newBuilder().setContent("tracing-test").build());
105121

@@ -142,6 +158,11 @@ void testTracing_successfulEcho_grpc() throws Exception {
142158
.getAttributes()
143159
.get(AttributeKey.stringKey(ObservabilityAttributes.RPC_SYSTEM_NAME_ATTRIBUTE)))
144160
.isEqualTo("grpc");
161+
assertThat(
162+
attemptSpan
163+
.getAttributes()
164+
.get(AttributeKey.stringKey(ObservabilityAttributes.GCP_CLIENT_SERVICE_ATTRIBUTE)))
165+
.isEqualTo("showcase");
145166
assertThat(
146167
attemptSpan
147168
.getAttributes()
@@ -156,8 +177,23 @@ void testTracing_successfulEcho_grpc() throws Exception {
156177
void testTracing_successfulEcho_httpjson() throws Exception {
157178
SpanTracerFactory tracingFactory = new SpanTracerFactory(openTelemetrySdk);
158179

159-
try (EchoClient client =
160-
TestClientInitializer.createHttpJsonEchoClientOpentelemetry(tracingFactory)) {
180+
EchoSettings httpJsonEchoSettings =
181+
EchoSettings.newHttpJsonBuilder()
182+
.setCredentialsProvider(NoCredentialsProvider.create())
183+
.setTransportChannelProvider(
184+
EchoSettings.defaultHttpJsonTransportProviderBuilder()
185+
.setHttpTransport(
186+
new NetHttpTransport.Builder().doNotValidateCertificate().build())
187+
.build())
188+
.setEndpoint("http://localhost:7469")
189+
.build();
190+
191+
EchoStubSettings.Builder builder = (EchoStubSettings.Builder) httpJsonEchoSettings.getStubSettings().toBuilder();
192+
builder.setTracerFactory(tracingFactory);
193+
ExtendedEchoStubSettings echoStubSettings = new ExtendedEchoStubSettings(builder);
194+
EchoStub stub = echoStubSettings.createStub();
195+
196+
try (EchoClient client = EchoClient.create(stub)) {
161197

162198
client.echo(EchoRequest.newBuilder().setContent("tracing-test").build());
163199

@@ -196,6 +232,11 @@ void testTracing_successfulEcho_httpjson() throws Exception {
196232
.getAttributes()
197233
.get(AttributeKey.stringKey(ObservabilityAttributes.ARTIFACT_ATTRIBUTE)))
198234
.isEqualTo(SHOWCASE_ARTIFACT);
235+
assertThat(
236+
attemptSpan
237+
.getAttributes()
238+
.get(AttributeKey.stringKey(ObservabilityAttributes.GCP_CLIENT_SERVICE_ATTRIBUTE)))
239+
.isEqualTo("showcase");
199240
assertThat(
200241
attemptSpan
201242
.getAttributes()
@@ -365,4 +406,18 @@ void testTracing_retry_httpjson() throws Exception {
365406
.collect(java.util.stream.Collectors.toList());
366407
assertThat(resendCounts).containsExactlyElementsIn(expectedCounts).inOrder();
367408
}
409+
410+
/**
411+
* Custom wrapper to set a service name for showcase clients, which lack one by default.
412+
*/
413+
private static class ExtendedEchoStubSettings extends EchoStubSettings {
414+
protected ExtendedEchoStubSettings(EchoStubSettings.Builder builder) throws IOException {
415+
super(builder);
416+
}
417+
418+
@Override
419+
public String getServiceName() {
420+
return "showcase";
421+
}
422+
}
368423
}

0 commit comments

Comments
 (0)