Skip to content

Commit ef0835c

Browse files
authored
Merge branch 'main' into changes
2 parents bfa667f + a4f23f6 commit ef0835c

File tree

2 files changed

+47
-1
lines changed
  • libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core
  • tests/observability/core

2 files changed

+47
-1
lines changed

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/config.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
# Copyright (c) Microsoft Corporation.
22
# Licensed under the MIT License.
33

4+
import os
45
import logging
56
import threading
67
from collections.abc import Callable
78
from typing import Any, Optional
89

910
from opentelemetry import trace
11+
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
1012
from opentelemetry.sdk.resources import SERVICE_NAME, SERVICE_NAMESPACE, Resource
1113
from opentelemetry.sdk.trace import TracerProvider
1214
from opentelemetry.sdk.trace.export import ConsoleSpanExporter
@@ -161,10 +163,11 @@ def _configure_internal(
161163
use_s2s_endpoint=exporter_options.use_s2s_endpoint,
162164
suppress_invoke_agent_input=suppress_invoke_agent_input,
163165
)
166+
164167
else:
165168
exporter = ConsoleSpanExporter()
166169
self._logger.warning(
167-
"is_agent365_exporter_enabled() not enabled or token_resolver not set.Falling back to console exporter."
170+
"is_agent365_exporter_enabled() not enabled or token_resolver not set. Falling back to console exporter."
168171
)
169172

170173
# Add span processors
@@ -181,6 +184,13 @@ def _configure_internal(
181184
self._span_processors["batch"] = batch_processor
182185
self._span_processors["agent"] = agent_processor
183186

187+
if os.environ.get("ENABLE_OTLP_EXPORTER", "").lower() == "true":
188+
# The OTLPSpanExporter is auto configured from the environment variables
189+
otlp_exporter = OTLPSpanExporter()
190+
tracer_provider.add_span_processor(
191+
_EnrichingBatchSpanProcessor(otlp_exporter, **batch_processor_kwargs)
192+
)
193+
184194
# Configure logging if logger_name is provided
185195
if logger_name:
186196
target_logger = logging.getLogger(logger_name)

tests/observability/core/test_agent365.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,42 @@ def test_configure_uses_existing_tracer_provider(self, mock_get_provider, mock_i
201201
self.assertIn("_EnrichingBatchSpanProcessor", processor_types)
202202
self.assertIn("SpanProcessor", processor_types)
203203

204+
@patch("microsoft_agents_a365.observability.core.config.OTLPSpanExporter")
205+
@patch(
206+
"microsoft_agents_a365.observability.core.config.is_agent365_exporter_enabled",
207+
return_value=False,
208+
)
209+
@patch.dict("os.environ", {"ENABLE_OTLP_EXPORTER": "true"}, clear=True)
210+
def test_otlp_exporter_initialized_when_env_var_set(self, mock_is_enabled, mock_otlp_exporter):
211+
"""Test that OTLPSpanExporter is initialized when ENABLE_OTLP_EXPORTER is set."""
212+
213+
result = configure(
214+
service_name="test-service",
215+
service_namespace="test-namespace",
216+
)
217+
218+
self.assertTrue(result, "configure() should return True")
219+
mock_otlp_exporter.assert_called_once()
220+
221+
@patch("microsoft_agents_a365.observability.core.config.OTLPSpanExporter")
222+
@patch(
223+
"microsoft_agents_a365.observability.core.config.is_agent365_exporter_enabled",
224+
return_value=False,
225+
)
226+
@patch.dict("os.environ", {}, clear=True)
227+
def test_otlp_exporter_not_initialized_when_env_var_not_set(
228+
self, mock_is_enabled, mock_otlp_exporter
229+
):
230+
"""Test that OTLPSpanExporter is NOT initialized when ENABLE_OTLP_EXPORTER is not set."""
231+
232+
result = configure(
233+
service_name="test-service",
234+
service_namespace="test-namespace",
235+
)
236+
237+
self.assertTrue(result, "configure() should return True")
238+
mock_otlp_exporter.assert_not_called()
239+
204240

205241
if __name__ == "__main__":
206242
unittest.main()

0 commit comments

Comments
 (0)