@@ -386,6 +386,45 @@ def test_sns_to_lambda_format(self):
386386 assert result ["x-datadog-parent-id" ] == "222222222"
387387 assert result ["dd-pathway-ctx" ] == "test-pathway-ctx"
388388
389+ def test_kinesis_to_lambda_format (self ):
390+ """Test format: message.kinesis.data.decode()._datadog (Kinesis -> lambda)"""
391+ trace_context = {
392+ "x-datadog-trace-id" : "555444333" ,
393+ "x-datadog-parent-id" : "888777666" ,
394+ "dd-pathway-ctx" : "test-pathway-ctx" ,
395+ }
396+
397+ # Create the kinesis data payload
398+ kinesis_payload = {
399+ "_datadog" : trace_context ,
400+ "actualData" : "some business data" ,
401+ }
402+ encoded_kinesis_data = base64 .b64encode (
403+ json .dumps (kinesis_payload ).encode ("utf-8" )
404+ ).decode ("utf-8" )
405+
406+ kinesis_lambda_record = {
407+ "eventSource" : "aws:kinesis" ,
408+ "eventSourceARN" : (
409+ "arn:aws:kinesis:us-east-1:123456789012:stream/my-stream"
410+ ),
411+ "kinesis" : {
412+ "data" : encoded_kinesis_data ,
413+ "partitionKey" : "partition-key-1" ,
414+ "sequenceNumber" : (
415+ "49590338271490256608559692538361571095921575989136588898"
416+ ),
417+ },
418+ }
419+
420+ result = _get_dsm_context_from_lambda (kinesis_lambda_record )
421+
422+ assert result is not None
423+ assert result == trace_context
424+ assert result ["x-datadog-trace-id" ] == "555444333"
425+ assert result ["x-datadog-parent-id" ] == "888777666"
426+ assert result ["dd-pathway-ctx" ] == "test-pathway-ctx"
427+
389428 def test_no_message_attributes (self ):
390429 """Test message without MessageAttributes returns None."""
391430 message = {
0 commit comments