@@ -448,6 +448,45 @@ def test_sns_to_lambda_format(self):
448
448
assert result ["x-datadog-parent-id" ] == "222222222"
449
449
assert result ["dd-pathway-ctx" ] == "test-pathway-ctx"
450
450
451
+ def test_kinesis_to_lambda_format (self ):
452
+ """Test format: message.kinesis.data.decode()._datadog (Kinesis -> lambda)"""
453
+ trace_context = {
454
+ "x-datadog-trace-id" : "555444333" ,
455
+ "x-datadog-parent-id" : "888777666" ,
456
+ "dd-pathway-ctx" : "test-pathway-ctx" ,
457
+ }
458
+
459
+ # Create the kinesis data payload
460
+ kinesis_payload = {
461
+ "_datadog" : trace_context ,
462
+ "actualData" : "some business data" ,
463
+ }
464
+ encoded_kinesis_data = base64 .b64encode (
465
+ json .dumps (kinesis_payload ).encode ("utf-8" )
466
+ ).decode ("utf-8" )
467
+
468
+ kinesis_lambda_record = {
469
+ "eventSource" : "aws:kinesis" ,
470
+ "eventSourceARN" : (
471
+ "arn:aws:kinesis:us-east-1:123456789012:stream/my-stream"
472
+ ),
473
+ "kinesis" : {
474
+ "data" : encoded_kinesis_data ,
475
+ "partitionKey" : "partition-key-1" ,
476
+ "sequenceNumber" : (
477
+ "49590338271490256608559692538361571095921575989136588898"
478
+ ),
479
+ },
480
+ }
481
+
482
+ result = _get_dsm_context_from_lambda (kinesis_lambda_record )
483
+
484
+ assert result is not None
485
+ assert result == trace_context
486
+ assert result ["x-datadog-trace-id" ] == "555444333"
487
+ assert result ["x-datadog-parent-id" ] == "888777666"
488
+ assert result ["dd-pathway-ctx" ] == "test-pathway-ctx"
489
+
451
490
def test_no_message_attributes (self ):
452
491
"""Test message without MessageAttributes returns None."""
453
492
message = {
0 commit comments