@@ -209,3 +209,66 @@ def test_export_with_llo_processing_failure(
209209 result = exporter .export (spans )
210210
211211 self .assertEqual (result , SpanExportResult .FAILURE )
212+
213+ @patch (
214+ "amazon.opentelemetry.distro.exporter.otlp.aws.traces.otlp_aws_span_exporter."
215+ "is_genai_content_extraction_opted_out"
216+ )
217+ @patch ("amazon.opentelemetry.distro.exporter.otlp.aws.traces.otlp_aws_span_exporter.is_agent_observability_enabled" )
218+ @patch ("amazon.opentelemetry.distro.exporter.otlp.aws.traces.otlp_aws_span_exporter.get_logger_provider" )
219+ @patch ("amazon.opentelemetry.distro.exporter.otlp.aws.traces.otlp_aws_span_exporter.LLOHandler" )
220+ def test_export_skips_llo_when_content_extraction_opted_out (
221+ self , mock_llo_handler_class , mock_get_logger_provider , mock_is_enabled , mock_opted_out
222+ ):
223+ mock_is_enabled .return_value = True
224+ mock_opted_out .return_value = True
225+ mock_logger_provider = MagicMock (spec = LoggerProvider )
226+ mock_get_logger_provider .return_value = mock_logger_provider
227+
228+ endpoint = "https://xray.us-east-1.amazonaws.com/v1/traces"
229+ exporter = OTLPAwsSpanExporter (session = get_aws_session (), aws_region = "us-east-1" , endpoint = endpoint )
230+
231+ original_spans = [MagicMock (spec = ReadableSpan )]
232+
233+ with patch .object (OTLPSpanExporter , "export" ) as mock_parent_export :
234+ mock_parent_export .return_value = SpanExportResult .SUCCESS
235+
236+ result = exporter .export (original_spans )
237+
238+ self .assertEqual (result , SpanExportResult .SUCCESS )
239+ mock_parent_export .assert_called_once_with (original_spans )
240+ mock_llo_handler_class .assert_not_called ()
241+
242+ @patch (
243+ "amazon.opentelemetry.distro.exporter.otlp.aws.traces.otlp_aws_span_exporter."
244+ "is_genai_content_extraction_opted_out"
245+ )
246+ @patch ("amazon.opentelemetry.distro.exporter.otlp.aws.traces.otlp_aws_span_exporter.is_agent_observability_enabled" )
247+ @patch ("amazon.opentelemetry.distro.exporter.otlp.aws.traces.otlp_aws_span_exporter.get_logger_provider" )
248+ @patch ("amazon.opentelemetry.distro.exporter.otlp.aws.traces.otlp_aws_span_exporter.LLOHandler" )
249+ def test_export_processes_llo_when_content_extraction_not_opted_out (
250+ self , mock_llo_handler_class , mock_get_logger_provider , mock_is_enabled , mock_opted_out
251+ ):
252+ mock_is_enabled .return_value = True
253+ mock_opted_out .return_value = False
254+ mock_logger_provider = MagicMock (spec = LoggerProvider )
255+ mock_get_logger_provider .return_value = mock_logger_provider
256+
257+ mock_llo_handler = MagicMock ()
258+ mock_llo_handler_class .return_value = mock_llo_handler
259+
260+ endpoint = "https://xray.us-east-1.amazonaws.com/v1/traces"
261+ exporter = OTLPAwsSpanExporter (session = get_aws_session (), aws_region = "us-east-1" , endpoint = endpoint )
262+
263+ original_spans = [MagicMock (spec = ReadableSpan )]
264+ processed_spans = [MagicMock (spec = ReadableSpan )]
265+ mock_llo_handler .process_spans .return_value = processed_spans
266+
267+ with patch .object (OTLPSpanExporter , "export" ) as mock_parent_export :
268+ mock_parent_export .return_value = SpanExportResult .SUCCESS
269+
270+ result = exporter .export (original_spans )
271+
272+ self .assertEqual (result , SpanExportResult .SUCCESS )
273+ mock_llo_handler .process_spans .assert_called_once_with (original_spans )
274+ mock_parent_export .assert_called_once_with (processed_spans )
0 commit comments