Exemple #1
0
    def start_span(self, name='span'):
        """Start a span.

        :type name: str
        :param name: The name of the span.

        :rtype: :class:`~opencensus.trace.span.Span`
        :returns: The Span object.
        """
        parent_span = self.current_span()

        # If a span has remote parent span, then the parent_span.span_id
        # should be the span_id from the request header.
        if parent_span is None:
            parent_span = base.NullContextManager(
                span_id=self.span_context.span_id)

        span = trace_span.Span(name,
                               parent_span=parent_span,
                               context_tracer=self)
        with self._spans_list_condition:
            self._spans_list.append(span)
        self.span_context.span_id = span.span_id
        execution_context.set_current_span(span)
        span.start()
        return span
    def test_end_span_batch_export(self, mock_current_span):
        from opencensus.trace import span

        span = span.Span(name='test')
        exporter = mock.Mock()
        tracer = context_tracer.ContextTracer(exporter=exporter)
        tracer._spans_list = [span]
        mock_span = mock.Mock()
        mock_span.name = 'span'
        mock_span._child_spans = []
        mock_span.status = None
        mock_span.links = None
        mock_span.stack_trace = None
        mock_span.time_events = None
        mock_span.attributes = {}
        mock_span.__iter__ = mock.Mock(return_value=iter([mock_span]))
        parent_span_id = 1234
        mock_span.parent_span.span_id = parent_span_id
        mock_current_span.return_value = mock_span
        tracer.end_span()

        self.assertTrue(mock_span.finish.called)
        self.assertEqual(tracer.span_context.span_id, parent_span_id)
        self.assertTrue(tracer.exporter.export.called)
Exemple #3
0
    def test_end_leftover_spans(self):
        tracer = context_tracer.ContextTracer()
        tracer._spans_list = [span.Span(name='span')]
        tracer.finish()

        self.assertEqual(tracer._spans_list, [])
 def __init__(self, *args, **kwargs):
     self._current_span = span_module.Span('mock_span')
     execution_context.set_opencensus_tracer(self)