Files
2020-04-08 10:39:44 -07:00

93 lines
1.9 KiB
Python

from ddtrace import Tracer
import pytest
from .test_tracer import DummyWriter
@pytest.fixture
def tracer():
tracer = Tracer()
tracer.writer = DummyWriter()
return tracer
def test_tracer_context(benchmark, tracer):
def func(tracer):
with tracer.trace('a', service='s', resource='r', span_type='t'):
pass
benchmark(func, tracer)
def test_tracer_wrap_staticmethod(benchmark, tracer):
class Foo(object):
@staticmethod
@tracer.wrap()
def func():
return 0
f = Foo()
benchmark(f.func)
def test_tracer_wrap_classmethod(benchmark, tracer):
class Foo(object):
@classmethod
@tracer.wrap()
def func(cls):
return 0
f = Foo()
benchmark(f.func)
def test_tracer_wrap_instancemethod(benchmark, tracer):
class Foo(object):
@tracer.wrap()
def func(self):
return 0
f = Foo()
benchmark(f.func)
def test_tracer_start_span(benchmark, tracer):
benchmark(tracer.start_span, 'benchmark')
def test_tracer_start_finish_span(benchmark, tracer):
def func(tracer):
s = tracer.start_span('benchmark')
s.finish()
benchmark(func, tracer)
def test_trace_simple_trace(benchmark, tracer):
def func(tracer):
with tracer.trace('parent'):
for i in range(5):
with tracer.trace('child') as c:
c.set_tag('i', i)
benchmark(func, tracer)
def test_tracer_large_trace(benchmark, tracer):
import random
# generate trace with 1024 spans
@tracer.wrap()
def func(tracer, level=0):
span = tracer.current_span()
# do some work
num = random.randint(1, 10)
span.set_tag('num', num)
if level < 10:
func(tracer, level + 1)
func(tracer, level + 1)
benchmark(func, tracer)