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

44 lines
1.2 KiB
Python

"""
An integration test that uses a real Redis client
that we expect to be implicitly traced via `ddtrace-run`
"""
import redis
from ddtrace import Pin
from tests.contrib.config import REDIS_CONFIG
from tests.test_tracer import DummyWriter
if __name__ == '__main__':
r = redis.Redis(port=REDIS_CONFIG['port'])
pin = Pin.get_from(r)
assert pin
assert pin.app == 'redis'
assert pin.service == 'redis'
pin.tracer.writer = DummyWriter()
r.flushall()
spans = pin.tracer.writer.pop()
assert len(spans) == 1
assert spans[0].service == 'redis'
assert spans[0].resource == 'FLUSHALL'
long_cmd = 'mget %s' % ' '.join(map(str, range(1000)))
us = r.execute_command(long_cmd)
spans = pin.tracer.writer.pop()
assert len(spans) == 1
span = spans[0]
assert span.service == 'redis'
assert span.name == 'redis.command'
assert span.span_type == 'redis'
assert span.error == 0
assert span.get_metric('out.port') == REDIS_CONFIG['port']
assert span.get_metric('out.redis_db') == 0
assert span.get_tag('out.host') == 'localhost'
assert span.get_tag('redis.raw_command').startswith(u'mget 0 1 2 3')
assert span.get_tag('redis.raw_command').endswith(u'...')
print('Test success')