From cdaf21e8571b8e7be9de118d87ab7839d7edbc18 Mon Sep 17 00:00:00 2001 From: alrex Date: Tue, 22 Sep 2020 08:45:50 -0700 Subject: [PATCH] instrumentation/pymongo: Cast PyMongo commands as strings (#1132) Replacement PR for #1015 --- .../CHANGELOG.md | 3 +++ .../instrumentation/pymongo/__init__.py | 4 ++-- .../tests/test_pymongo.py | 17 +++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-pymongo/CHANGELOG.md b/instrumentation/opentelemetry-instrumentation-pymongo/CHANGELOG.md index 2a6c0308d..3ed4ea42b 100644 --- a/instrumentation/opentelemetry-instrumentation-pymongo/CHANGELOG.md +++ b/instrumentation/opentelemetry-instrumentation-pymongo/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +- Cast PyMongo commands as strings + ([#1132](https://github.com/open-telemetry/opentelemetry-python/pull/1132)) + ## Version 0.13b0 Released 2020-09-17 diff --git a/instrumentation/opentelemetry-instrumentation-pymongo/src/opentelemetry/instrumentation/pymongo/__init__.py b/instrumentation/opentelemetry-instrumentation-pymongo/src/opentelemetry/instrumentation/pymongo/__init__.py index 0d5ddc10e..4cfff745d 100644 --- a/instrumentation/opentelemetry-instrumentation-pymongo/src/opentelemetry/instrumentation/pymongo/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-pymongo/src/opentelemetry/instrumentation/pymongo/__init__.py @@ -66,8 +66,8 @@ class CommandTracer(monitoring.CommandListener): name = DATABASE_TYPE + "." + event.command_name statement = event.command_name if command: - name += "." + command - statement += " " + command + name += "." + str(command) + statement += " " + str(command) try: span = self._tracer.start_span(name, kind=SpanKind.CLIENT) diff --git a/instrumentation/opentelemetry-instrumentation-pymongo/tests/test_pymongo.py b/instrumentation/opentelemetry-instrumentation-pymongo/tests/test_pymongo.py index 57f91e131..a84841b28 100644 --- a/instrumentation/opentelemetry-instrumentation-pymongo/tests/test_pymongo.py +++ b/instrumentation/opentelemetry-instrumentation-pymongo/tests/test_pymongo.py @@ -138,6 +138,23 @@ class TestPymongo(TestBase): trace_api.status.StatusCanonicalCode.UNKNOWN, ) + def test_int_command(self): + command_attrs = { + "command_name": 123, + } + mock_event = MockEvent(command_attrs) + + command_tracer = CommandTracer(self.tracer) + command_tracer.started(event=mock_event) + command_tracer.succeeded(event=mock_event) + + spans_list = self.memory_exporter.get_finished_spans() + + self.assertEqual(len(spans_list), 1) + span = spans_list[0] + + self.assertEqual(span.name, "mongodb.command_name.123") + class MockCommand: def __init__(self, command_attrs):