Skip to content

Commit ba3bff6

Browse files
test(otel): add regression tests for "none" exporter handling
Covers get_settings() filtering, provider None returns, and the wrap_in_fastapi no-crash regression for OTEL_TRACES_EXPORTER=none and OTEL_METRICS_EXPORTER=none.
1 parent f720b9c commit ba3bff6

1 file changed

Lines changed: 70 additions & 0 deletions

File tree

test/test_otel.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import pytest
2+
from opentelemetry.environment_variables import OTEL_METRICS_EXPORTER, OTEL_TRACES_EXPORTER
3+
from opentelemetry.sdk.metrics import MeterProvider
4+
from opentelemetry.sdk.trace import TracerProvider
5+
6+
from unstructured_platform_plugins.etl_uvicorn.otel import (
7+
get_metric_provider,
8+
get_settings,
9+
get_trace_provider,
10+
)
11+
12+
13+
def test_get_settings_filters_none_from_traces(monkeypatch):
14+
monkeypatch.setenv(OTEL_TRACES_EXPORTER, "none")
15+
settings = get_settings()
16+
assert settings["trace_exporters"] == []
17+
18+
19+
def test_get_settings_filters_none_from_metrics(monkeypatch):
20+
monkeypatch.setenv(OTEL_METRICS_EXPORTER, "none")
21+
settings = get_settings()
22+
assert settings["metric_exporters"] == []
23+
24+
25+
def test_get_settings_filters_none_from_combined_trace_exporters(monkeypatch):
26+
monkeypatch.setenv(OTEL_TRACES_EXPORTER, "none,console")
27+
settings = get_settings()
28+
assert settings["trace_exporters"] == ["console"]
29+
30+
31+
def test_get_settings_filters_none_from_combined_metric_exporters(monkeypatch):
32+
monkeypatch.setenv(OTEL_METRICS_EXPORTER, "none,console")
33+
settings = get_settings()
34+
assert settings["metric_exporters"] == ["console"]
35+
36+
37+
def test_get_trace_provider_returns_none_when_exporter_is_none(monkeypatch):
38+
monkeypatch.setenv(OTEL_TRACES_EXPORTER, "none")
39+
assert get_trace_provider() is None
40+
41+
42+
def test_get_metric_provider_returns_none_when_exporter_is_none(monkeypatch):
43+
monkeypatch.setenv(OTEL_METRICS_EXPORTER, "none")
44+
assert get_metric_provider() is None
45+
46+
47+
def test_get_trace_provider_returns_provider_when_exporter_set(monkeypatch):
48+
monkeypatch.setenv(OTEL_TRACES_EXPORTER, "console")
49+
provider = get_trace_provider()
50+
assert isinstance(provider, TracerProvider)
51+
52+
53+
def test_get_metric_provider_returns_provider_when_exporter_set(monkeypatch):
54+
monkeypatch.setenv(OTEL_METRICS_EXPORTER, "console")
55+
provider = get_metric_provider()
56+
assert isinstance(provider, MeterProvider)
57+
58+
59+
def test_wrap_in_fastapi_does_not_crash_with_none_otel_exporters(monkeypatch):
60+
"""Regression: previously crashed with NotImplementedError when none was set."""
61+
monkeypatch.setenv(OTEL_TRACES_EXPORTER, "none")
62+
monkeypatch.setenv(OTEL_METRICS_EXPORTER, "none")
63+
64+
from test.assets.async_typed_dict_response import async_sample_function
65+
66+
from unstructured_platform_plugins.etl_uvicorn.api_generator import wrap_in_fastapi
67+
68+
# Should not raise NotImplementedError
69+
app = wrap_in_fastapi(func=async_sample_function, plugin_id="test_plugin")
70+
assert app is not None

0 commit comments

Comments
 (0)