def test_with_complete_datadog_trace_headers(self):
     extract_dd_trace_context({
         'headers': {
             TraceHeader.TRACE_ID: '123',
             TraceHeader.PARENT_ID: '321',
             TraceHeader.SAMPLING_PRIORITY: '1',
         }
     })
     self.assertDictEqual(
         get_dd_trace_context(),
         {
             TraceHeader.TRACE_ID: '123',
             TraceHeader.PARENT_ID: '65535',
             TraceHeader.SAMPLING_PRIORITY: '1',
         }
     )
     self.mock_xray_recorder.begin_subsegment.assert_called()
     self.mock_xray_recorder.end_subsegment.assert_called()
     self.mock_current_subsegment.put_metadata.assert_called_with(
         XraySubsegment.KEY,
         {
             'trace-id': '123',
             'parent-id': '321',
             'sampling-priority': '1',
         },
         XraySubsegment.NAMESPACE
     )
 def test_with_complete_datadog_trace_headers(self):
     ctx = extract_dd_trace_context(
         {
             "headers": {
                 TraceHeader.TRACE_ID: "123",
                 TraceHeader.PARENT_ID: "321",
                 TraceHeader.SAMPLING_PRIORITY: "1",
             }
         }
     )
     self.assertDictEqual(
         ctx,
         {
             "trace-id": "123",
             "parent-id": "321",
             "sampling-priority": "1",
             "source": "event",
         },
     )
     self.assertDictEqual(
         get_dd_trace_context(),
         {
             TraceHeader.TRACE_ID: "123",
             TraceHeader.PARENT_ID: "65535",
             TraceHeader.SAMPLING_PRIORITY: "1",
         },
     )
     self.mock_xray_recorder.begin_subsegment.assert_called()
     self.mock_xray_recorder.end_subsegment.assert_called()
     self.mock_current_subsegment.put_metadata.assert_called_with(
         XraySubsegment.KEY,
         {"trace-id": "123", "parent-id": "321", "sampling-priority": "1"},
         XraySubsegment.NAMESPACE,
     )
Esempio n. 3
0
 def test_without_datadog_trace_headers(self):
     extract_dd_trace_context({})
     self.assertDictEqual(
         get_dd_trace_context(), {
             TraceHeader.TRACE_ID: '4369',
             TraceHeader.PARENT_ID: '65535',
             TraceHeader.SAMPLING_PRIORITY: '2',
         })
def _wrap_httplib_request(func, instance, args, kwargs):
    """
    Wrap `httplib` (python2) or `http.client` (python3) to inject
    the Datadog trace headers into the outgoing requests.
    """
    context = get_dd_trace_context()
    if 'headers' in kwargs:
        kwargs['headers'].update(context)
    elif len(args) >= 4:
        args[3].update(context)
    else:
        kwargs['headers'] = context
    return func(*args, **kwargs)
def _wrap_requests_request(func, instance, args, kwargs):
    """
    Wrap `requests.Session.request` to inject the Datadog trace headers
    into the outgoing requests.
    """
    context = get_dd_trace_context()
    if 'headers' in kwargs:
        kwargs['headers'].update(context)
    elif len(args) >= 5:
        args[4].update(context)
    else:
        kwargs['headers'] = context
    return func(*args, **kwargs)
Esempio n. 6
0
 def test_with_incomplete_datadog_trace_headers(self):
     extract_dd_trace_context({
         'headers': {
             TraceHeader.TRACE_ID: '123',
             TraceHeader.PARENT_ID: '321',
         }
     })
     self.assertDictEqual(
         get_dd_trace_context(), {
             TraceHeader.TRACE_ID: '4369',
             TraceHeader.PARENT_ID: '65535',
             TraceHeader.SAMPLING_PRIORITY: '2',
         })
Esempio n. 7
0
def _wrap_requests_request(func, instance, args, kwargs):
    """
    Wrap `requests.Session.request` to inject the Datadog trace headers
    into the outgoing requests.
    """
    context = get_dd_trace_context()
    if "headers" in kwargs and isinstance(kwargs["headers"], MutableMapping):
        kwargs["headers"].update(context)
    elif len(args) >= 5 and isinstance(args[4], MutableMapping):
        args[4].update(context)
    else:
        kwargs["headers"] = context

    return func(*args, **kwargs)
Esempio n. 8
0
def _wrap_httplib_request(func, instance, args, kwargs):
    """
    Wrap `httplib` (python2) or `http.client` (python3) to inject
    the Datadog trace headers into the outgoing requests.
    """
    context = get_dd_trace_context()
    if "headers" in kwargs and isinstance(kwargs["headers"], MutableMapping):
        kwargs["headers"].update(context)
    elif len(args) >= 4 and isinstance(args[3], MutableMapping):
        args[3].update(context)
    else:
        kwargs["headers"] = context

    return func(*args, **kwargs)
 def test_with_complete_datadog_trace_headers_with_mixed_casing(self):
     extract_dd_trace_context({
         'headers': {
             'X-Datadog-Trace-Id': '123',
             'X-Datadog-Parent-Id': '321',
             'X-Datadog-Sampling-Priority': '1',
         }
     })
     self.assertDictEqual(
         get_dd_trace_context(),
         {
             TraceHeader.TRACE_ID: '123',
             TraceHeader.PARENT_ID: '65535',
             TraceHeader.SAMPLING_PRIORITY: '1',
         }
     )
 def test_with_complete_datadog_trace_headers_with_mixed_casing(self):
     extract_dd_trace_context({
         "headers": {
             "X-Datadog-Trace-Id": "123",
             "X-Datadog-Parent-Id": "321",
             "X-Datadog-Sampling-Priority": "1",
         }
     })
     self.assertDictEqual(
         get_dd_trace_context(),
         {
             TraceHeader.TRACE_ID: "123",
             TraceHeader.PARENT_ID: "65535",
             TraceHeader.SAMPLING_PRIORITY: "1",
         },
     )
Esempio n. 11
0
def _wrap_requests_request(func, instance, args, kwargs):
    """
    Wrap `requests.Session.request` to inject the Datadog trace headers
    into the outgoing requests.
    """
    context = get_dd_trace_context()
    if "headers" in kwargs and isinstance(kwargs["headers"], dict):
        kwargs["headers"].update(context)
    elif len(args) >= 5 and isinstance(args[4], dict):
        args[4].update(context)
    else:
        kwargs["headers"] = context

    # If we're in an integration test, log the HTTP requests made
    if os.environ.get("DD_INTEGRATION_TEST", "false").lower() == "true":
        _print_request_string(args, kwargs)

    return func(*args, **kwargs)
 def test_without_datadog_trace_headers(self):
     ctx = extract_dd_trace_context({})
     self.assertDictEqual(
         ctx,
         {
             "trace-id": "4369",
             "parent-id": "65535",
             "sampling-priority": "2",
             "source": "xray",
         },
     )
     self.assertDictEqual(
         get_dd_trace_context(),
         {
             TraceHeader.TRACE_ID: "4369",
             TraceHeader.PARENT_ID: "65535",
             TraceHeader.SAMPLING_PRIORITY: "2",
         },
     )