Skip to content

Commit

Permalink
Set / Override OpenTelemetry Subscriber settings based on Python Version
Browse files Browse the repository at this point in the history
  • Loading branch information
mukund-ananthu committed Sep 16, 2024
1 parent 5fd1de4 commit b18e556
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 9 deletions.
18 changes: 18 additions & 0 deletions google/cloud/pubsub_v1/subscriber/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

from __future__ import absolute_import

import sys
import os
import typing
from typing import cast, Any, Callable, Optional, Sequence, Union
Expand Down Expand Up @@ -93,6 +94,23 @@ def __init__(

self.subscriber_options = types.SubscriberOptions(*subscriber_options)

# Set / override Open Telemetry option.
self._open_telemetry_enabled = (
self.subscriber_options.enable_open_telemetry_tracing
)
# OpenTelemetry features used by the library are not supported in Python versions <= 3.7.
# Refer https://github.com/open-telemetry/opentelemetry-python/issues/3993#issuecomment-2211976389
if (
self.subscriber_options.enable_open_telemetry_tracing
and sys.version_info.major == 3
and sys.version_info.minor < 8
):
warnings.warn(
message="Open Telemetry for Python version 3.7 or lower is not supported. Disabling Open Telemetry tracing.",
category=RuntimeWarning,
)
self._open_telemetry_enabled = False

@classmethod
def from_service_account_file( # type: ignore[override]
cls, filename: str, **kwargs: Any
Expand Down
23 changes: 14 additions & 9 deletions tests/unit/pubsub_v1/subscriber/test_subscriber_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -320,19 +320,24 @@ async def test_sync_pull_warning_if_return_immediately_async(creds):


@pytest.mark.parametrize(
"enable_open_telemetry_tracing",
"enable_open_telemetry",
[
True,
False,
],
)
def test_subscriber_settings(creds, enable_open_telemetry_tracing):
def test_opentelemetry_subscriber_setting(creds, enable_open_telemetry):
options = types.SubscriberOptions(
enable_open_telemetry_tracing=enable_open_telemetry_tracing
)
client = subscriber.Client(subscriber_options=options, credentials=creds)

assert (
client.subscriber_options.enable_open_telemetry_tracing
== enable_open_telemetry_tracing
enable_open_telemetry_tracing=enable_open_telemetry,
)
if sys.version_info >= (3, 8) or enable_open_telemetry is False:
client = subscriber.Client(credentials=creds, subscriber_options=options)
assert client.subscriber_options == options
assert client._open_telemetry_enabled == enable_open_telemetry
else:
with pytest.warns(
RuntimeWarning,
match="Open Telemetry for Python version 3.7 or lower is not supported. Disabling Open Telemetry tracing.",
):
client = subscriber.Client(credentials=creds, subscriber_options=options)
assert client._open_telemetry_enabled is False

0 comments on commit b18e556

Please sign in to comment.