Skip to content

Commit 6f8aef4

Browse files
add tests an d comments
1 parent 32bf13b commit 6f8aef4

File tree

3 files changed

+33
-7
lines changed

3 files changed

+33
-7
lines changed

datadog_lambda/tracing.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context):
220220
try:
221221
context = _extract_context_from_eventbridge_sqs_event(event)
222222
if _is_context_complete(context):
223+
# Unsupported DSM context propagation method
223224
return context, None
224225
except Exception:
225226
logger.debug("Failed extracting context as EventBridge to SQS.")
@@ -299,6 +300,7 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context):
299300
span_id=int(x_ray_context["parent_id"], 16),
300301
sampling_priority=float(x_ray_context["sampled"]),
301302
),
303+
# Unsupported DSM context propagation method
302304
None,
303305
)
304306
# return a empty dict so dsm checkpoint can be set even if no context is found

datadog_lambda/wrapper.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -392,10 +392,9 @@ def extract_source_arn(event):
392392

393393

394394
def _create_dsm_carrier_func(dd_data):
395-
# {}.get(key) returns None, allowing DSM checkpoint to be set even if context is missing
396-
# None.get(key) errors, preventing checkpoint for unsupported dsm context propagation methods
397-
398395
def carrier_get(key):
396+
# {}.get(key) returns None, DSM checkpoint can be set even if DSM context extraction fails
397+
# None.get(key) errors, preventing checkpoint for unsupported dsm context propagation method
399398
return dd_data.get(key)
400399

401400
return carrier_get

tests/test_wrapper.py

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@
77
from datadog_lambda.constants import TraceHeader
88

99
import datadog_lambda.wrapper as wrapper
10-
import datadog_lambda.xray as xray
1110

12-
from datadog_lambda.config import config
1311
from datadog_lambda.metric import lambda_metric
1412
from datadog_lambda.thread_stats_writer import ThreadStatsWriter
1513
from datadog_lambda.trigger import EventTypes
16-
from ddtrace.trace import Span, tracer
14+
from ddtrace.trace import tracer
1715
from ddtrace.internal.constants import MAX_UINT_64BITS
1816

1917
from tests.utils import get_mock_context, reset_xray_connection
@@ -285,7 +283,9 @@ def lambda_handler(event, context):
285283
def test_5xx_sends_errors_metric_and_set_tags(self, mock_extract_trigger_tags):
286284
mock_extract_trigger_tags.return_value = {
287285
"function_trigger.event_source": "api-gateway",
288-
"function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/1234567890/stages/prod",
286+
"function_trigger.event_source_arn": (
287+
"arn:aws:apigateway:us-west-1::/restapis/1234567890/stages/prod"
288+
),
289289
"http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com",
290290
"http.url_details.path": "/prod/path/to/resource",
291291
"http.method": "GET",
@@ -1015,3 +1015,28 @@ def test_extract_source_arn_sns_to_sqs_event(self):
10151015
self.assertEqual(
10161016
result, "arn:aws:sqs:us-east-1:123456789012:test-queue-from-sns"
10171017
)
1018+
1019+
1020+
class TestCreateDsmCarrierFunc(unittest.TestCase):
1021+
def test_carrier_with_data(self):
1022+
"""Test that the carrier function works with a dict-like object."""
1023+
mock_dd_data = Mock()
1024+
mock_dd_data.get.return_value = "mock_value"
1025+
1026+
carrier = wrapper._create_dsm_carrier_func(mock_dd_data)
1027+
self.assertTrue(callable(carrier))
1028+
self.assertEqual(carrier("some_key"), "mock_value")
1029+
mock_dd_data.get.assert_called_once_with("some_key")
1030+
1031+
def test_carrier_with_empty_dict(self):
1032+
"""Test that the carrier function works with an empty dictionary."""
1033+
carrier = wrapper._create_dsm_carrier_func({})
1034+
self.assertTrue(callable(carrier))
1035+
self.assertIsNone(carrier("some_key"))
1036+
1037+
def test_carrier_with_none(self):
1038+
"""Test that the carrier function fails correctly when given None."""
1039+
carrier = wrapper._create_dsm_carrier_func(None)
1040+
self.assertTrue(callable(carrier))
1041+
with self.assertRaises(AttributeError):
1042+
carrier("some_key")

0 commit comments

Comments
 (0)