@@ -2815,6 +2815,43 @@ def test_sqs_no_datadog_message_attribute(self):
28152815 # None indicates no DSM context propagation
28162816 self .assertEqual (carrier_get ("dd-pathway-ctx-base64" ), None )
28172817
2818+ @patch ("datadog_lambda.tracing.extract_context_from_lambda_context" )
2819+ def test_sqs_detail_body_still_uses_message_attributes (self , mock_extract_context ):
2820+ dd_data = {
2821+ "x-datadog-trace-id" : "12345" ,
2822+ "x-datadog-parent-id" : "67890" ,
2823+ "x-datadog-sampling-priority" : "1" ,
2824+ "dd-pathway-ctx-base64" : "attr-ctx" ,
2825+ }
2826+ dd_json_data = json .dumps (dd_data )
2827+
2828+ event = {
2829+ "Records" : [
2830+ {
2831+ "eventSourceARN" : "arn:aws:sqs:us-east-1:123456789012:test-queue" ,
2832+ "messageAttributes" : {
2833+ "_datadog" : {"dataType" : "String" , "stringValue" : dd_json_data }
2834+ },
2835+ "eventSource" : "aws:sqs" ,
2836+ "body" : json .dumps ({"detail" : {"application" : "payload" }}),
2837+ }
2838+ ]
2839+ }
2840+
2841+ context = extract_context_from_sqs_or_sns_event_or_context (
2842+ event , self .lambda_context , parse_event_source (event )
2843+ )
2844+
2845+ mock_extract_context .assert_not_called ()
2846+ self .assertEqual (context .trace_id , 12345 )
2847+ self .assertEqual (context .span_id , 67890 )
2848+ self .assertEqual (context .sampling_priority , 1 )
2849+ self .assertEqual (self .mock_checkpoint .call_count , 1 )
2850+ args , _ = self .mock_checkpoint .call_args
2851+ self .assertEqual (args [0 ], "sqs" )
2852+ self .assertEqual (args [1 ], "arn:aws:sqs:us-east-1:123456789012:test-queue" )
2853+ self .assertEqual (args [2 ]("dd-pathway-ctx-base64" ), "attr-ctx" )
2854+
28182855 def test_sqs_empty_datadog_message_attribute (self ):
28192856 event = {
28202857 "Records" : [
0 commit comments