def test_traceback_without_error(self): s = Span(None, 'test.span') s.set_traceback() assert not s.error assert not s.get_tag(errors.ERROR_MSG) assert not s.get_tag(errors.ERROR_TYPE) assert 'in test_traceback_without_error' in s.get_tag(errors.ERROR_STACK)
def test_traceback_with_error(self): s = Span(None, 'test.span') try: 1 / 0 except ZeroDivisionError: s.set_traceback() else: assert 0, 'should have failed' assert s.error assert 'by zero' in s.get_tag(errors.ERROR_MSG) assert 'ZeroDivisionError' in s.get_tag(errors.ERROR_TYPE)
def test_get_report_hostname_default(self, get_hostname): get_hostname.return_value = 'test-hostname' # Create a context and add a span and finish it ctx = Context() span = Span(tracer=None, name='fake_span') ctx.add_span(span) span.finish() # Assert that we have not added the tag to the span yet assert span.get_tag(HOSTNAME_KEY) is None # Assert that retrieving the trace does not set the tag trace, _ = ctx.get() assert trace[0].get_tag(HOSTNAME_KEY) is None assert span.get_tag(HOSTNAME_KEY) is None
def test_get_report_hostname_disabled(self, get_hostname): get_hostname.return_value = 'test-hostname' with self.override_global_config(dict(report_hostname=False)): # Create a context and add a span and finish it ctx = Context() span = Span(tracer=None, name='fake_span') ctx.add_span(span) span.finish() # Assert that we have not added the tag to the span yet assert span.get_tag(HOSTNAME_KEY) is None # Assert that retrieving the trace does not set the tag trace, _ = ctx.get() assert trace[0].get_tag(HOSTNAME_KEY) is None assert span.get_tag(HOSTNAME_KEY) is None
def test_ctx_mgr(self): s = Span(self.tracer, 'bar') assert not s.duration assert not s.error e = Exception('boo') try: with s: time.sleep(0.01) raise e except Exception as out: assert out == e assert s.duration > 0, s.duration assert s.error assert s.get_tag(errors.ERROR_MSG) == 'boo' assert 'Exception' in s.get_tag(errors.ERROR_TYPE) assert s.get_tag(errors.ERROR_STACK) else: assert 0, 'should have failed'
def test__span_to_otel_span(self): api = APIOtel(exporter=None) trace_id = 0x32452526 span_id = 0x29025326 parent_id = 0x592153109 start_time = 683647322 end_time = start_time + 50 ctx = Context() span = Span( tracer=None, name='test_span', trace_id=trace_id, span_id=span_id, parent_id=parent_id, context=ctx, start=start_time, resource='foo_resource', service='foo_service', span_type='foo_span', ) span.finish(finish_time=end_time) span.set_tag('out.host', 'opentelemetry.io') span.set_tag('out.port', 443) span.set_tag('creator_name', 'mauricio.vasquez') otel_span = api._span_to_otel_span(span) self.assertEqual(span.name, otel_span.name) self.assertEqual(span.trace_id, otel_span.context.trace_id) self.assertEqual(span.span_id, otel_span.context.span_id) self.assertEqual(span.parent_id, otel_span.parent.span_id) self.assertEqual(span.trace_id, otel_span.parent.trace_id) self.assertEqual(start_time * 10**9, otel_span.start_time) self.assertEqual(end_time * 10**9, otel_span.end_time) self.assertEqual(span.service, otel_span.attributes['service.name']) self.assertEqual(span.resource, otel_span.attributes['resource.name']) self.assertEqual(span.span_type, otel_span.attributes['component']) self.assertEqual(span.get_tag('out.host'), otel_span.attributes['peer.hostname']) self.assertEqual(span.get_tag('out.port'), otel_span.attributes['peer.port']) self.assertEqual(span.get_tag('creator_name'), otel_span.attributes['creator_name']) # test parent None span = Span( tracer=None, name='test_span', trace_id=trace_id, span_id=span_id, parent_id=None, context=ctx, start=start_time, ) span.finish(finish_time=end_time) otel_span = api._span_to_otel_span(span) self.assertIsNone(otel_span.parent)