Skip to content

Commit f7eaa2c

Browse files
committed
Add additional test for session.id filtering validation
1 parent f3ebe2e commit f7eaa2c

File tree

3 files changed

+47
-2
lines changed

3 files changed

+47
-2
lines changed

aws-opentelemetry-distro/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ classifiers = [
2626
dependencies = [
2727
"opentelemetry-api == 1.27.0",
2828
"opentelemetry-sdk == 1.27.0",
29-
"opentelemetry-processor-baggage == 0.48b0",
3029
"opentelemetry-exporter-otlp-proto-grpc == 1.27.0",
3130
"opentelemetry-exporter-otlp-proto-http == 1.27.0",
3231
"opentelemetry-propagator-b3 == 1.27.0",
@@ -35,6 +34,7 @@ dependencies = [
3534
"opentelemetry-sdk-extension-aws == 2.0.2",
3635
"opentelemetry-propagator-aws-xray == 1.0.1",
3736
"opentelemetry-distro == 0.48b0",
37+
"opentelemetry-processor-baggage == 0.48b0",
3838
"opentelemetry-propagator-ot-trace == 0.48b0",
3939
"opentelemetry-instrumentation == 0.48b0",
4040
"opentelemetry-instrumentation-aws-lambda == 0.48b0",

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/aws_opentelemetry_configurator.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,9 +411,10 @@ def _customize_span_processors(provider: TracerProvider, resource: Resource) ->
411411
# Add session.id baggage attribute to span attributes to support AI Agent use cases
412412
# enabling session ID tracking in spans.
413413
if is_agent_observability_enabled():
414+
414415
def session_id_predicate(baggage_key: str) -> bool:
415416
return baggage_key == "session.id"
416-
417+
417418
provider.add_span_processor(BaggageSpanProcessor(session_id_predicate))
418419

419420
if not _is_application_signals_enabled():

aws-opentelemetry-distro/tests/amazon/opentelemetry/distro/test_aws_opentelementry_configurator.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,50 @@ def test_customize_span_processors_with_agent_observability(self):
364364
# Clean up
365365
os.environ.pop("AGENT_OBSERVABILITY_ENABLED", None)
366366

367+
def test_baggage_span_processor_session_id_filtering(self):
368+
"""Test that BaggageSpanProcessor only set session.id filter by default"""
369+
370+
# Set up agent observability
371+
os.environ["AGENT_OBSERVABILITY_ENABLED"] = "true"
372+
373+
# Create a new tracer provider for this test
374+
tracer_provider = TracerProvider()
375+
376+
# Add our span processors
377+
_customize_span_processors(tracer_provider, Resource.get_empty())
378+
379+
# Verify that the BaggageSpanProcessor was added
380+
# The _active_span_processor is a composite processor containing all processors
381+
active_processor = tracer_provider._active_span_processor
382+
383+
# Check if it's a composite processor with multiple processors
384+
if hasattr(active_processor, "_span_processors"):
385+
processors = active_processor._span_processors
386+
else:
387+
# If it's a single processor, wrap it in a list
388+
processors = [active_processor]
389+
390+
baggage_processors = [
391+
processor for processor in processors if processor.__class__.__name__ == "BaggageSpanProcessor"
392+
]
393+
self.assertEqual(len(baggage_processors), 1)
394+
395+
# Verify the predicate function only accepts session.id
396+
baggage_processor = baggage_processors[0]
397+
predicate = baggage_processor._baggage_key_predicate
398+
399+
# Test the predicate function directly
400+
self.assertTrue(predicate("session.id"))
401+
self.assertFalse(predicate("user.id"))
402+
self.assertFalse(predicate("request.id"))
403+
self.assertFalse(predicate("other.key"))
404+
self.assertFalse(predicate(""))
405+
self.assertFalse(predicate("session"))
406+
self.assertFalse(predicate("id"))
407+
408+
# Clean up
409+
os.environ.pop("AGENT_OBSERVABILITY_ENABLED", None)
410+
367411
def test_customize_span_exporter_sigv4(self):
368412

369413
traces_good_endpoints = [

0 commit comments

Comments
 (0)