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