@@ -448,6 +448,45 @@ def test_sns_to_lambda_format(self):
448448 assert result ["x-datadog-parent-id" ] == "222222222"
449449 assert result ["dd-pathway-ctx" ] == "test-pathway-ctx"
450450
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+
451490 def test_no_message_attributes (self ):
452491 """Test message without MessageAttributes returns None."""
453492 message = {
0 commit comments