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