|
9 | 9 | import datadog_lambda.wrapper as wrapper
|
10 | 10 | from datadog_lambda.metric import lambda_metric
|
11 | 11 | from datadog_lambda.thread_stats_writer import ThreadStatsWriter
|
12 |
| -from ddtrace import Span |
| 12 | +from ddtrace import Span, tracer |
13 | 13 |
|
14 | 14 |
|
15 | 15 | def get_mock_context(
|
@@ -580,3 +580,38 @@ def test_some_envs_should_depend_on_dd_tracing_enabled(self):
|
580 | 580 | self.assertFalse(decorator.make_inferred_span)
|
581 | 581 | self.assertFalse(decorator.encode_authorizer_context)
|
582 | 582 | self.assertFalse(decorator.decode_authorizer_context)
|
| 583 | + |
| 584 | +class TestLambdaWrapperWithTraceContext(unittest.TestCase): |
| 585 | + xray_daemon_envvar = "localhost:1234" |
| 586 | + xray_trace_envvar = ( |
| 587 | + "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0" |
| 588 | + ) |
| 589 | + |
| 590 | + @patch("os.environ", { |
| 591 | + "AWS_XRAY_DAEMON_ADDRESS": xray_daemon_envvar, |
| 592 | + "_X_AMZN_TRACE_ID": xray_trace_envvar, |
| 593 | + }) |
| 594 | + def test_event_bridge_sqs_payload(self): |
| 595 | + wrapper.dd_tracing_enabled = True |
| 596 | + |
| 597 | + def handler(event, context): |
| 598 | + return tracer.current_trace_context() |
| 599 | + |
| 600 | + wrapped_handler = wrapper.datadog_lambda_wrapper(handler) |
| 601 | + |
| 602 | + trace_id = "2a4abb4251b6ec1d" |
| 603 | + event = { |
| 604 | + "headers": { |
| 605 | + "traceparent": f"00-0000000000000000{trace_id}-74d86a8e4b55daf4-01", |
| 606 | + "tracestate": "dd=s:1;t.dm:-1", |
| 607 | + }, |
| 608 | + } |
| 609 | + context = get_mock_context() |
| 610 | + |
| 611 | + result = wrapped_handler(event, context) |
| 612 | + aws_lambda_span = wrapped_handler.span |
| 613 | + |
| 614 | + self.assertIsNotNone(result) |
| 615 | + self.assertEqual(result.trace_id, int(trace_id, 16)) |
| 616 | + self.assertEqual(result.span_id, aws_lambda_span.span_id) |
| 617 | + self.assertEqual(result.sampling_priority, 1) |
0 commit comments