Skip to content

Commit 3bbdb88

Browse files
add some more kinesis tests
1 parent 6625dfc commit 3bbdb88

File tree

1 file changed

+64
-21
lines changed

1 file changed

+64
-21
lines changed

tests/test_tracing.py

Lines changed: 64 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)