mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-31 14:11:50 +08:00
Merge pull request #112 from NathanielRN/move-instrumentation-pymongo
Move instrumentation pymongo
This commit is contained in:
@ -39,13 +39,13 @@ package_dir=
|
|||||||
=src
|
=src
|
||||||
packages=find_namespace:
|
packages=find_namespace:
|
||||||
install_requires =
|
install_requires =
|
||||||
opentelemetry-api == 0.15.dev0
|
opentelemetry-api == 0.15b0
|
||||||
opentelemetry-instrumentation == 0.15.dev0
|
opentelemetry-instrumentation == 0.15b0
|
||||||
pymongo ~= 3.1
|
pymongo ~= 3.1
|
||||||
|
|
||||||
[options.extras_require]
|
[options.extras_require]
|
||||||
test =
|
test =
|
||||||
opentelemetry-test == 0.15.dev0
|
opentelemetry-test == 0.15b0
|
||||||
|
|
||||||
[options.packages.find]
|
[options.packages.find]
|
||||||
where = src
|
where = src
|
||||||
|
@ -46,7 +46,7 @@ from opentelemetry import trace
|
|||||||
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
||||||
from opentelemetry.instrumentation.pymongo.version import __version__
|
from opentelemetry.instrumentation.pymongo.version import __version__
|
||||||
from opentelemetry.trace import SpanKind, get_tracer
|
from opentelemetry.trace import SpanKind, get_tracer
|
||||||
from opentelemetry.trace.status import Status, StatusCanonicalCode
|
from opentelemetry.trace.status import Status, StatusCode
|
||||||
|
|
||||||
DATABASE_TYPE = "mongodb"
|
DATABASE_TYPE = "mongodb"
|
||||||
COMMAND_ATTRIBUTES = ["filter", "sort", "skip", "limit", "pipeline"]
|
COMMAND_ATTRIBUTES = ["filter", "sort", "skip", "limit", "pipeline"]
|
||||||
@ -92,11 +92,8 @@ class CommandTracer(monitoring.CommandListener):
|
|||||||
# Add Span to dictionary
|
# Add Span to dictionary
|
||||||
self._span_dict[_get_span_dict_key(event)] = span
|
self._span_dict[_get_span_dict_key(event)] = span
|
||||||
except Exception as ex: # noqa pylint: disable=broad-except
|
except Exception as ex: # noqa pylint: disable=broad-except
|
||||||
if span is not None:
|
if span is not None and span.is_recording():
|
||||||
if span.is_recording():
|
span.set_status(Status(StatusCode.ERROR, str(ex)))
|
||||||
span.set_status(
|
|
||||||
Status(StatusCanonicalCode.INTERNAL, str(ex))
|
|
||||||
)
|
|
||||||
span.end()
|
span.end()
|
||||||
self._pop_span(event)
|
self._pop_span(event)
|
||||||
|
|
||||||
@ -111,7 +108,6 @@ class CommandTracer(monitoring.CommandListener):
|
|||||||
span.set_attribute(
|
span.set_attribute(
|
||||||
"db.mongo.duration_micros", event.duration_micros
|
"db.mongo.duration_micros", event.duration_micros
|
||||||
)
|
)
|
||||||
span.set_status(Status(StatusCanonicalCode.OK, event.reply))
|
|
||||||
span.end()
|
span.end()
|
||||||
|
|
||||||
def failed(self, event: monitoring.CommandFailedEvent):
|
def failed(self, event: monitoring.CommandFailedEvent):
|
||||||
@ -125,7 +121,7 @@ class CommandTracer(monitoring.CommandListener):
|
|||||||
span.set_attribute(
|
span.set_attribute(
|
||||||
"db.mongo.duration_micros", event.duration_micros
|
"db.mongo.duration_micros", event.duration_micros
|
||||||
)
|
)
|
||||||
span.set_status(Status(StatusCanonicalCode.UNKNOWN, event.failure))
|
span.set_status(Status(StatusCode.ERROR, event.failure))
|
||||||
span.end()
|
span.end()
|
||||||
|
|
||||||
def _pop_span(self, event):
|
def _pop_span(self, event):
|
||||||
|
@ -12,4 +12,4 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
__version__ = "0.15.dev0"
|
__version__ = "0.15b0"
|
||||||
|
@ -86,9 +86,8 @@ class TestPymongo(TestBase):
|
|||||||
span.attributes["db.mongo.duration_micros"], "duration_micros"
|
span.attributes["db.mongo.duration_micros"], "duration_micros"
|
||||||
)
|
)
|
||||||
self.assertIs(
|
self.assertIs(
|
||||||
span.status.canonical_code, trace_api.status.StatusCanonicalCode.OK
|
span.status.status_code, trace_api.status.StatusCode.UNSET
|
||||||
)
|
)
|
||||||
self.assertEqual(span.status.description, "reply")
|
|
||||||
self.assertIsNotNone(span.end_time)
|
self.assertIsNotNone(span.end_time)
|
||||||
|
|
||||||
def test_not_recording(self):
|
def test_not_recording(self):
|
||||||
@ -121,8 +120,7 @@ class TestPymongo(TestBase):
|
|||||||
span.attributes["db.mongo.duration_micros"], "duration_micros"
|
span.attributes["db.mongo.duration_micros"], "duration_micros"
|
||||||
)
|
)
|
||||||
self.assertIs(
|
self.assertIs(
|
||||||
span.status.canonical_code,
|
span.status.status_code, trace_api.status.StatusCode.ERROR,
|
||||||
trace_api.status.StatusCanonicalCode.UNKNOWN,
|
|
||||||
)
|
)
|
||||||
self.assertEqual(span.status.description, "failure")
|
self.assertEqual(span.status.description, "failure")
|
||||||
self.assertIsNotNone(span.end_time)
|
self.assertIsNotNone(span.end_time)
|
||||||
@ -143,15 +141,13 @@ class TestPymongo(TestBase):
|
|||||||
|
|
||||||
self.assertEqual(first_span.attributes["db.mongo.request_id"], "first")
|
self.assertEqual(first_span.attributes["db.mongo.request_id"], "first")
|
||||||
self.assertIs(
|
self.assertIs(
|
||||||
first_span.status.canonical_code,
|
first_span.status.status_code, trace_api.status.StatusCode.UNSET,
|
||||||
trace_api.status.StatusCanonicalCode.OK,
|
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
second_span.attributes["db.mongo.request_id"], "second"
|
second_span.attributes["db.mongo.request_id"], "second"
|
||||||
)
|
)
|
||||||
self.assertIs(
|
self.assertIs(
|
||||||
second_span.status.canonical_code,
|
second_span.status.status_code, trace_api.status.StatusCode.ERROR,
|
||||||
trace_api.status.StatusCanonicalCode.UNKNOWN,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_int_command(self):
|
def test_int_command(self):
|
||||||
|
Reference in New Issue
Block a user