def test_stop_non_root(self, mock_time): tracer = MockTracer() tracer.set_transport_configured(configured=True) tracer.get_context().push(zipkin.create_attrs_for_span()) context = tracer.zipkin_span( service_name="test_service", span_name="test_span", ) context.start() context.stop() assert len(tracer.get_spans()) == 1 endpoint = create_endpoint(service_name="test_service") assert tracer.get_spans()[0] == Span( trace_id=context.zipkin_attrs.trace_id, name="test_span", parent_id=context.zipkin_attrs.parent_span_id, span_id=context.zipkin_attrs.span_id, kind=Kind.LOCAL, timestamp=123, duration=0, annotations={}, local_endpoint=endpoint, remote_endpoint=None, tags={}, ) assert tracer.is_transport_configured() is True
def test_stop_non_root_ts_duration_overridden(self): tracer = MockTracer() tracer.set_transport_configured(configured=True) tracer.get_context().push(zipkin.create_attrs_for_span()) ts = time.time() context = tracer.zipkin_span( service_name='test_service', span_name='test_span', timestamp=ts, duration=25, ) context.start() context.stop() assert len(tracer.get_spans()) == 1 endpoint = create_endpoint(service_name='test_service') assert tracer.get_spans()[0] == Span( trace_id=context.zipkin_attrs.trace_id, name='test_span', parent_id=context.zipkin_attrs.parent_span_id, span_id=context.zipkin_attrs.span_id, kind=Kind.LOCAL, timestamp=ts, duration=25, annotations={}, local_endpoint=endpoint, remote_endpoint=None, tags={}, ) assert tracer.is_transport_configured() is True
def test_start_root_span_not_sampled(self, mock_log_ctx): transport = MockTransportHandler() tracer = MockTracer() context = tracer.zipkin_span( service_name='test_service', span_name='test_span', transport_handler=transport, sample_rate=0.0, ) context.start() assert context.zipkin_attrs is not None assert mock_log_ctx.call_count == 0 assert tracer.is_transport_configured() is False
def test_stop_root(self): transport = MockTransportHandler() tracer = MockTracer() context = tracer.zipkin_span( service_name='test_service', span_name='test_span', transport_handler=transport, sample_rate=100.0, ) context.start() with mock.patch.object(context, 'logging_context') as mock_log_ctx: context.stop() assert mock_log_ctx.stop.call_count == 1 # Test that we reset everything after calling stop() assert context.logging_context is None assert tracer.is_transport_configured() is False assert len(tracer.get_spans()) == 0
def test_start_root_span_redef_transport(self, mock_log, mock_log_ctx): # Transport is already setup, so we should not override it # and log a message to inform the user. transport = MockTransportHandler() tracer = MockTracer() context = tracer.zipkin_span( service_name='test_service', span_name='test_span', transport_handler=transport, sample_rate=100.0, ) tracer.set_transport_configured(configured=True) context.start() assert context.zipkin_attrs is not None assert mock_log_ctx.call_count == 0 assert tracer.is_transport_configured() is True assert mock_log.call_count == 1
def test_start_root_span_not_sampled_firehose(self, mock_log_ctx): # This request is not sampled, but firehose is setup. So we need to # setup the transport anyway. transport = MockTransportHandler() firehose = MockTransportHandler() tracer = MockTracer() context = tracer.zipkin_span( service_name='test_service', span_name='test_span', transport_handler=transport, firehose_handler=firehose, sample_rate=0.0, ) context.start() assert context.zipkin_attrs is not None assert mock_log_ctx.call_count == 1 assert mock_log_ctx.return_value.start.call_count == 1 assert tracer.is_transport_configured() is True
def test_start_root_span(self, mock_time, mock_log_ctx): transport = MockTransportHandler() firehose = MockTransportHandler() tracer = MockTracer() context = tracer.zipkin_span( service_name="test_service", span_name="test_span", transport_handler=transport, firehose_handler=firehose, sample_rate=100.0, max_span_batch_size=50, encoding=Encoding.V2_JSON, ) context.start() assert context.zipkin_attrs is not None assert context.start_timestamp == 123 assert mock_log_ctx.call_args == mock.call( context.zipkin_attrs, mock.ANY, "test_span", transport, True, context.get_tracer, "test_service", binary_annotations={}, add_logging_annotation=False, client_context=False, max_span_batch_size=50, firehose_handler=firehose, encoding=Encoding.V2_JSON, annotations={}, ) assert mock_log_ctx.return_value.start.call_count == 1 assert tracer.is_transport_configured() is True