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
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