mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-08-01 17:34:38 +08:00
Make SpanProcessor.on_start accept parent Context (#1251)
* context from Tracer.start_span is passed through to the SpanProcessor * fix linting issue in falcon test app when linting with eachdist script * fix global error handler test as it read installed extensions * reset global Configuration object state after tests were run
This commit is contained in:
@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
- Make `SpanProcessor.on_start` accept parent Context
|
||||||
|
([#1251](https://github.com/open-telemetry/opentelemetry-python/pull/1251))
|
||||||
|
|
||||||
## Version 0.14b0
|
## Version 0.14b0
|
||||||
|
|
||||||
Released 2020-10-13
|
Released 2020-10-13
|
||||||
|
@ -17,7 +17,7 @@ import logging
|
|||||||
import threading
|
import threading
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
from opentelemetry.context import attach, detach, set_value
|
from opentelemetry.context import Context, attach, detach, set_value
|
||||||
from opentelemetry.sdk.trace import Span, SpanProcessor
|
from opentelemetry.sdk.trace import Span, SpanProcessor
|
||||||
from opentelemetry.sdk.trace.export import SpanExporter
|
from opentelemetry.sdk.trace.export import SpanExporter
|
||||||
from opentelemetry.trace import INVALID_TRACE_ID
|
from opentelemetry.trace import INVALID_TRACE_ID
|
||||||
@ -81,7 +81,9 @@ class DatadogExportSpanProcessor(SpanProcessor):
|
|||||||
self.done = False
|
self.done = False
|
||||||
self.worker_thread.start()
|
self.worker_thread.start()
|
||||||
|
|
||||||
def on_start(self, span: Span) -> None:
|
def on_start(
|
||||||
|
self, span: Span, parent_context: typing.Optional[Context] = None
|
||||||
|
) -> None:
|
||||||
ctx = span.get_span_context()
|
ctx = span.get_span_context()
|
||||||
trace_id = ctx.trace_id
|
trace_id = ctx.trace_id
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ from unittest import mock
|
|||||||
from ddtrace.internal.writer import AgentWriter
|
from ddtrace.internal.writer import AgentWriter
|
||||||
|
|
||||||
from opentelemetry import trace as trace_api
|
from opentelemetry import trace as trace_api
|
||||||
|
from opentelemetry.context import Context
|
||||||
from opentelemetry.exporter import datadog
|
from opentelemetry.exporter import datadog
|
||||||
from opentelemetry.sdk import trace
|
from opentelemetry.sdk import trace
|
||||||
from opentelemetry.sdk.trace import Resource, sampling
|
from opentelemetry.sdk.trace import Resource, sampling
|
||||||
@ -482,6 +483,21 @@ class TestDatadogSpanExporter(unittest.TestCase):
|
|||||||
|
|
||||||
tracer_provider.shutdown()
|
tracer_provider.shutdown()
|
||||||
|
|
||||||
|
def test_span_processor_accepts_parent_context(self):
|
||||||
|
span_processor = mock.Mock(
|
||||||
|
wraps=datadog.DatadogExportSpanProcessor(self.exporter)
|
||||||
|
)
|
||||||
|
tracer_provider = trace.TracerProvider()
|
||||||
|
tracer_provider.add_span_processor(span_processor)
|
||||||
|
tracer = tracer_provider.get_tracer(__name__)
|
||||||
|
|
||||||
|
context = Context()
|
||||||
|
span = tracer.start_span("foo", context=context)
|
||||||
|
|
||||||
|
span_processor.on_start.assert_called_once_with(
|
||||||
|
span, parent_context=context
|
||||||
|
)
|
||||||
|
|
||||||
def test_origin(self):
|
def test_origin(self):
|
||||||
context = trace_api.SpanContext(
|
context = trace_api.SpanContext(
|
||||||
trace_id=0x000000000000000000000000DEADBEEF,
|
trace_id=0x000000000000000000000000DEADBEEF,
|
||||||
|
Reference in New Issue
Block a user