@@ -3651,19 +3651,23 @@ def test_kinesis_data_streams_disabled(self):
36513651 # EVENTBRIDGE -> SQS TESTS
36523652
36533653 @staticmethod
3654- def _eventbridge_sqs_record (queue_arn , pathway_ctx ):
3655- body = {
3656- "detail-type" : "MyDetailType" ,
3657- "source" : "my.event.source" ,
3658- "detail" : {
3659- "_datadog" : {
3654+ def _eventbridge_sqs_record (queue_arn , pathway_ctx , include_trace_headers = True ):
3655+ dd_context = {"dd-pathway-ctx-base64" : pathway_ctx }
3656+ if include_trace_headers :
3657+ dd_context .update (
3658+ {
36603659 # Complete trace context so the extractor returns early and
36613660 # does not fall through to the regular SQS path.
36623661 "x-datadog-trace-id" : "12345" ,
36633662 "x-datadog-parent-id" : "67890" ,
36643663 "x-datadog-sampling-priority" : "1" ,
3665- "dd-pathway-ctx-base64" : pathway_ctx ,
36663664 }
3665+ )
3666+ body = {
3667+ "detail-type" : "MyDetailType" ,
3668+ "source" : "my.event.source" ,
3669+ "detail" : {
3670+ "_datadog" : dd_context
36673671 },
36683672 }
36693673 return {
@@ -3710,6 +3714,35 @@ def test_eventbridge_sqs_checkpoints_all_records(self):
37103714 self .assertEqual ((second_args [0 ], second_args [1 ]), ("sqs" , arn2 ))
37113715 self .assertEqual (second_args [2 ]("dd-pathway-ctx-base64" ), "ctx-2" )
37123716
3717+ @patch (
3718+ "datadog_lambda.tracing.extract_context_from_lambda_context" ,
3719+ return_value = Context (trace_id = 111 , span_id = 222 , sampling_priority = 1 ),
3720+ )
3721+ def test_eventbridge_sqs_incomplete_context_uses_single_checkpoint (
3722+ self , mock_extract_context
3723+ ):
3724+ queue_arn = "arn:aws:sqs:us-east-1:123456789012:eb-queue"
3725+ event = {
3726+ "Records" : [
3727+ self ._eventbridge_sqs_record (
3728+ queue_arn , "ctx-only" , include_trace_headers = False
3729+ )
3730+ ]
3731+ }
3732+
3733+ context = extract_context_from_sqs_or_sns_event_or_context (
3734+ event , self .lambda_context , parse_event_source (event )
3735+ )
3736+
3737+ self .assertEqual (context .trace_id , 111 )
3738+ self .assertEqual (context .span_id , 222 )
3739+ mock_extract_context .assert_called_once_with (self .lambda_context )
3740+ self .assertEqual (self .mock_checkpoint .call_count , 1 )
3741+ args , _ = self .mock_checkpoint .call_args
3742+ self .assertEqual (args [0 ], "sqs" )
3743+ self .assertEqual (args [1 ], queue_arn )
3744+ self .assertEqual (args [2 ]("dd-pathway-ctx-base64" ), "ctx-only" )
3745+
37133746 @patch ("datadog_lambda.config.Config.data_streams_enabled" , False )
37143747 def test_eventbridge_sqs_data_streams_disabled (self ):
37153748 queue_arn = "arn:aws:sqs:us-east-1:123456789012:eb-queue"
@@ -3726,12 +3759,12 @@ class TestEventBridgeDSMLogic(unittest.TestCase):
37263759 def setUp (self ):
37273760 self .lambda_context = get_mock_context ()
37283761 self .mock_processor = Mock ()
3729- processor_patcher = patch (
3730- "ddtrace.internal.datastreams.data_streams_processor " ,
3731- return_value = self .mock_processor ,
3762+ tracer_patcher = patch (
3763+ "ddtrace.data_streams.ddtrace.tracer " ,
3764+ new = SimpleNamespace ( data_streams_processor = self .mock_processor ) ,
37323765 )
3733- processor_patcher .start ()
3734- self .addCleanup (processor_patcher .stop )
3766+ tracer_patcher .start ()
3767+ self .addCleanup (tracer_patcher .stop )
37353768 config_patcher = patch (
37363769 "datadog_lambda.config.Config.data_streams_enabled" , True
37373770 )
0 commit comments