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)
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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'
Exemplo n.º 6
0
    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)