18
18
19
19
import static com .google .common .truth .Truth .assertThat ;
20
20
21
- import com .google .cloud .firestore .telemetry .DisabledTraceUtil ;
22
21
import com .google .cloud .firestore .telemetry .EnabledTraceUtil ;
23
22
import io .opentelemetry .api .GlobalOpenTelemetry ;
24
- import io .opentelemetry .api .OpenTelemetry ;
23
+ import io .opentelemetry .api .trace . TracerProvider ;
25
24
import io .opentelemetry .sdk .OpenTelemetrySdk ;
25
+ import io .opentelemetry .sdk .resources .Resource ;
26
+ import io .opentelemetry .sdk .trace .SdkTracerProvider ;
26
27
import javax .annotation .Nullable ;
27
28
import org .junit .After ;
28
29
import org .junit .Before ;
@@ -49,112 +50,67 @@ FirestoreOptions.Builder getBaseOptions() {
49
50
}
50
51
51
52
@ Test
52
- public void defaultOptionsDisablesTelemetryCollection () {
53
+ public void defaultOptionsUsesEnabledTraceUtilWithNoopOpenTelemetry () {
53
54
FirestoreOptions firestoreOptions = getBaseOptions ().build ();
54
55
firestore = firestoreOptions .getService ();
55
- assertThat (firestore .getOptions ().getOpenTelemetryOptions ().isTracingEnabled ()).isFalse ();
56
56
assertThat (firestore .getOptions ().getOpenTelemetryOptions ().getOpenTelemetry ()).isNull ();
57
57
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 ();
91
58
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 ());
92
63
}
93
64
94
65
@ 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 ();
112
71
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 ();
117
74
118
- // Make sure Firestore does not use GlobalOpenTelemetry by default .
75
+ // Do NOT pass an OpenTelemetry instance to Firestore .
119
76
FirestoreOptions firestoreOptions = getBaseOptions ().build ();
120
77
firestore = firestoreOptions .getService ();
121
- assertThat (firestore .getOptions ().getOpenTelemetryOptions ().isTracingEnabled ()).isFalse ();
78
+
79
+ // An OpenTelemetry instance has not been set in options.
122
80
assertThat (firestore .getOptions ().getOpenTelemetryOptions ().getOpenTelemetry ()).isNull ();
81
+
82
+ // Assert that tracing is enabled and is using the custom tracer provider from the
83
+ // GlobalOpenTelemetry.
123
84
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 ));
125
88
}
126
89
127
90
@ Test
128
91
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.
130
100
FirestoreOptions firestoreOptions =
131
101
getBaseOptions ()
132
102
.setOpenTelemetryOptions (
133
103
FirestoreOpenTelemetryOptions .newBuilder ()
134
- .setTracingEnabled (true )
135
104
.setOpenTelemetry (myOpenTelemetrySdk )
136
105
.build ())
137
106
.build ();
138
107
firestore = firestoreOptions .getService ();
108
+ assertThat (firestore .getOptions ().getOpenTelemetryOptions ().getOpenTelemetry ())
109
+ .isEqualTo (myOpenTelemetrySdk );
110
+ assertThat (firestore .getOptions ().getTraceUtil () instanceof EnabledTraceUtil ).isTrue ();
139
111
EnabledTraceUtil enabledTraceUtil = (EnabledTraceUtil ) firestore .getOptions ().getTraceUtil ();
140
112
assertThat (enabledTraceUtil ).isNotNull ();
141
113
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 ));
159
115
}
160
116
}
0 commit comments