Skip to content

Commit 3210240

Browse files
committed
Add cold_start_trace_skip_lib.
1 parent 863fa9e commit 3210240

4 files changed

Lines changed: 49 additions & 29 deletions

File tree

datadog_lambda/config.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,26 @@ def as_bool(val):
3737
return val.lower() == "true" or val == "1"
3838

3939

40+
def as_list(val):
41+
if isinstance(val, str):
42+
if not val:
43+
return []
44+
return [val.strip() for val in val.split(",") if val.strip()]
45+
return val
46+
47+
4048
class Config:
4149

4250
service = _get_env("DD_SERVICE")
4351
env = _get_env("DD_ENV")
4452

4553
cold_start_tracing = _get_env("DD_COLD_START_TRACING", "true", as_bool)
4654
min_cold_start_trace_duration = _get_env("DD_MIN_COLD_START_DURATION", 3, int)
55+
cold_start_trace_skip_lib = _get_env(
56+
"DD_COLD_START_TRACE_SKIP_LIB", [
57+
"ddtrace.internal.compat",
58+
"ddtrace.filters",
59+
], as_list)
4760

4861
capture_payload_max_depth = _get_env("DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH", 10, int)
4962
capture_payload_enabled = _get_env("DD_CAPTURE_LAMBDA_PAYLOAD", "false", as_bool)

datadog_lambda/wrapper.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@
6262
DD_ENCODE_AUTHORIZER_CONTEXT = "DD_ENCODE_AUTHORIZER_CONTEXT"
6363
DD_DECODE_AUTHORIZER_CONTEXT = "DD_DECODE_AUTHORIZER_CONTEXT"
6464
DD_COLD_START_TRACING = "DD_COLD_START_TRACING"
65-
DD_COLD_START_TRACE_SKIP_LIB = "DD_COLD_START_TRACE_SKIP_LIB"
6665
DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME"
6766
DD_SERVICE = "DD_SERVICE"
6867
DD_ENV = "DD_ENV"
@@ -145,9 +144,6 @@ def __init__(self, func):
145144
self.data_streams_enabled = (
146145
os.environ.get(DD_DATA_STREAMS_ENABLED, "false").lower() == "true"
147146
)
148-
self.local_testing_mode = os.environ.get(
149-
DD_LOCAL_TEST, "false"
150-
).lower() in ("true", "1")
151147
self.cold_start_trace_skip_lib = [
152148
"ddtrace.internal.compat",
153149
"ddtrace.filters",
@@ -345,7 +341,7 @@ def _after(self, event, context):
345341
following_span.start_ns,
346342
trace_ctx,
347343
config.min_cold_start_trace_duration,
348-
self.cold_start_trace_skip_lib,
344+
config.cold_start_trace_skip_lib,
349345
).trace()
350346
except Exception as e:
351347
logger.debug("Failed to create cold start spans. %s", e)

tests/test_config.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,16 @@ def set_env(key, value):
192192
("DD_LOCAL_TEST", "local_test", "1", True), # CHANGED
193193
("DD_LOCAL_TEST", "local_test", "0", False),
194194
("DD_LOCAL_TEST", "local_test", "purple", False),
195+
("DD_COLD_START_TRACE_SKIP_LIB", "cold_start_trace_skip_lib", None, ["ddtrace.internal.compat", "ddtrace.filters"]),
196+
("DD_COLD_START_TRACE_SKIP_LIB", "cold_start_trace_skip_lib", "", []),
197+
("DD_COLD_START_TRACE_SKIP_LIB", "cold_start_trace_skip_lib", " ", []),
198+
("DD_COLD_START_TRACE_SKIP_LIB", "cold_start_trace_skip_lib", ",", []),
199+
("DD_COLD_START_TRACE_SKIP_LIB", "cold_start_trace_skip_lib", " , ", []),
200+
("DD_COLD_START_TRACE_SKIP_LIB", "cold_start_trace_skip_lib", "a", ["a"]),
201+
("DD_COLD_START_TRACE_SKIP_LIB", "cold_start_trace_skip_lib", "a,", ["a"]),
202+
("DD_COLD_START_TRACE_SKIP_LIB", "cold_start_trace_skip_lib", "a, ", ["a"]),
203+
("DD_COLD_START_TRACE_SKIP_LIB", "cold_start_trace_skip_lib", "a,b", ["a", "b"]),
204+
("DD_COLD_START_TRACE_SKIP_LIB", "cold_start_trace_skip_lib", "a, b", ["a", "b"]),
195205
)
196206

197207

tests/test_wrapper.py

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -701,39 +701,40 @@ def handler(event, context):
701701

702702

703703
class TestLambdaWrapperFlushExtension(unittest.TestCase):
704-
def setUp(self):
705-
self.orig_environ = os.environ
704+
@patch("datadog_lambda.config.Config.local_test", True)
705+
@patch("datadog_lambda.wrapper.should_use_extension", True)
706+
def test_local_test_true_flushing(self):
707+
flushes = []
708+
lambda_event = {}
709+
lambda_context = get_mock_context()
706710

707-
def tearDown(self):
708-
os.environ = self.orig_environ
711+
def flush():
712+
flushes.append(1)
709713

714+
@patch("datadog_lambda.wrapper.flush_extension", flush)
715+
@wrapper.datadog_lambda_wrapper
716+
def lambda_handler(event, context):
717+
pass
718+
719+
lambda_handler(lambda_event, lambda_context)
720+
721+
self.assertEqual(len(flushes), 1)
722+
723+
@patch("datadog_lambda.config.Config.local_test", False)
710724
@patch("datadog_lambda.wrapper.should_use_extension", True)
711-
def test_local_test_envvar_flushing(self):
725+
def test_local_test_false_flushing(self):
712726
flushes = []
713727
lambda_event = {}
714728
lambda_context = get_mock_context()
715729

716730
def flush():
717731
flushes.append(1)
718732

719-
for environ, flush_called in (
720-
({"DD_LOCAL_TEST": "True"}, True),
721-
({"DD_LOCAL_TEST": "true"}, True),
722-
({"DD_LOCAL_TEST": "1"}, True),
723-
({"DD_LOCAL_TEST": "False"}, False),
724-
({"DD_LOCAL_TEST": "false"}, False),
725-
({"DD_LOCAL_TEST": "0"}, False),
726-
({"DD_LOCAL_TEST": ""}, False),
727-
({}, False),
728-
):
729-
os.environ = environ
730-
flushes.clear()
731-
732-
@patch("datadog_lambda.wrapper.flush_extension", flush)
733-
@wrapper.datadog_lambda_wrapper
734-
def lambda_handler(event, context):
735-
pass
733+
@patch("datadog_lambda.wrapper.flush_extension", flush)
734+
@wrapper.datadog_lambda_wrapper
735+
def lambda_handler(event, context):
736+
pass
736737

737-
lambda_handler(lambda_event, lambda_context)
738+
lambda_handler(lambda_event, lambda_context)
738739

739-
self.assertEqual(flush_called, len(flushes) == 1)
740+
self.assertEqual(len(flushes), 0)

0 commit comments

Comments
 (0)