def test_tracer_provider_accepts_concurrent_multi_span_processor(self): span_processor = trace.ConcurrentMultiSpanProcessor(2) tracer_provider = trace.TracerProvider( active_span_processor=span_processor) # pylint: disable=protected-access self.assertEqual(span_processor, tracer_provider._active_span_processor)
def test_force_flush_late_by_span_processor(self): multi_processor = trace.ConcurrentMultiSpanProcessor(5) late_mock = mock.Mock(spec=trace.SpanProcessor) late_mock.force_flush = mock.Mock(return_value=False) mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(0, 4)] mocks.insert(0, late_mock) for mock_processor in mocks: multi_processor.add_span_processor(mock_processor) flushed = multi_processor.force_flush() self.assertFalse(flushed) for mock_processor in mocks: self.assertEqual(1, mock_processor.force_flush.call_count) multi_processor.shutdown()
def test_force_flush_late_by_timeout(self): multi_processor = trace.ConcurrentMultiSpanProcessor(5) wait_event = Event() def delayed_flush(_): wait_event.wait() late_mock = mock.Mock(spec=trace.SpanProcessor) late_mock.force_flush = mock.Mock(side_effect=delayed_flush) mocks = [mock.Mock(spec=trace.SpanProcessor) for _ in range(0, 4)] mocks.insert(0, late_mock) for mock_processor in mocks: multi_processor.add_span_processor(mock_processor) flushed = multi_processor.force_flush(timeout_millis=10) # let the thread executing the late_mock continue wait_event.set() self.assertFalse(flushed) for mock_processor in mocks: self.assertEqual(1, mock_processor.force_flush.call_count) multi_processor.shutdown()
def create_multi_span_processor( self, ) -> trace.ConcurrentMultiSpanProcessor: return trace.ConcurrentMultiSpanProcessor(3)