Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions redis/observability/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
"""
OpenTelemetry observability module for redis-py.

This module provides APIs for collecting and exporting Redis metrics using OpenTelemetry.

Usage:
from redis.observability import get_observability_instance, OTelConfig

otel = get_observability_instance()
otel.init(OTelConfig())
"""

from redis.observability.config import MetricGroup, OTelConfig, TelemetryOption
from redis.observability.providers import (
ObservabilityInstance,
get_observability_instance,
reset_observability_instance,
)

__all__ = [
"OTelConfig",
"MetricGroup",
"TelemetryOption",
"ObservabilityInstance",
"get_observability_instance",
"reset_observability_instance",
]
Comment thread
petyaslavova marked this conversation as resolved.
83 changes: 83 additions & 0 deletions tests/test_observability/test_public_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
"""
Unit tests for redis.observability public API exports.

These tests verify that all symbols exported from redis.observability
are correctly re-exported and match the original implementations.
"""


class TestPublicAPIExports:
"""Tests for public API exports from redis.observability."""

def test_otel_config_reexport(self):
"""Test that OTelConfig is correctly re-exported."""
from redis.observability import OTelConfig
from redis.observability.config import OTelConfig as OriginalOTelConfig

assert OTelConfig is OriginalOTelConfig

def test_metric_group_reexport(self):
"""Test that MetricGroup is correctly re-exported."""
from redis.observability import MetricGroup
from redis.observability.config import MetricGroup as OriginalMetricGroup

assert MetricGroup is OriginalMetricGroup

def test_telemetry_option_reexport(self):
"""Test that TelemetryOption is correctly re-exported."""
from redis.observability import TelemetryOption
from redis.observability.config import (
TelemetryOption as OriginalTelemetryOption,
)

assert TelemetryOption is OriginalTelemetryOption

def test_observability_instance_reexport(self):
"""Test that ObservabilityInstance is correctly re-exported."""
from redis.observability import ObservabilityInstance
from redis.observability.providers import (
ObservabilityInstance as OriginalObservabilityInstance,
)

assert ObservabilityInstance is OriginalObservabilityInstance

def test_get_observability_instance_reexport(self):
"""Test that get_observability_instance is correctly re-exported."""
from redis.observability import get_observability_instance
from redis.observability.providers import (
get_observability_instance as original_get_observability_instance,
)

assert get_observability_instance is original_get_observability_instance

def test_reset_observability_instance_reexport(self):
"""Test that reset_observability_instance is correctly re-exported."""
from redis.observability import reset_observability_instance
from redis.observability.providers import (
reset_observability_instance as original_reset_observability_instance,
)

assert reset_observability_instance is original_reset_observability_instance

def test_all_exports_defined(self):
"""Test that __all__ contains all expected exports."""
import redis.observability as obs

expected_exports = {
"OTelConfig",
"MetricGroup",
"TelemetryOption",
"ObservabilityInstance",
"get_observability_instance",
"reset_observability_instance",
}

assert set(obs.__all__) == expected_exports

def test_all_exports_are_accessible(self):
"""Test that all items in __all__ are actually accessible."""
import redis.observability as obs

for name in obs.__all__:
assert hasattr(obs, name), f"{name} is in __all__ but not accessible"
assert getattr(obs, name) is not None, f"{name} is None"
Loading