mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-30 21:56:07 +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
|
||||
|
||||
- Make `SpanProcessor.on_start` accept parent Context
|
||||
([#1251](https://github.com/open-telemetry/opentelemetry-python/pull/1251))
|
||||
|
||||
## Version 0.14b0
|
||||
|
||||
Released 2020-10-13
|
||||
|
@ -17,7 +17,7 @@ import logging
|
||||
import threading
|
||||
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.export import SpanExporter
|
||||
from opentelemetry.trace import INVALID_TRACE_ID
|
||||
@ -81,7 +81,9 @@ class DatadogExportSpanProcessor(SpanProcessor):
|
||||
self.done = False
|
||||
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()
|
||||
trace_id = ctx.trace_id
|
||||
|
||||
|
@ -21,6 +21,7 @@ from unittest import mock
|
||||
from ddtrace.internal.writer import AgentWriter
|
||||
|
||||
from opentelemetry import trace as trace_api
|
||||
from opentelemetry.context import Context
|
||||
from opentelemetry.exporter import datadog
|
||||
from opentelemetry.sdk import trace
|
||||
from opentelemetry.sdk.trace import Resource, sampling
|
||||
@ -482,6 +483,21 @@ class TestDatadogSpanExporter(unittest.TestCase):
|
||||
|
||||
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):
|
||||
context = trace_api.SpanContext(
|
||||
trace_id=0x000000000000000000000000DEADBEEF,
|
||||
|
Reference in New Issue
Block a user