mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-30 21:56:07 +08:00
Merge branch 'master' into usage
This commit is contained in:
@ -2,6 +2,9 @@
|
||||
|
||||
## Unreleased
|
||||
|
||||
- Update pymemcache instrumentation to follow semantic conventions
|
||||
([#183](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/183))
|
||||
|
||||
## Version 0.13b0
|
||||
|
||||
Released 2020-09-17
|
||||
|
@ -54,14 +54,13 @@ logger = logging.getLogger(__name__)
|
||||
# https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/span-general.md#general-network-connection-attributes
|
||||
_HOST = "net.peer.name"
|
||||
_PORT = "net.peer.port"
|
||||
_TRANSPORT = "net.transport"
|
||||
# Database semantic conventions here:
|
||||
# https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/database.md
|
||||
_DB = "db.type"
|
||||
_URL = "db.url"
|
||||
_DB = "db.system"
|
||||
|
||||
_DEFAULT_SERVICE = "memcached"
|
||||
_RAWCMD = "db.statement"
|
||||
_CMD = "memcached.command"
|
||||
COMMANDS = [
|
||||
"set",
|
||||
"set_many",
|
||||
@ -114,7 +113,7 @@ def _with_tracer_wrapper(func):
|
||||
@_with_tracer_wrapper
|
||||
def _wrap_cmd(tracer, cmd, wrapped, instance, args, kwargs):
|
||||
with tracer.start_as_current_span(
|
||||
_CMD, kind=SpanKind.INTERNAL, attributes={}
|
||||
cmd, kind=SpanKind.CLIENT, attributes={}
|
||||
) as span:
|
||||
try:
|
||||
if span.is_recording():
|
||||
@ -172,9 +171,10 @@ def _get_address_attributes(instance):
|
||||
host, port = instance.server
|
||||
address_attributes[_HOST] = host
|
||||
address_attributes[_PORT] = port
|
||||
address_attributes[_URL] = "memcached://{}:{}".format(host, port)
|
||||
address_attributes[_TRANSPORT] = "IP.TCP"
|
||||
elif isinstance(instance.server, str):
|
||||
address_attributes[_URL] = "memcached://{}".format(instance.server)
|
||||
address_attributes[_HOST] = instance.server
|
||||
address_attributes[_TRANSPORT] = "Unix"
|
||||
|
||||
return address_attributes
|
||||
|
||||
|
@ -62,17 +62,12 @@ class PymemcacheClientTestCase(
|
||||
self.assertEqual(num_expected, len(spans))
|
||||
|
||||
for span, query in zip(spans, queries_expected):
|
||||
self.assertEqual(span.name, "memcached.command")
|
||||
self.assertIs(span.kind, trace_api.SpanKind.INTERNAL)
|
||||
self.assertEqual(
|
||||
span.attributes["net.peer.name"], "{}".format(TEST_HOST)
|
||||
)
|
||||
command, *_ = query.split(" ")
|
||||
self.assertEqual(span.name, command)
|
||||
self.assertIs(span.kind, trace_api.SpanKind.CLIENT)
|
||||
self.assertEqual(span.attributes["net.peer.name"], TEST_HOST)
|
||||
self.assertEqual(span.attributes["net.peer.port"], TEST_PORT)
|
||||
self.assertEqual(span.attributes["db.type"], "memcached")
|
||||
self.assertEqual(
|
||||
span.attributes["db.url"],
|
||||
"memcached://{}:{}".format(TEST_HOST, TEST_PORT),
|
||||
)
|
||||
self.assertEqual(span.attributes["db.system"], "memcached")
|
||||
self.assertEqual(span.attributes["db.statement"], query)
|
||||
|
||||
def test_set_success(self):
|
||||
@ -214,10 +209,8 @@ class PymemcacheClientTestCase(
|
||||
spans = self.memory_exporter.get_finished_spans()
|
||||
|
||||
self.assertEqual(len(spans), 2)
|
||||
self.assertEqual(
|
||||
spans[0].attributes["db.url"],
|
||||
"memcached://{}:{}".format(TEST_HOST, TEST_PORT),
|
||||
)
|
||||
self.assertEqual(spans[0].attributes["net.peer.name"], TEST_HOST)
|
||||
self.assertEqual(spans[0].attributes["net.peer.port"], TEST_PORT)
|
||||
|
||||
def test_append_stored(self):
|
||||
client = self.make_client([b"STORED\r\n"])
|
||||
@ -517,17 +510,12 @@ class PymemcacheHashClientTestCase(TestBase):
|
||||
self.assertEqual(num_expected, len(spans))
|
||||
|
||||
for span, query in zip(spans, queries_expected):
|
||||
self.assertEqual(span.name, "memcached.command")
|
||||
self.assertIs(span.kind, trace_api.SpanKind.INTERNAL)
|
||||
self.assertEqual(
|
||||
span.attributes["net.peer.name"], "{}".format(TEST_HOST)
|
||||
)
|
||||
command, *_ = query.split(" ")
|
||||
self.assertEqual(span.name, command)
|
||||
self.assertIs(span.kind, trace_api.SpanKind.CLIENT)
|
||||
self.assertEqual(span.attributes["net.peer.name"], TEST_HOST)
|
||||
self.assertEqual(span.attributes["net.peer.port"], TEST_PORT)
|
||||
self.assertEqual(span.attributes["db.type"], "memcached")
|
||||
self.assertEqual(
|
||||
span.attributes["db.url"],
|
||||
"memcached://{}:{}".format(TEST_HOST, TEST_PORT),
|
||||
)
|
||||
self.assertEqual(span.attributes["db.system"], "memcached")
|
||||
self.assertEqual(span.attributes["db.statement"], query)
|
||||
|
||||
def test_delete_many_found(self):
|
||||
|
Reference in New Issue
Block a user