1818
1919import static com .google .common .truth .Truth .assertThat ;
2020
21- import com .google .cloud .firestore .telemetry .DisabledTraceUtil ;
2221import com .google .cloud .firestore .telemetry .EnabledTraceUtil ;
2322import io .opentelemetry .api .GlobalOpenTelemetry ;
24- import io .opentelemetry .api .OpenTelemetry ;
23+ import io .opentelemetry .api .trace . TracerProvider ;
2524import io .opentelemetry .sdk .OpenTelemetrySdk ;
25+ import io .opentelemetry .sdk .resources .Resource ;
26+ import io .opentelemetry .sdk .trace .SdkTracerProvider ;
2627import javax .annotation .Nullable ;
2728import org .junit .After ;
2829import org .junit .Before ;
@@ -49,112 +50,67 @@ FirestoreOptions.Builder getBaseOptions() {
4950 }
5051
5152 @ Test
52- public void defaultOptionsDisablesTelemetryCollection () {
53+ public void defaultOptionsUsesEnabledTraceUtilWithNoopOpenTelemetry () {
5354 FirestoreOptions firestoreOptions = getBaseOptions ().build ();
5455 firestore = firestoreOptions .getService ();
55- assertThat (firestore .getOptions ().getOpenTelemetryOptions ().isTracingEnabled ()).isFalse ();
5656 assertThat (firestore .getOptions ().getOpenTelemetryOptions ().getOpenTelemetry ()).isNull ();
5757 assertThat (firestore .getOptions ().getTraceUtil ()).isNotNull ();
58- assertThat (firestore .getOptions ().getTraceUtil () instanceof DisabledTraceUtil ).isTrue ();
59- }
60-
61- @ Test
62- public void canEnableTelemetryCollectionWithoutOpenTelemetryInstance () {
63- FirestoreOptions firestoreOptions =
64- getBaseOptions ()
65- .setOpenTelemetryOptions (
66- FirestoreOpenTelemetryOptions .newBuilder ().setTracingEnabled (true ).build ())
67- .build ();
68- firestore = firestoreOptions .getService ();
69- assertThat (firestore .getOptions ().getOpenTelemetryOptions ().isTracingEnabled ()).isTrue ();
70- assertThat (firestore .getOptions ().getOpenTelemetryOptions ().getOpenTelemetry ()).isNull ();
71- assertThat (firestore .getOptions ().getTraceUtil ()).isNotNull ();
72- assertThat (firestore .getOptions ().getTraceUtil () instanceof EnabledTraceUtil ).isTrue ();
73- }
74-
75- @ Test
76- public void canEnableTelemetryCollectionWithOpenTelemetryInstance () {
77- OpenTelemetry openTelemetry = GlobalOpenTelemetry .get ();
78- FirestoreOptions firestoreOptions =
79- getBaseOptions ()
80- .setOpenTelemetryOptions (
81- FirestoreOpenTelemetryOptions .newBuilder ()
82- .setTracingEnabled (true )
83- .setOpenTelemetry (openTelemetry )
84- .build ())
85- .build ();
86- firestore = firestoreOptions .getService ();
87- assertThat (firestore .getOptions ().getOpenTelemetryOptions ().isTracingEnabled ()).isTrue ();
88- assertThat (firestore .getOptions ().getOpenTelemetryOptions ().getOpenTelemetry ())
89- .isEqualTo (openTelemetry );
90- assertThat (firestore .getOptions ().getTraceUtil ()).isNotNull ();
9158 assertThat (firestore .getOptions ().getTraceUtil () instanceof EnabledTraceUtil ).isTrue ();
59+ EnabledTraceUtil enabledTraceUtil = (EnabledTraceUtil ) firestore .getOptions ().getTraceUtil ();
60+ // Assert that a Noop tracer provider is used by default.
61+ assertThat (enabledTraceUtil .getOpenTelemetry ().getTracerProvider ())
62+ .isSameInstanceAs (TracerProvider .noop ());
9263 }
9364
9465 @ Test
95- public void canDisableTelemetryCollectionWhileOpenTelemetryInstanceIsNotNull () {
96- OpenTelemetry openTelemetry = GlobalOpenTelemetry .get ();
97- FirestoreOptions firestoreOptions =
98- getBaseOptions ()
99- .setOpenTelemetryOptions (
100- FirestoreOpenTelemetryOptions .newBuilder ()
101- .setTracingEnabled (false )
102- .setOpenTelemetry (openTelemetry )
103- .build ())
104- .build ();
105- firestore = firestoreOptions .getService ();
106- assertThat (firestore .getOptions ().getOpenTelemetryOptions ().isTracingEnabled ()).isFalse ();
107- assertThat (firestore .getOptions ().getOpenTelemetryOptions ().getOpenTelemetry ())
108- .isEqualTo (openTelemetry );
109- assertThat (firestore .getOptions ().getTraceUtil ()).isNotNull ();
110- assertThat (firestore .getOptions ().getTraceUtil () instanceof DisabledTraceUtil ).isTrue ();
111- }
66+ public void existenceOfGlobalOpenTelemetryEnablesTracingWithTheGlobalTracerProvider () {
67+ // Make a custom TracerProvider.
68+ Resource resource =
69+ Resource .getDefault ().merge (Resource .builder ().put ("service.name" , "test" ).build ());
70+ SdkTracerProvider myTracerProvider = SdkTracerProvider .builder ().setResource (resource ).build ();
11271
113- @ Test
114- public void existenceOfGlobalOpenTelemetryDoesNotEnableTracing () {
115- // Register a global OpenTelemetry SDK.
116- OpenTelemetrySdk .builder ().buildAndRegisterGlobal ();
72+ // Register a GlobalOpenTelemetry with the custom tracer provider.
73+ OpenTelemetrySdk .builder ().setTracerProvider (myTracerProvider ).buildAndRegisterGlobal ();
11774
118- // Make sure Firestore does not use GlobalOpenTelemetry by default .
75+ // Do NOT pass an OpenTelemetry instance to Firestore .
11976 FirestoreOptions firestoreOptions = getBaseOptions ().build ();
12077 firestore = firestoreOptions .getService ();
121- assertThat (firestore .getOptions ().getOpenTelemetryOptions ().isTracingEnabled ()).isFalse ();
78+
79+ // An OpenTelemetry instance has not been set in options.
12280 assertThat (firestore .getOptions ().getOpenTelemetryOptions ().getOpenTelemetry ()).isNull ();
81+
82+ // Assert that tracing is enabled and is using the custom tracer provider from the
83+ // GlobalOpenTelemetry.
12384 assertThat (firestore .getOptions ().getTraceUtil ()).isNotNull ();
124- assertThat (firestore .getOptions ().getTraceUtil () instanceof DisabledTraceUtil ).isTrue ();
85+ assertThat (firestore .getOptions ().getTraceUtil () instanceof EnabledTraceUtil ).isTrue ();
86+ EnabledTraceUtil enabledTraceUtil = (EnabledTraceUtil ) firestore .getOptions ().getTraceUtil ();
87+ assertThat (enabledTraceUtil .getOpenTelemetry ().getTracerProvider ().equals (myTracerProvider ));
12588 }
12689
12790 @ Test
12891 public void canPassOpenTelemetrySdkInstanceToFirestore () {
129- OpenTelemetrySdk myOpenTelemetrySdk = OpenTelemetrySdk .builder ().build ();
92+ // Make a custom TracerProvider and make an OpenTelemetry instance with it.
93+ Resource resource =
94+ Resource .getDefault ().merge (Resource .builder ().put ("service.name" , "test" ).build ());
95+ SdkTracerProvider myTracerProvider = SdkTracerProvider .builder ().setResource (resource ).build ();
96+ OpenTelemetrySdk myOpenTelemetrySdk =
97+ OpenTelemetrySdk .builder ().setTracerProvider (myTracerProvider ).build ();
98+
99+ // Pass it to Firestore.
130100 FirestoreOptions firestoreOptions =
131101 getBaseOptions ()
132102 .setOpenTelemetryOptions (
133103 FirestoreOpenTelemetryOptions .newBuilder ()
134- .setTracingEnabled (true )
135104 .setOpenTelemetry (myOpenTelemetrySdk )
136105 .build ())
137106 .build ();
138107 firestore = firestoreOptions .getService ();
108+ assertThat (firestore .getOptions ().getOpenTelemetryOptions ().getOpenTelemetry ())
109+ .isEqualTo (myOpenTelemetrySdk );
110+ assertThat (firestore .getOptions ().getTraceUtil () instanceof EnabledTraceUtil ).isTrue ();
139111 EnabledTraceUtil enabledTraceUtil = (EnabledTraceUtil ) firestore .getOptions ().getTraceUtil ();
140112 assertThat (enabledTraceUtil ).isNotNull ();
141113 assertThat (enabledTraceUtil .getOpenTelemetry ()).isEqualTo (myOpenTelemetrySdk );
142- }
143-
144- @ Test
145- public void usesGlobalOpenTelemetryIfOpenTelemetryNotProvidedInOptions () {
146- // Register a global OpenTelemetry SDK.
147- OpenTelemetrySdk .builder ().buildAndRegisterGlobal ();
148-
149- // Do _not_ pass it to FirestoreOptions.
150- FirestoreOptions firestoreOptions =
151- getBaseOptions ()
152- .setOpenTelemetryOptions (
153- FirestoreOpenTelemetryOptions .newBuilder ().setTracingEnabled (true ).build ())
154- .build ();
155- firestore = firestoreOptions .getService ();
156- EnabledTraceUtil enabledTraceUtil = (EnabledTraceUtil ) firestore .getOptions ().getTraceUtil ();
157- assertThat (enabledTraceUtil ).isNotNull ();
158- assertThat (enabledTraceUtil .getOpenTelemetry ()).isEqualTo (GlobalOpenTelemetry .get ());
114+ assertThat (enabledTraceUtil .getOpenTelemetry ().getTracerProvider ().equals (myTracerProvider ));
159115 }
160116}
0 commit comments