Update pymemcache to follow semantic conventions
This commit is contained in:
parent
7513d7b961
commit
eba288aaaa
|
|
@ -57,12 +57,11 @@ _HOST = "net.peer.name"
|
||||||
_PORT = "net.peer.port"
|
_PORT = "net.peer.port"
|
||||||
# Database semantic conventions here:
|
# Database semantic conventions here:
|
||||||
# https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/database.md
|
# https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/database.md
|
||||||
_DB = "db.type"
|
_DB = "db.system"
|
||||||
_URL = "db.url"
|
_TRANSPORT = "net.transport"
|
||||||
|
|
||||||
_DEFAULT_SERVICE = "memcached"
|
_DEFAULT_SERVICE = "memcached"
|
||||||
_RAWCMD = "db.statement"
|
_RAWCMD = "db.statement"
|
||||||
_CMD = "memcached.command"
|
|
||||||
COMMANDS = [
|
COMMANDS = [
|
||||||
"set",
|
"set",
|
||||||
"set_many",
|
"set_many",
|
||||||
|
|
@ -115,7 +114,7 @@ def _with_tracer_wrapper(func):
|
||||||
@_with_tracer_wrapper
|
@_with_tracer_wrapper
|
||||||
def _wrap_cmd(tracer, cmd, wrapped, instance, args, kwargs):
|
def _wrap_cmd(tracer, cmd, wrapped, instance, args, kwargs):
|
||||||
with tracer.start_as_current_span(
|
with tracer.start_as_current_span(
|
||||||
_CMD, kind=SpanKind.INTERNAL, attributes={}
|
cmd, kind=SpanKind.CLIENT, attributes={}
|
||||||
) as span:
|
) as span:
|
||||||
try:
|
try:
|
||||||
if span.is_recording():
|
if span.is_recording():
|
||||||
|
|
@ -173,9 +172,10 @@ def _get_address_attributes(instance):
|
||||||
host, port = instance.server
|
host, port = instance.server
|
||||||
address_attributes[_HOST] = host
|
address_attributes[_HOST] = host
|
||||||
address_attributes[_PORT] = port
|
address_attributes[_PORT] = port
|
||||||
address_attributes[_URL] = "memcached://{}:{}".format(host, port)
|
address_attributes[_TRANSPORT] = "IP.TCP"
|
||||||
elif isinstance(instance.server, str):
|
elif isinstance(instance.server, str):
|
||||||
address_attributes[_URL] = "memcached://{}".format(instance.server)
|
address_attributes[_HOST] = instance.server
|
||||||
|
address_attributes[_TRANSPORT] = "Unix"
|
||||||
|
|
||||||
return address_attributes
|
return address_attributes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,17 +62,12 @@ class PymemcacheClientTestCase(
|
||||||
self.assertEqual(num_expected, len(spans))
|
self.assertEqual(num_expected, len(spans))
|
||||||
|
|
||||||
for span, query in zip(spans, queries_expected):
|
for span, query in zip(spans, queries_expected):
|
||||||
self.assertEqual(span.name, "memcached.command")
|
command, *_ = query.split(" ")
|
||||||
self.assertIs(span.kind, trace_api.SpanKind.INTERNAL)
|
self.assertEqual(span.name, command)
|
||||||
self.assertEqual(
|
self.assertIs(span.kind, trace_api.SpanKind.CLIENT)
|
||||||
span.attributes["net.peer.name"], "{}".format(TEST_HOST)
|
self.assertEqual(span.attributes["net.peer.name"], TEST_HOST)
|
||||||
)
|
|
||||||
self.assertEqual(span.attributes["net.peer.port"], TEST_PORT)
|
self.assertEqual(span.attributes["net.peer.port"], TEST_PORT)
|
||||||
self.assertEqual(span.attributes["db.type"], "memcached")
|
self.assertEqual(span.attributes["db.system"], "memcached")
|
||||||
self.assertEqual(
|
|
||||||
span.attributes["db.url"],
|
|
||||||
"memcached://{}:{}".format(TEST_HOST, TEST_PORT),
|
|
||||||
)
|
|
||||||
self.assertEqual(span.attributes["db.statement"], query)
|
self.assertEqual(span.attributes["db.statement"], query)
|
||||||
|
|
||||||
def test_set_success(self):
|
def test_set_success(self):
|
||||||
|
|
@ -214,10 +209,8 @@ class PymemcacheClientTestCase(
|
||||||
spans = self.memory_exporter.get_finished_spans()
|
spans = self.memory_exporter.get_finished_spans()
|
||||||
|
|
||||||
self.assertEqual(len(spans), 2)
|
self.assertEqual(len(spans), 2)
|
||||||
self.assertEqual(
|
self.assertEqual(spans[0].attributes["net.peer.name"], TEST_HOST)
|
||||||
spans[0].attributes["db.url"],
|
self.assertEqual(spans[0].attributes["net.peer.port"], TEST_PORT)
|
||||||
"memcached://{}:{}".format(TEST_HOST, TEST_PORT),
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_append_stored(self):
|
def test_append_stored(self):
|
||||||
client = self.make_client([b"STORED\r\n"])
|
client = self.make_client([b"STORED\r\n"])
|
||||||
|
|
@ -517,17 +510,12 @@ class PymemcacheHashClientTestCase(TestBase):
|
||||||
self.assertEqual(num_expected, len(spans))
|
self.assertEqual(num_expected, len(spans))
|
||||||
|
|
||||||
for span, query in zip(spans, queries_expected):
|
for span, query in zip(spans, queries_expected):
|
||||||
self.assertEqual(span.name, "memcached.command")
|
command, *_ = query.split(" ")
|
||||||
self.assertIs(span.kind, trace_api.SpanKind.INTERNAL)
|
self.assertEqual(span.name, command)
|
||||||
self.assertEqual(
|
self.assertIs(span.kind, trace_api.SpanKind.CLIENT)
|
||||||
span.attributes["net.peer.name"], "{}".format(TEST_HOST)
|
self.assertEqual(span.attributes["net.peer.name"], TEST_HOST)
|
||||||
)
|
|
||||||
self.assertEqual(span.attributes["net.peer.port"], TEST_PORT)
|
self.assertEqual(span.attributes["net.peer.port"], TEST_PORT)
|
||||||
self.assertEqual(span.attributes["db.type"], "memcached")
|
self.assertEqual(span.attributes["db.system"], "memcached")
|
||||||
self.assertEqual(
|
|
||||||
span.attributes["db.url"],
|
|
||||||
"memcached://{}:{}".format(TEST_HOST, TEST_PORT),
|
|
||||||
)
|
|
||||||
self.assertEqual(span.attributes["db.statement"], query)
|
self.assertEqual(span.attributes["db.statement"], query)
|
||||||
|
|
||||||
def test_delete_many_found(self):
|
def test_delete_many_found(self):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue