@@ -2520,7 +2520,7 @@ def test_sqs_no_datadog_message_attribute(self, mock_dsm_set_checkpoint):
25202520 extract_context_from_sqs_or_sns_event_or_context (
25212521 event , self .lambda_context , parse_event_source (event )
25222522 )
2523-
2523+ # None indiciates no DSM context propagation
25242524 mock_dsm_set_checkpoint .assert_called_once_with (
25252525 None , "sqs" , "arn:aws:sqs:us-east-1:123456789012:test-queue"
25262526 )
@@ -2852,7 +2852,7 @@ def test_sns_invalid_datadog_message_attribute_raises_exception(
28522852 extract_context_from_sqs_or_sns_event_or_context (
28532853 event , self .lambda_context , parse_event_source (event )
28542854 )
2855-
2855+ # None indiciates no DSM context propagation
28562856 mock_dsm_set_checkpoint .assert_called_once_with (
28572857 None , "sns" , "arn:aws:sns:us-east-1:123456789012:test-topic"
28582858 )
@@ -2864,7 +2864,7 @@ def test_sns_source_arn_not_found(self, mock_dsm_set_checkpoint):
28642864 "Records" : [
28652865 {
28662866 "Sns" : {
2867- "TopicArn" : "" , # Empty ARN
2867+ "TopicArn" : "" ,
28682868 "MessageAttributes" : {},
28692869 },
28702870 "eventSource" : "aws:sns" ,
@@ -2910,7 +2910,6 @@ def test_sns_to_sqs_context_propagated_string_value(self, mock_dsm_set_checkpoin
29102910 {
29112911 "eventSourceARN" : "arn:aws:sqs:us-east-1:123456789012:test-queue" ,
29122912 "body" : json .dumps (sns_notification ),
2913- "messageAttributes" : {},
29142913 "eventSource" : "aws:sqs" ,
29152914 }
29162915 ]
@@ -2931,9 +2930,6 @@ def test_sns_to_sqs_context_propagated_binary_value(self, mock_dsm_set_checkpoin
29312930 dd_json_data = json .dumps (dd_data )
29322931 encoded_data = base64 .b64encode (dd_json_data .encode ()).decode ()
29332932
2934- dd_data = {"dd-pathway-ctx-base64" : "12345" }
2935- dd_json_data = json .dumps (dd_data )
2936-
29372933 sns_notification = {
29382934 "Type" : "Notification" ,
29392935 "TopicArn" : "arn:aws:sns:us-east-1:123456789012:test-topic" ,
@@ -2948,7 +2944,6 @@ def test_sns_to_sqs_context_propagated_binary_value(self, mock_dsm_set_checkpoin
29482944 {
29492945 "eventSourceARN" : "arn:aws:sqs:us-east-1:123456789012:test-queue" ,
29502946 "body" : json .dumps (sns_notification ),
2951- "messageAttributes" : {},
29522947 "eventSource" : "aws:sqs" ,
29532948 }
29542949 ]
@@ -2976,7 +2971,6 @@ def test_sns_to_sqs_no_datadog_message_attribute(self, mock_dsm_set_checkpoint):
29762971 {
29772972 "eventSourceARN" : "arn:aws:sqs:us-east-1:123456789012:test-queue" ,
29782973 "body" : json .dumps (sns_notification ),
2979- "messageAttributes" : {},
29802974 "eventSource" : "aws:sqs" ,
29812975 }
29822976 ]
@@ -2998,8 +2992,8 @@ def test_sns_to_sqs_incorrect_datadog_message_attribute(
29982992 "Type" : "Notification" ,
29992993 "TopicArn" : "arn:aws:sns:us-east-1:123456789012:test-topic" ,
30002994 "MessageAttributes" : {
3001- "_datadog" : {"Type" : "String" , "numberValue" : 123 }
3002- }, # Unsupported type
2995+ "_datadog" : {"Type" : "String" , "numberValue" : 123 } # Unsupported type
2996+ },
30032997 "Message" : "test message" ,
30042998 }
30052999
@@ -3008,7 +3002,6 @@ def test_sns_to_sqs_incorrect_datadog_message_attribute(
30083002 {
30093003 "eventSourceARN" : "arn:aws:sqs:us-east-1:123456789012:test-queue" ,
30103004 "body" : json .dumps (sns_notification ),
3011- "messageAttributes" : {},
30123005 "eventSource" : "aws:sqs" ,
30133006 }
30143007 ]
@@ -3041,7 +3034,6 @@ def test_sns_to_sqs_empty_datadog_message_attribute(self, mock_dsm_set_checkpoin
30413034 {
30423035 "eventSourceARN" : "arn:aws:sqs:us-east-1:123456789012:test-queue" ,
30433036 "body" : json .dumps (sns_notification ),
3044- "messageAttributes" : {},
30453037 "eventSource" : "aws:sqs" ,
30463038 }
30473039 ]
@@ -3061,13 +3053,22 @@ def test_sns_to_sqs_no_DSM_context_in_message_attribute(
30613053 ):
30623054 dd_data = {"NOT-DSM-KEY" : "12345" }
30633055 dd_json_data = json .dumps (dd_data )
3056+ encoded_data = base64 .b64encode (dd_json_data .encode ()).decode ()
3057+
3058+ sns_notification = {
3059+ "Type" : "Notification" ,
3060+ "TopicArn" : "arn:aws:sns:us-east-1:123456789012:test-topic" ,
3061+ "MessageAttributes" : {
3062+ "_datadog" : {"Type" : "Binary" , "Value" : encoded_data }
3063+ },
3064+ "Message" : "test message" ,
3065+ }
3066+
30643067 event = {
30653068 "Records" : [
30663069 {
30673070 "eventSourceARN" : "arn:aws:sqs:us-east-1:123456789012:test-queue" ,
3068- "messageAttributes" : {
3069- "_datadog" : {"dataType" : "String" , "stringValue" : dd_json_data }
3070- },
3071+ "body" : json .dumps (sns_notification ),
30713072 "eventSource" : "aws:sqs" ,
30723073 }
30733074 ]
@@ -3094,7 +3095,7 @@ def test_sns_to_sqs_invalid_datadog_message_attribute_raises_exception(
30943095 "Type" : "Notification" ,
30953096 "TopicArn" : "arn:aws:sns:us-east-1:123456789012:test-topic" ,
30963097 "MessageAttributes" : {
3097- "_datadog" : {"Type" : "Binary" , "Value" : "not-base64" } # invalid base64
3098+ "_datadog" : {"Type" : "Binary" , "Value" : "not-base64" }
30983099 },
30993100 "Message" : "test message" ,
31003101 }
@@ -3104,7 +3105,6 @@ def test_sns_to_sqs_invalid_datadog_message_attribute_raises_exception(
31043105 {
31053106 "eventSourceARN" : "arn:aws:sqs:us-east-1:123456789012:test-queue" ,
31063107 "body" : json .dumps (sns_notification ),
3107- "messageAttributes" : {},
31083108 "eventSource" : "aws:sqs" ,
31093109 }
31103110 ]
@@ -3159,7 +3159,6 @@ def test_sns_to_sqs_data_streams_disabled(self):
31593159
31603160 @patch ("datadog_lambda.tracing._dsm_set_checkpoint" )
31613161 def test_kinesis_context_propagated_binary_value (self , mock_dsm_set_checkpoint ):
3162- """Test Kinesis with valid datadog context"""
31633162 dd_data = {"dd-pathway-ctx-base64" : "12345" }
31643163 kinesis_data = {"_datadog" : dd_data , "message" : "test" }
31653164 kinesis_data_str = json .dumps (kinesis_data )
@@ -3203,6 +3202,50 @@ def test_kinesis_no_datadog_message_attribute(self, mock_dsm_set_checkpoint):
32033202 None , "kinesis" , "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream"
32043203 )
32053204
3205+ @patch ("datadog_lambda.tracing._dsm_set_checkpoint" )
3206+ def test_kinesis_incorrect_message_attribute (self , mock_dsm_set_checkpoint ):
3207+ event = {
3208+ "Records" : [
3209+ {
3210+ "eventSourceARN" : (
3211+ "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream"
3212+ ),
3213+ "kinesis" : {"not_data" : "test" }, # No "data" field
3214+ }
3215+ ]
3216+ }
3217+
3218+ extract_context_from_kinesis_event (event , self .lambda_context )
3219+ # None indicates no DSM context propagation due to missing data
3220+ mock_dsm_set_checkpoint .assert_called_once_with (
3221+ None ,
3222+ "kinesis" ,
3223+ "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" ,
3224+ )
3225+
3226+ @patch ("datadog_lambda.tracing._dsm_set_checkpoint" )
3227+ def test_kinesis_empty_message_attribute (self , mock_dsm_set_checkpoint ):
3228+ kinesis_data = {"_datadog" : None , "message" : "test" } # _datadog is None
3229+ kinesis_data_str = json .dumps (kinesis_data )
3230+ encoded_data = base64 .b64encode (kinesis_data_str .encode ()).decode ()
3231+
3232+ event = {
3233+ "Records" : [
3234+ {
3235+ "eventSourceARN" : "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" ,
3236+ "kinesis" : {"data" : encoded_data },
3237+ }
3238+ ]
3239+ }
3240+
3241+ extract_context_from_kinesis_event (event , self .lambda_context )
3242+ # None indicates no DSM context propagation due to missing data
3243+ mock_dsm_set_checkpoint .assert_called_once_with (
3244+ None ,
3245+ "kinesis" ,
3246+ "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" ,
3247+ )
3248+
32063249 @patch ("datadog_lambda.tracing._dsm_set_checkpoint" )
32073250 def test_kinesis_invalid_datadog_message_attribute_raises_exception (
32083251 self , mock_dsm_set_checkpoint
@@ -3211,7 +3254,7 @@ def test_kinesis_invalid_datadog_message_attribute_raises_exception(
32113254 "Records" : [
32123255 {
32133256 "eventSourceARN" : "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" ,
3214- "kinesis" : {"data" : "invalid-base64" }, # invalid base64
3257+ "kinesis" : {"data" : "invalid-base64" },
32153258 }
32163259 ]
32173260 }
@@ -3260,7 +3303,7 @@ def test_kinesis_source_arn_not_found(self, mock_dsm_set_checkpoint):
32603303 event = {
32613304 "Records" : [
32623305 {
3263- "eventSourceARN" : "" , # Empty ARN
3306+ "eventSourceARN" : "" ,
32643307 "kinesis" : {"data" : encoded_data },
32653308 }
32663309 ]
0 commit comments