From 1d3d61e335ee2493cf82c7fc19ff94eb8d289f96 Mon Sep 17 00:00:00 2001 From: Anton Pirker Date: Wed, 30 Nov 2022 14:48:52 +0100 Subject: [PATCH] Added extract_sentry_trace to parse traceparent string into trace information --- sentry_sdk/tracing.py | 7 +++++++ tests/tracing/test_misc.py | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/sentry_sdk/tracing.py b/sentry_sdk/tracing.py index 5b9fbdfd0d..62195e9148 100644 --- a/sentry_sdk/tracing.py +++ b/sentry_sdk/tracing.py @@ -372,6 +372,13 @@ def to_traceparent(self): sampled = "0" return "%s-%s-%s" % (self.trace_id, self.span_id, sampled) + @classmethod + def extract_sentry_trace(cls, sentry_trace): + # type: (str) -> Tuple[str, str, bool] + trace_id, parent_span_id, parent_sampled = sentry_trace.split("-") + parent_sampled = True if parent_sampled == "1" else False + return (trace_id, parent_span_id, parent_sampled) + def to_tracestate(self): # type: () -> Optional[str] """ diff --git a/tests/tracing/test_misc.py b/tests/tracing/test_misc.py index b51b5dcddb..ca3217acb3 100644 --- a/tests/tracing/test_misc.py +++ b/tests/tracing/test_misc.py @@ -274,3 +274,21 @@ def test_set_meaurement(sentry_init, capture_events): assert event["measurements"]["metric.bar"] == {"value": 456, "unit": "second"} assert event["measurements"]["metric.baz"] == {"value": 420.69, "unit": "custom"} assert event["measurements"]["metric.foobar"] == {"value": 17.99, "unit": "percent"} + + +def test_extract_sentry_trace(): + # type: () -> None + + trace_id, parent_span_id, parent_sampled = Transaction.extract_sentry_trace( + "4c79f60c11214eb38604f4ae0781bfb2-fa90fdead5f74052-1" + ) + assert trace_id == "4c79f60c11214eb38604f4ae0781bfb2" + assert parent_span_id == "fa90fdead5f74052" + assert parent_sampled + + trace_id, parent_span_id, parent_sampled = Transaction.extract_sentry_trace( + "5e79f60c11214eb38604f4ae0781bfb2-0390fdead5f74052-0" + ) + assert trace_id == "5e79f60c11214eb38604f4ae0781bfb2" + assert parent_span_id == "0390fdead5f74052" + assert not parent_sampled