5050import com .google .showcase .v1beta1 .it .util .TestClientInitializer ;
5151import com .google .showcase .v1beta1 .stub .EchoStub ;
5252import com .google .showcase .v1beta1 .stub .EchoStubSettings ;
53+ import io .grpc .ManagedChannelBuilder ;
54+ import java .io .IOException ;
5355import io .opentelemetry .api .GlobalOpenTelemetry ;
5456import io .opentelemetry .api .common .AttributeKey ;
5557import 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