Files
2020-04-08 10:39:44 -07:00

74 lines
2.4 KiB
Python

from unittest import TestCase
from tests.test_tracer import get_dummy_tracer
from ddtrace.propagation.http import (
HTTPPropagator,
HTTP_HEADER_TRACE_ID,
HTTP_HEADER_PARENT_ID,
HTTP_HEADER_SAMPLING_PRIORITY,
HTTP_HEADER_ORIGIN,
)
class TestHttpPropagation(TestCase):
"""
Tests related to the ``Context`` class that hosts the trace for the
current execution flow.
"""
def test_inject(self):
tracer = get_dummy_tracer()
with tracer.trace("global_root_span") as span:
span.context.sampling_priority = 2
span.context._dd_origin = "synthetics"
headers = {}
propagator = HTTPPropagator()
propagator.inject(span.context, headers)
assert int(headers[HTTP_HEADER_TRACE_ID]) == span.trace_id
assert int(headers[HTTP_HEADER_PARENT_ID]) == span.span_id
assert int(headers[HTTP_HEADER_SAMPLING_PRIORITY]) == span.context.sampling_priority
assert headers[HTTP_HEADER_ORIGIN] == span.context._dd_origin
def test_extract(self):
tracer = get_dummy_tracer()
headers = {
"x-datadog-trace-id": "1234",
"x-datadog-parent-id": "5678",
"x-datadog-sampling-priority": "1",
"x-datadog-origin": "synthetics",
}
propagator = HTTPPropagator()
context = propagator.extract(headers)
tracer.context_provider.activate(context)
with tracer.trace("local_root_span") as span:
assert span.trace_id == 1234
assert span.parent_id == 5678
assert span.context.sampling_priority == 1
assert span.context._dd_origin == "synthetics"
def test_WSGI_extract(self):
"""Ensure we support the WSGI formatted headers as well."""
tracer = get_dummy_tracer()
headers = {
"HTTP_X_DATADOG_TRACE_ID": "1234",
"HTTP_X_DATADOG_PARENT_ID": "5678",
"HTTP_X_DATADOG_SAMPLING_PRIORITY": "1",
"HTTP_X_DATADOG_ORIGIN": "synthetics",
}
propagator = HTTPPropagator()
context = propagator.extract(headers)
tracer.context_provider.activate(context)
with tracer.trace("local_root_span") as span:
assert span.trace_id == 1234
assert span.parent_id == 5678
assert span.context.sampling_priority == 1
assert span.context._dd_origin == "synthetics"