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:
Mario Jonke
2020-10-16 23:11:20 +02:00
committed by GitHub
parent 55d5e62d4e
commit 33a404d918
3 changed files with 23 additions and 2 deletions

View File

@ -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

View File

@ -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

View File

@ -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,