mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-30 05:32:30 +08:00
Move DD code into its own directory (#6)
This commit is contained in:
136
reference/tests/test_encoders.py
Normal file
136
reference/tests/test_encoders.py
Normal file
@ -0,0 +1,136 @@
|
||||
import json
|
||||
|
||||
from unittest import TestCase
|
||||
|
||||
from ddtrace.span import Span
|
||||
from ddtrace.compat import msgpack_type, string_type
|
||||
from ddtrace.encoding import JSONEncoder, MsgpackEncoder
|
||||
from ddtrace.vendor import msgpack
|
||||
|
||||
|
||||
class TestEncoders(TestCase):
|
||||
"""
|
||||
Ensures that Encoders serialize the payload as expected.
|
||||
"""
|
||||
def test_encode_traces_json(self):
|
||||
# test encoding for JSON format
|
||||
traces = []
|
||||
traces.append([
|
||||
Span(name='client.testing', tracer=None),
|
||||
Span(name='client.testing', tracer=None),
|
||||
])
|
||||
traces.append([
|
||||
Span(name='client.testing', tracer=None),
|
||||
Span(name='client.testing', tracer=None),
|
||||
])
|
||||
|
||||
encoder = JSONEncoder()
|
||||
spans = encoder.encode_traces(traces)
|
||||
items = json.loads(spans)
|
||||
|
||||
# test the encoded output that should be a string
|
||||
# and the output must be flatten
|
||||
assert isinstance(spans, string_type)
|
||||
assert len(items) == 2
|
||||
assert len(items[0]) == 2
|
||||
assert len(items[1]) == 2
|
||||
for i in range(2):
|
||||
for j in range(2):
|
||||
assert 'client.testing' == items[i][j]['name']
|
||||
|
||||
def test_join_encoded_json(self):
|
||||
# test encoding for JSON format
|
||||
traces = []
|
||||
traces.append([
|
||||
Span(name='client.testing', tracer=None),
|
||||
Span(name='client.testing', tracer=None),
|
||||
])
|
||||
traces.append([
|
||||
Span(name='client.testing', tracer=None),
|
||||
Span(name='client.testing', tracer=None),
|
||||
])
|
||||
|
||||
encoder = JSONEncoder()
|
||||
|
||||
# Encode each trace on it's own
|
||||
encoded_traces = [
|
||||
encoder.encode_trace(trace)
|
||||
for trace in traces
|
||||
]
|
||||
|
||||
# Join the encoded traces together
|
||||
data = encoder.join_encoded(encoded_traces)
|
||||
|
||||
# Parse the resulting data
|
||||
items = json.loads(data)
|
||||
|
||||
# test the encoded output that should be a string
|
||||
# and the output must be flatten
|
||||
assert isinstance(data, string_type)
|
||||
assert len(items) == 2
|
||||
assert len(items[0]) == 2
|
||||
assert len(items[1]) == 2
|
||||
for i in range(2):
|
||||
for j in range(2):
|
||||
assert 'client.testing' == items[i][j]['name']
|
||||
|
||||
def test_encode_traces_msgpack(self):
|
||||
# test encoding for MsgPack format
|
||||
traces = []
|
||||
traces.append([
|
||||
Span(name='client.testing', tracer=None),
|
||||
Span(name='client.testing', tracer=None),
|
||||
])
|
||||
traces.append([
|
||||
Span(name='client.testing', tracer=None),
|
||||
Span(name='client.testing', tracer=None),
|
||||
])
|
||||
|
||||
encoder = MsgpackEncoder()
|
||||
spans = encoder.encode_traces(traces)
|
||||
items = msgpack.unpackb(spans)
|
||||
|
||||
# test the encoded output that should be a string
|
||||
# and the output must be flatten
|
||||
assert isinstance(spans, msgpack_type)
|
||||
assert len(items) == 2
|
||||
assert len(items[0]) == 2
|
||||
assert len(items[1]) == 2
|
||||
for i in range(2):
|
||||
for j in range(2):
|
||||
assert b'client.testing' == items[i][j][b'name']
|
||||
|
||||
def test_join_encoded_msgpack(self):
|
||||
# test encoding for MsgPack format
|
||||
traces = []
|
||||
traces.append([
|
||||
Span(name='client.testing', tracer=None),
|
||||
Span(name='client.testing', tracer=None),
|
||||
])
|
||||
traces.append([
|
||||
Span(name='client.testing', tracer=None),
|
||||
Span(name='client.testing', tracer=None),
|
||||
])
|
||||
|
||||
encoder = MsgpackEncoder()
|
||||
|
||||
# Encode each individual trace on it's own
|
||||
encoded_traces = [
|
||||
encoder.encode_trace(trace)
|
||||
for trace in traces
|
||||
]
|
||||
# Join the encoded traces together
|
||||
data = encoder.join_encoded(encoded_traces)
|
||||
|
||||
# Parse the encoded data
|
||||
items = msgpack.unpackb(data)
|
||||
|
||||
# test the encoded output that should be a string
|
||||
# and the output must be flatten
|
||||
assert isinstance(data, msgpack_type)
|
||||
assert len(items) == 2
|
||||
assert len(items[0]) == 2
|
||||
assert len(items[1]) == 2
|
||||
for i in range(2):
|
||||
for j in range(2):
|
||||
assert b'client.testing' == items[i][j][b'name']
|
Reference in New Issue
Block a user