mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-28 12:43:39 +08:00
Rename IdsGenerator to IdGenerator (#350)
This commit is contained in:
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@ -6,7 +6,7 @@ on:
|
|||||||
- 'release/*'
|
- 'release/*'
|
||||||
pull_request:
|
pull_request:
|
||||||
env:
|
env:
|
||||||
CORE_REPO_SHA: a434be5f450fdd329bcefb41e84406a001f9534c
|
CORE_REPO_SHA: dbb1f72775a424086b7a1eefbb11cfcbf31d9534
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python-contrib/compare/v0.18b0...HEAD)
|
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python-contrib/compare/v0.18b0...HEAD)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Rename `IdsGenerator` to `IdGenerator`
|
||||||
|
([#350])(https://github.com/open-telemetry/opentelemetry-python/pull/350)
|
||||||
|
|
||||||
## [0.18b0](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v0.18b0) - 2021-02-16
|
## [0.18b0](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v0.18b0) - 2021-02-16
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
@ -8,6 +8,8 @@ class_references=
|
|||||||
opentelemetry.trace.propagation.textmap.Getter
|
opentelemetry.trace.propagation.textmap.Getter
|
||||||
; - DatadogFormat
|
; - DatadogFormat
|
||||||
; - AWSXRayFormat
|
; - AWSXRayFormat
|
||||||
|
opentelemetry.sdk.trace.id_generator.IdGenerator
|
||||||
|
; - AwsXRayIdGenerator
|
||||||
TextMapPropagatorT
|
TextMapPropagatorT
|
||||||
; - AwsXRayFormat.extract
|
; - AwsXRayFormat.extract
|
||||||
|
|
||||||
@ -16,14 +18,14 @@ anys=
|
|||||||
opentelemetry.trace.propagation.textmap.TextMapPropagator.fields
|
opentelemetry.trace.propagation.textmap.TextMapPropagator.fields
|
||||||
; - AWSXRayFormat
|
; - AWSXRayFormat
|
||||||
TraceId
|
TraceId
|
||||||
; - AwsXRayIdsGenerator
|
; - AwsXRayIdGenerator
|
||||||
TraceIdRatioBased
|
TraceIdRatioBased
|
||||||
; - AwsXRayIdsGenerator
|
; - AwsXRayIdGenerator
|
||||||
; SDK
|
; SDK
|
||||||
SpanProcessor
|
SpanProcessor
|
||||||
; - DatadogExportSpanProcessor
|
; - DatadogExportSpanProcessor
|
||||||
TracerProvider
|
TracerProvider
|
||||||
; - AwsXRayIdsGenerator
|
; - AwsXRayIdGenerator
|
||||||
; Instrumentation
|
; Instrumentation
|
||||||
BaseInstrumentor
|
BaseInstrumentor
|
||||||
; - instrumentation.*
|
; - instrumentation.*
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
OpenTelemetry Python - AWS SDK Extension
|
OpenTelemetry Python - AWS SDK Extension
|
||||||
========================================
|
========================================
|
||||||
|
|
||||||
.. automodule:: opentelemetry.sdk.extension.aws.trace.aws_xray_ids_generator
|
.. automodule:: opentelemetry.sdk.extension.aws.trace.aws_xray_id_generator
|
||||||
:members:
|
:members:
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
@ -18,7 +18,7 @@ from unittest.mock import Mock, patch
|
|||||||
from opentelemetry import trace as trace_api
|
from opentelemetry import trace as trace_api
|
||||||
from opentelemetry.exporter.datadog import constants, propagator
|
from opentelemetry.exporter.datadog import constants, propagator
|
||||||
from opentelemetry.sdk import trace
|
from opentelemetry.sdk import trace
|
||||||
from opentelemetry.sdk.trace.ids_generator import RandomIdsGenerator
|
from opentelemetry.sdk.trace.id_generator import RandomIdGenerator
|
||||||
from opentelemetry.trace import get_current_span, set_span_in_context
|
from opentelemetry.trace import get_current_span, set_span_in_context
|
||||||
from opentelemetry.trace.propagation.textmap import DictGetter
|
from opentelemetry.trace.propagation.textmap import DictGetter
|
||||||
|
|
||||||
@ -30,12 +30,12 @@ carrier_getter = DictGetter()
|
|||||||
class TestDatadogFormat(unittest.TestCase):
|
class TestDatadogFormat(unittest.TestCase):
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
ids_generator = RandomIdsGenerator()
|
id_generator = RandomIdGenerator()
|
||||||
cls.serialized_trace_id = propagator.format_trace_id(
|
cls.serialized_trace_id = propagator.format_trace_id(
|
||||||
ids_generator.generate_trace_id()
|
id_generator.generate_trace_id()
|
||||||
)
|
)
|
||||||
cls.serialized_parent_id = propagator.format_span_id(
|
cls.serialized_parent_id = propagator.format_span_id(
|
||||||
ids_generator.generate_span_id()
|
id_generator.generate_span_id()
|
||||||
)
|
)
|
||||||
cls.serialized_origin = "origin-service"
|
cls.serialized_origin = "origin-service"
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ class TestDatadogFormat(unittest.TestCase):
|
|||||||
"child",
|
"child",
|
||||||
trace_api.SpanContext(
|
trace_api.SpanContext(
|
||||||
parent_span_context.trace_id,
|
parent_span_context.trace_id,
|
||||||
RandomIdsGenerator().generate_span_id(),
|
RandomIdGenerator().generate_span_id(),
|
||||||
is_remote=False,
|
is_remote=False,
|
||||||
trace_flags=parent_span_context.trace_flags,
|
trace_flags=parent_span_context.trace_flags,
|
||||||
trace_state=parent_span_context.trace_state,
|
trace_state=parent_span_context.trace_state,
|
||||||
@ -155,7 +155,7 @@ class TestDatadogFormat(unittest.TestCase):
|
|||||||
"child",
|
"child",
|
||||||
trace_api.SpanContext(
|
trace_api.SpanContext(
|
||||||
parent_span_context.trace_id,
|
parent_span_context.trace_id,
|
||||||
RandomIdsGenerator().generate_span_id(),
|
RandomIdGenerator().generate_span_id(),
|
||||||
is_remote=False,
|
is_remote=False,
|
||||||
trace_flags=parent_span_context.trace_flags,
|
trace_flags=parent_span_context.trace_flags,
|
||||||
trace_state=parent_span_context.trace_state,
|
trace_state=parent_span_context.trace_state,
|
||||||
|
@ -30,16 +30,16 @@ Install the OpenTelemetry SDK package.
|
|||||||
|
|
||||||
pip install opentelemetry-sdk
|
pip install opentelemetry-sdk
|
||||||
|
|
||||||
Next, use the provided `AwsXRayIdsGenerator` to initialize the `TracerProvider`.
|
Next, use the provided `AwsXRayIdGenerator` to initialize the `TracerProvider`.
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
import opentelemetry.trace as trace
|
import opentelemetry.trace as trace
|
||||||
from opentelemetry.sdk.extension.aws.trace import AwsXRayIdsGenerator
|
from opentelemetry.sdk.extension.aws.trace import AwsXRayIdGenerator
|
||||||
from opentelemetry.sdk.trace import TracerProvider
|
from opentelemetry.sdk.trace import TracerProvider
|
||||||
|
|
||||||
trace.set_tracer_provider(
|
trace.set_tracer_provider(
|
||||||
TracerProvider(ids_generator=AwsXRayIdsGenerator())
|
TracerProvider(id_generator=AwsXRayIdGenerator())
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,8 +44,8 @@ install_requires =
|
|||||||
[options.entry_points]
|
[options.entry_points]
|
||||||
opentelemetry_propagator =
|
opentelemetry_propagator =
|
||||||
aws_xray = opentelemetry.sdk.extension.aws.trace.propagation.aws_xray_format:AwsXRayFormat
|
aws_xray = opentelemetry.sdk.extension.aws.trace.propagation.aws_xray_format:AwsXRayFormat
|
||||||
opentelemetry_ids_generator =
|
opentelemetry_id_generator =
|
||||||
aws_xray = opentelemetry.sdk.extension.aws.trace.aws_xray_ids_generator:AwsXRayIdsGenerator
|
aws_xray = opentelemetry.sdk.extension.aws.trace.aws_xray_id_generator:AwsXRayIdGenerator
|
||||||
|
|
||||||
[options.extras_require]
|
[options.extras_require]
|
||||||
test =
|
test =
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from opentelemetry.sdk.extension.aws.trace.aws_xray_ids_generator import (
|
from opentelemetry.sdk.extension.aws.trace.aws_xray_id_generator import (
|
||||||
AwsXRayIdsGenerator,
|
AwsXRayIdGenerator,
|
||||||
)
|
)
|
||||||
|
|
||||||
__all__ = ["AwsXRayIdsGenerator"]
|
__all__ = ["AwsXRayIdGenerator"]
|
||||||
|
@ -39,16 +39,16 @@ Install the OpenTelemetry SDK package.
|
|||||||
|
|
||||||
pip install opentelemetry-sdk
|
pip install opentelemetry-sdk
|
||||||
|
|
||||||
Next, use the provided `AwsXRayIdsGenerator` to initialize the `TracerProvider`.
|
Next, use the provided `AwsXRayIdGenerator` to initialize the `TracerProvider`.
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
import opentelemetry.trace as trace
|
import opentelemetry.trace as trace
|
||||||
from opentelemetry.sdk.extension.aws.trace import AwsXRayIdsGenerator
|
from opentelemetry.sdk.extension.aws.trace import AwsXRayIdGenerator
|
||||||
from opentelemetry.sdk.trace import TracerProvider
|
from opentelemetry.sdk.trace import TracerProvider
|
||||||
|
|
||||||
trace.set_tracer_provider(
|
trace.set_tracer_provider(
|
||||||
TracerProvider(ids_generator=AwsXRayIdsGenerator())
|
TracerProvider(id_generator=AwsXRayIdGenerator())
|
||||||
)
|
)
|
||||||
|
|
||||||
API
|
API
|
||||||
@ -59,13 +59,10 @@ API
|
|||||||
import random
|
import random
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from opentelemetry.sdk.trace.ids_generator import (
|
from opentelemetry.sdk.trace.id_generator import IdGenerator, RandomIdGenerator
|
||||||
IdsGenerator,
|
|
||||||
RandomIdsGenerator,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class AwsXRayIdsGenerator(IdsGenerator):
|
class AwsXRayIdGenerator(IdGenerator):
|
||||||
"""Generates tracing IDs compatible with the AWS X-Ray tracing service. In
|
"""Generates tracing IDs compatible with the AWS X-Ray tracing service. In
|
||||||
the X-Ray system, the first 32 bits of the `TraceId` are the Unix epoch time
|
the X-Ray system, the first 32 bits of the `TraceId` are the Unix epoch time
|
||||||
in seconds. Since spans (AWS calls them segments) with an embedded timestamp
|
in seconds. Since spans (AWS calls them segments) with an embedded timestamp
|
||||||
@ -75,10 +72,10 @@ class AwsXRayIdsGenerator(IdsGenerator):
|
|||||||
See: https://docs.aws.amazon.com/xray/latest/devguide/xray-api-sendingdata.html#xray-api-traceids
|
See: https://docs.aws.amazon.com/xray/latest/devguide/xray-api-sendingdata.html#xray-api-traceids
|
||||||
"""
|
"""
|
||||||
|
|
||||||
random_ids_generator = RandomIdsGenerator()
|
random_id_generator = RandomIdGenerator()
|
||||||
|
|
||||||
def generate_span_id(self) -> int:
|
def generate_span_id(self) -> int:
|
||||||
return self.random_ids_generator.generate_span_id()
|
return self.random_id_generator.generate_span_id()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def generate_trace_id() -> int:
|
def generate_trace_id() -> int:
|
@ -12,14 +12,14 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from opentelemetry.sdk.extension.aws.trace import AwsXRayIdsGenerator
|
from opentelemetry.sdk.extension.aws.trace import AwsXRayIdGenerator
|
||||||
|
|
||||||
ids_generator = AwsXRayIdsGenerator()
|
id_generator = AwsXRayIdGenerator()
|
||||||
|
|
||||||
|
|
||||||
def test_generate_xray_trace_id(benchmark):
|
def test_generate_xray_trace_id(benchmark):
|
||||||
benchmark(ids_generator.generate_trace_id)
|
benchmark(id_generator.generate_trace_id)
|
||||||
|
|
||||||
|
|
||||||
def test_generate_xray_span_id(benchmark):
|
def test_generate_xray_span_id(benchmark):
|
||||||
benchmark(ids_generator.generate_span_id)
|
benchmark(id_generator.generate_span_id)
|
||||||
|
@ -16,23 +16,23 @@ import datetime
|
|||||||
import time
|
import time
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from opentelemetry.sdk.extension.aws.trace import AwsXRayIdsGenerator
|
from opentelemetry.sdk.extension.aws.trace import AwsXRayIdGenerator
|
||||||
from opentelemetry.trace.span import INVALID_TRACE_ID
|
from opentelemetry.trace.span import INVALID_TRACE_ID
|
||||||
|
|
||||||
|
|
||||||
class AwsXRayIdsGeneratorTest(unittest.TestCase):
|
class AwsXRayIdGeneratorTest(unittest.TestCase):
|
||||||
def test_ids_are_valid(self):
|
def test_ids_are_valid(self):
|
||||||
ids_generator = AwsXRayIdsGenerator()
|
id_generator = AwsXRayIdGenerator()
|
||||||
for _ in range(1000):
|
for _ in range(1000):
|
||||||
trace_id = ids_generator.generate_trace_id()
|
trace_id = id_generator.generate_trace_id()
|
||||||
self.assertTrue(trace_id != INVALID_TRACE_ID)
|
self.assertTrue(trace_id != INVALID_TRACE_ID)
|
||||||
span_id = ids_generator.generate_span_id()
|
span_id = id_generator.generate_span_id()
|
||||||
self.assertTrue(span_id != INVALID_TRACE_ID)
|
self.assertTrue(span_id != INVALID_TRACE_ID)
|
||||||
|
|
||||||
def test_id_timestamps_are_acceptable_for_xray(self):
|
def test_id_timestamps_are_acceptable_for_xray(self):
|
||||||
ids_generator = AwsXRayIdsGenerator()
|
id_generator = AwsXRayIdGenerator()
|
||||||
for _ in range(1000):
|
for _ in range(1000):
|
||||||
trace_id = ids_generator.generate_trace_id()
|
trace_id = id_generator.generate_trace_id()
|
||||||
trace_id_time = trace_id >> 96
|
trace_id_time = trace_id >> 96
|
||||||
current_time = int(time.time())
|
current_time = int(time.time())
|
||||||
self.assertLessEqual(trace_id_time, current_time)
|
self.assertLessEqual(trace_id_time, current_time)
|
||||||
|
Reference in New Issue
Block a user