8000 Test parenting for lazy loaded package. · DataDog/datadog-lambda-python@a60841b · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit a60841b

Browse files
committed
Test parenting for lazy loaded package.
1 parent 85f3abe commit a60841b

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

tests/test_cold_start.py

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
import os
12
import time
23
import unittest
3-
import datadog_lambda.cold_start as cold_start
4+
45
from sys import modules, meta_path
5-
import os
66
from unittest.mock import MagicMock
77

8+
import datadog_lambda.cold_start as cold_start
9+
import datadog_lambda.wrapper as wrapper
10+
811

912
class TestColdStartTracingSetup(unittest.TestCase):
1013
def test_proactive_init(self):
@@ -234,3 +237,44 @@ def test_trace_ignore_libs(self):
234237
self.cold_start_tracer.trace(nodes)
235238
self.mock_activate.assert_called_once_with(self.mock_trace_ctx)
236239
self.assertEqual(self.output_spans, ["node_0", "unittest_cold_start"])
240+
241+
def test_lazy_loaded_package_imports(monkeypatch):
242+
243+
spans = []
244+
245+
def finish(span):
246+
spans.append(span)
247+
248+
monkeypatch.setattr(wrapper.tracer, "_on_span_finish", finish)
249+
monkeypatch.setattr(wrapper, "is_new_sandbox", lambda: True)
250+
monkeypatch.setattr("datadog_lambda.wrapper.dd_tracing_enabled", True)
251+
monkeypatch.setenv(
252+
"DD_COLD_START_TRACE_SKIP_LIB", "ddtrace.contrib.logging,datadog_lambda.wrapper"
253+
)
254+
monkeypatch.setenv("DD_MIN_COLD_START_DURATION", "0")
255+
256+
@wrapper.datadog_lambda_wrapper
257+
def handler(event, context):
258+
import tabnanny
259+
return "hello world"
260+
261+
lambda_context = MagicMock()
262+
lambda_context.invoked_function_arn = (
263+
"arn:aws:lambda:us-west-1:123457598159:function:python-layer-test:1"
264+
)
265+
266+
handler.cold_start_tracing = True
267+
result = handler({}, lambda_context)
268+
269+
assert result == "hello world"
270+
271+
function_span = import_span = None
272+
for span in spans:
273+
if span.resource == "tabnanny":
274+
import_span = span
275+
elif span.name == "aws.lambda":
276+
function_span = span
277+
278+
assert function_span is not None
279+
assert import_span is not None
280+
assert import_span.parent_id == function_span.span_id

0 commit comments

Comments
 (0)
0