def test_started(self):
     tracer = MockTracer()
     tracing = CommandTracing(tracer, span_tags=dict(one=123))
     event = MockEvent()
     tracing.started(event)
     scope = tracing._scopes.get('request_id')
     span = scope.span
     assert span.operation_name == 'someOperation'
     tags = span.tags
     assert tags['one'] == 123
     assert tags['command.name'] == 'someOperation'
     assert tags['command'] == json.dumps(event.command)
     assert tags['namespace'] == 'someDatabase.someCollection'
     assert tags[ext_tags.COMPONENT] == 'PyMongo'
    def test_sources_global_tracer_helper_by_default(self):
        if not hasattr(opentracing, 'global_tracer'):
            pytest.skip()

        with mock.patch('opentracing.global_tracer') as gt:
            gt.return_value = True
            tracing = CommandTracing()
            assert tracing._tracer is True
            assert gt.called
    def test_failed_existing_span(self):
        tracer = MockTracer()
        tracing = CommandTracing(tracer, span_tags=dict(one=123))
        event = MockEvent()
        tracing.started(event)
        scope = tracing._scopes.get('request_id')
        tracing.failed(event)
        assert tracing._scopes.get('request_id') is None

        tags = scope.span.tags
        assert tags['event.failure'] == json.dumps(event.failure)
        assert tags['reported_duration'] == event.duration_micros
Esempio n. 4
0
    def test_failed_existing_span(self):
        tracer = MockTracer()
        tracing = CommandTracing(tracer, span_tags=dict(one=123))
        event = MockEvent()
        event.failure = {'errmsg': 'error message', 'codeName': 'SomeError'}
        tracing.started(event)
        scope = tracing._scopes.get('request_id')
        tracing.failed(event)
        assert tracing._scopes.get('request_id') is None

        tags = scope.span.tags
        assert tags['event.failure'] == json.dumps(event.failure)
        assert tags['reported_duration'] == event.duration_micros
        assert tags['sfx.error.message'] == event.failure['errmsg']
        assert tags['sfx.error.kind'] == event.failure['codeName']
 def test_failed_no_existing_scope(self):
     tracer = MockTracer()
     tracing = CommandTracing(tracer, span_tags=dict(one=123))
     tracing.failed(MockEvent())
 def test_sources_span_tags(self):
     assert CommandTracing()._span_tags == {}
     desired_tags = dict(one=123)
     assert CommandTracing(
         span_tags=desired_tags)._span_tags is desired_tags
 def test_sources_global_tracer_by_default(self):
     tracing = CommandTracing()
     assert tracing._tracer is opentracing.tracer
 def test_sources_tracer(self):
     tracer = MockTracer()
     tracing = CommandTracing(tracer)
     assert tracing._tracer == tracer