11/*
2- * Copyright 2026 Google LLC
2+ * Copyright 2024 Google LLC
33 *
44 * Redistribution and use in source and binary forms, with or without
55 * modification, are permitted provided that the following conditions are
3030
3131package com .google .showcase .v1beta1 .it ;
3232
33- import static com .google .common .truth .Truth .assertThat ;
3433import static org .junit .Assert .assertThrows ;
3534
3635import com .google .api .client .http .javanet .NetHttpTransport ;
4342import com .google .api .gax .rpc .StatusCode .Code ;
4443import com .google .api .gax .rpc .UnaryCallable ;
4544import com .google .api .gax .rpc .UnavailableException ;
46- import com .google .api .gax .tracing .*;
45+ import com .google .api .gax .tracing .MetricsTracer ;
46+ import com .google .api .gax .tracing .MetricsTracerFactory ;
47+ import com .google .api .gax .tracing .OpenTelemetryMetricsRecorder ;
4748import com .google .common .collect .ImmutableList ;
4849import com .google .common .collect .ImmutableMap ;
4950import com .google .common .collect .ImmutableSet ;
7172import io .opentelemetry .sdk .metrics .data .MetricData ;
7273import io .opentelemetry .sdk .metrics .data .PointData ;
7374import io .opentelemetry .sdk .testing .exporter .InMemoryMetricReader ;
74- import io .opentelemetry .sdk .testing .exporter .InMemorySpanExporter ;
75- import io .opentelemetry .sdk .trace .SdkTracerProvider ;
76- import io .opentelemetry .sdk .trace .data .SpanData ;
77- import io .opentelemetry .sdk .trace .export .SimpleSpanProcessor ;
7875import java .io .IOException ;
7976import java .util .ArrayList ;
8077import java .util .HashMap ;
@@ -149,6 +146,7 @@ private OpenTelemetryMetricsRecorder createOtelMetricsRecorder(
149146 InMemoryMetricReader inMemoryMetricReader ) {
150147 SdkMeterProvider sdkMeterProvider =
151148 SdkMeterProvider .builder ().registerMetricReader (inMemoryMetricReader ).build ();
149+
152150 OpenTelemetry openTelemetry =
153151 OpenTelemetrySdk .builder ().setMeterProvider (sdkMeterProvider ).build ();
154152 return new OpenTelemetryMetricsRecorder (openTelemetry , SERVICE_NAME );
@@ -169,8 +167,6 @@ void setup() throws Exception {
169167
170168 @ AfterEach
171169 void cleanup () throws InterruptedException , IOException {
172- System .clearProperty ("GOOGLE_CLOUD_ENABLE_TRACING" );
173-
174170 inMemoryMetricReader .close ();
175171 inMemoryMetricReader .shutdown ();
176172
@@ -923,55 +919,4 @@ void grpcOpenTelemetryImplementation_setSampledToLocalTracing_methodFullNameIsRe
923919 echoClient .close ();
924920 echoClient .awaitTermination (TestClientInitializer .AWAIT_TERMINATION_SECONDS , TimeUnit .SECONDS );
925921 }
926-
927- @ Test
928- void testTracingFeatureFlag () throws Exception {
929- // Test tracing disabled
930- System .setProperty ("GOOGLE_CLOUD_ENABLE_TRACING" , "false" );
931- TracingTracerFactory factory = new TracingTracerFactory (null );
932- ApiTracer tracer =
933- factory .newTracer (
934- BaseApiTracer .getInstance (),
935- SpanName .of ("EchoClient" , "Echo" ),
936- ApiTracerFactory .OperationType .Unary );
937- assertThat (tracer ).isNotInstanceOf (TracingTracer .class );
938- assertThat (tracer ).isSameInstanceAs (BaseApiTracer .getInstance ());
939-
940- // Test tracing enabled
941- System .setProperty ("GOOGLE_CLOUD_ENABLE_TRACING" , "true" );
942- tracer =
943- factory .newTracer (
944- BaseApiTracer .getInstance (),
945- SpanName .of ("EchoClient" , "Echo" ),
946- ApiTracerFactory .OperationType .Unary );
947- assertThat (tracer ).isInstanceOf (TracingTracer .class );
948-
949- // Verify dummy network trace
950- InMemorySpanExporter spanExporter = InMemorySpanExporter .create ();
951- SdkTracerProvider tracerProvider =
952- SdkTracerProvider .builder ()
953- .addSpanProcessor (SimpleSpanProcessor .create (spanExporter ))
954- .build ();
955- OpenTelemetry openTelemetry =
956- OpenTelemetrySdk .builder ().setTracerProvider (tracerProvider ).build ();
957-
958- OpenTelemetryTracingRecorder tracingRecorder =
959- new OpenTelemetryTracingRecorder (openTelemetry , SERVICE_NAME );
960- TracingTracerFactory tracingTracerFactory = new TracingTracerFactory (tracingRecorder );
961-
962- EchoClient grpcClient = TestClientInitializer .createGrpcEchoClientOpentelemetry (tracingTracerFactory );
963- try {
964- grpcClient .echo (EchoRequest .newBuilder ().setContent ("test" ).build ());
965-
966- List <SpanData > spans = spanExporter .getFinishedSpanItems ();
967- assertThat (spans ).isNotEmpty ();
968- Optional <SpanData > t4Span =
969- spans .stream ().filter (s -> s .getName ().equals ("LowLevelNetworkSpan" )).findFirst ();
970- assertThat (t4Span .isPresent ()).isTrue ();
971- assertThat (t4Span .get ().getKind ()).isEqualTo (io .opentelemetry .api .trace .SpanKind .CLIENT );
972- } finally {
973- grpcClient .close ();
974- grpcClient .awaitTermination (TestClientInitializer .AWAIT_TERMINATION_SECONDS , TimeUnit .SECONDS );
975- }
976- }
977922}
0 commit comments