2323
2424
2525def test_is_otel_capabilities_enabled_disabled (monkeypatch ):
26+ """Proves that is_otel_capabilities_enabled returns False when the tracing environment variable is disabled."""
2627 monkeypatch .setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "false" )
2728 assert not _observability .is_otel_capabilities_enabled ()
2829
2930
3031def test_is_otel_capabilities_enabled_otel_missing (monkeypatch ):
32+ """Proves that is_otel_capabilities_enabled returns False when tracing is enabled
33+ but OpenTelemetry gRPC instrumentation is not installed.
34+ """
3135 monkeypatch .setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "true" )
3236 # Simulate OTel not being installed by blocking imports
3337 monkeypatch .setitem (sys .modules , "opentelemetry.instrumentation.grpc" , None )
@@ -36,6 +40,9 @@ def test_is_otel_capabilities_enabled_otel_missing(monkeypatch):
3640
3741
3842def test_is_otel_capabilities_enabled_otel_installed (monkeypatch ):
43+ """Proves that is_otel_capabilities_enabled returns True when tracing is enabled
44+ and OpenTelemetry gRPC instrumentation is installed.
45+ """
3946 monkeypatch .setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "true" )
4047
4148 mock_otel = mock .Mock ()
@@ -57,7 +64,7 @@ def test_is_otel_capabilities_enabled_experimental_requires_env_var(monkeypatch)
5764 env var set to 'true' raises FeatureGatingError (Fail Fast).
5865 """
5966 monkeypatch .delenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , raising = False )
60- options = ClientOptions (tracer_provider = object ())
67+ options = ClientOptions (tracer_provider = mock . Mock ())
6168
6269 with pytest .raises (
6370 FeatureGatingError ,
@@ -83,115 +90,54 @@ def test_is_otel_capabilities_enabled_experimental_enabled_with_config(monkeypat
8390 sys .modules , "opentelemetry.instrumentation.grpc" , mock_otel_grpc
8491 )
8592
86- options = ClientOptions (tracer_provider = object ())
93+ options = ClientOptions (tracer_provider = mock . Mock ())
8794 assert _observability .is_otel_capabilities_enabled (options )
8895
8996
90- def test_get_otel_interceptor_sync_default (monkeypatch ):
91- mock_otel = mock .Mock ()
92- mock_otel_grpc = mock_otel .instrumentation .grpc
93- mock_interceptor = mock .Mock ()
94- mock_otel_grpc .client_interceptor .return_value = mock_interceptor
95-
96- monkeypatch .setitem (sys .modules , "opentelemetry" , mock_otel )
97- monkeypatch .setitem (
98- sys .modules , "opentelemetry.instrumentation" , mock_otel .instrumentation
99- )
100- monkeypatch .setitem (
101- sys .modules , "opentelemetry.instrumentation.grpc" , mock_otel_grpc
102- )
103-
104- result = _observability ._get_otel_interceptor ()
105- assert result is mock_interceptor
106- mock_otel_grpc .client_interceptor .assert_called_once_with (tracer_provider = None )
97+ def test_get_tracer_provider_default ():
98+ """Proves that _get_tracer_provider returns None when no client_options are supplied."""
99+ assert _observability ._get_tracer_provider () is None
107100
108101
109- def test_get_otel_interceptor_sync_config (monkeypatch ):
110- mock_tracer_provider = object ()
102+ def test_get_tracer_provider_config ():
103+ """Proves that _get_tracer_provider extracts the tracer provider when supplied
104+ via a ClientOptions instance.
105+ """
106+ mock_tracer_provider = mock .Mock ()
111107 options = ClientOptions (tracer_provider = mock_tracer_provider )
108+ assert _observability ._get_tracer_provider (options ) is mock_tracer_provider
112109
113- mock_otel = mock .Mock ()
114- mock_otel_grpc = mock_otel .instrumentation .grpc
115- mock_interceptor = mock .Mock ()
116- mock_otel_grpc .client_interceptor .return_value = mock_interceptor
117-
118- monkeypatch .setitem (sys .modules , "opentelemetry" , mock_otel )
119- monkeypatch .setitem (
120- sys .modules , "opentelemetry.instrumentation" , mock_otel .instrumentation
121- )
122- monkeypatch .setitem (
123- sys .modules , "opentelemetry.instrumentation.grpc" , mock_otel_grpc
124- )
125-
126- result = _observability ._get_otel_interceptor (client_options = options )
127- assert result is mock_interceptor
128- mock_otel_grpc .client_interceptor .assert_called_once_with (
129- tracer_provider = mock_tracer_provider
130- )
131110
132-
133- def test_get_otel_interceptor_sync_dict_config (monkeypatch ):
134- mock_tracer_provider = object ()
111+ def test_get_tracer_provider_dict_config ():
112+ """Proves that _get_tracer_provider extracts the tracer provider when supplied
113+ via a dictionary configuration.
114+ """
115+ mock_tracer_provider = mock .Mock ()
135116 options = {"tracer_provider" : mock_tracer_provider }
136-
137- mock_otel = mock .Mock ()
138- mock_otel_grpc = mock_otel .instrumentation .grpc
139- mock_interceptor = mock .Mock ()
140- mock_otel_grpc .client_interceptor .return_value = mock_interceptor
141-
142- monkeypatch .setitem (sys .modules , "opentelemetry" , mock_otel )
143- monkeypatch .setitem (
144- sys .modules , "opentelemetry.instrumentation" , mock_otel .instrumentation
145- )
146- monkeypatch .setitem (
147- sys .modules , "opentelemetry.instrumentation.grpc" , mock_otel_grpc
148- )
149-
150- result = _observability ._get_otel_interceptor (client_options = options )
151- assert result is mock_interceptor
152- mock_otel_grpc .client_interceptor .assert_called_once_with (
153- tracer_provider = mock_tracer_provider
154- )
155-
156-
157- def test_get_otel_interceptor_async (monkeypatch ):
158- mock_tracer_provider = object ()
159- options = ClientOptions (tracer_provider = mock_tracer_provider )
160-
161- mock_otel = mock .Mock ()
162- mock_otel_grpc = mock_otel .instrumentation .grpc
163- mock_async_interceptors = [mock .Mock ()]
164- mock_otel_grpc .aio_client_interceptors .return_value = mock_async_interceptors
165-
166- monkeypatch .setitem (sys .modules , "opentelemetry" , mock_otel )
167- monkeypatch .setitem (
168- sys .modules , "opentelemetry.instrumentation" , mock_otel .instrumentation
169- )
170- monkeypatch .setitem (
171- sys .modules , "opentelemetry.instrumentation.grpc" , mock_otel_grpc
172- )
173-
174- result = _observability ._get_otel_interceptor (client_options = options , is_async = True )
175- assert result is mock_async_interceptors
176- mock_otel_grpc .aio_client_interceptors .assert_called_once_with (
177- tracer_provider = mock_tracer_provider
178- )
117+ assert _observability ._get_tracer_provider (options ) is mock_tracer_provider
179118
180119
181120def test_get_otel_interceptor_disabled (monkeypatch ):
121+ """Proves that get_otel_interceptor returns None when tracing is disabled."""
182122 monkeypatch .setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "false" )
183123 assert _observability .get_otel_interceptor () is None
184124
185125
186126def test_get_otel_interceptor_otel_missing (monkeypatch ):
127+ """Proves that get_otel_interceptor returns None when OpenTelemetry gRPC
128+ instrumentation is not installed.
129+ """
187130 monkeypatch .setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "true" )
188131 monkeypatch .setitem (sys .modules , "opentelemetry.instrumentation.grpc" , None )
189132 assert _observability .get_otel_interceptor () is None
190133
191134
192135def test_get_otel_interceptor_enabled (monkeypatch ):
136+ """Proves that get_otel_interceptor creates a synchronous OpenTelemetry client
137+ interceptor with the resolved tracer provider and returns a channel-intercepting callable.
138+ """
193139 monkeypatch .setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "true" )
194- mock_tracer_provider = object ()
140+ mock_tracer_provider = mock . Mock ()
195141 options = ClientOptions (tracer_provider = mock_tracer_provider )
196142
197143 mock_raw_channel = mock .Mock (name = "raw_channel" )
@@ -232,7 +178,7 @@ def test_get_otel_interceptor_with_apply_channel_interceptors(monkeypatch):
232178 from google .api_core import grpc_helpers
233179
234180 monkeypatch .setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "true" )
235- mock_tracer_provider = object ()
181+ mock_tracer_provider = mock . Mock ()
236182 options = ClientOptions (tracer_provider = mock_tracer_provider )
237183
238184 mock_raw_channel = mock .Mock (name = "raw_channel" )
@@ -266,19 +212,26 @@ def test_get_otel_interceptor_with_apply_channel_interceptors(monkeypatch):
266212
267213
268214def test_get_otel_async_interceptor_disabled (monkeypatch ):
215+ """Proves that get_otel_async_interceptor returns None when tracing is disabled."""
269216 monkeypatch .setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "false" )
270217 assert _observability .get_otel_async_interceptor () is None
271218
272219
273220def test_get_otel_async_interceptor_otel_missing (monkeypatch ):
221+ """Proves that get_otel_async_interceptor returns None when OpenTelemetry gRPC
222+ instrumentation is not installed.
223+ """
274224 monkeypatch .setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "true" )
275225 monkeypatch .setitem (sys .modules , "opentelemetry.instrumentation.grpc" , None )
276226 assert _observability .get_otel_async_interceptor () is None
277227
278228
279229def test_get_otel_async_interceptor_enabled (monkeypatch ):
230+ """Proves that get_otel_async_interceptor instantiates and returns asynchronous
231+ OpenTelemetry client interceptors with the resolved tracer provider.
232+ """
280233 monkeypatch .setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "true" )
281- mock_tracer_provider = object ()
234+ mock_tracer_provider = mock . Mock ()
282235 options = ClientOptions (tracer_provider = mock_tracer_provider )
283236
284237 mock_async_interceptors = [mock .Mock (name = "otel_async_interceptor" )]
0 commit comments