def test_extract(): tracer = Tracer() noop_span = tracer._noop_span bin_carrier = bytearray() span_ctx = tracer.extract(Format.BINARY, carrier=bin_carrier) assert noop_span.context == span_ctx text_carrier = {} span_ctx = tracer.extract(Format.TEXT_MAP, carrier=text_carrier) assert noop_span.context == span_ctx
def test_join_trace(): tracer = Tracer() span_ctx = tracer.extract(format=Format.TEXT_MAP, carrier={}) span = tracer.start_span(operation_name='test', references=opentracing.child_of(span_ctx)) span.set_tag('x', 'y') span.set_baggage_item('a', 'b') span.log_event('z') child = tracer.start_span(operation_name='child', references=opentracing.child_of(span.context)) child.log_event('w') child.finish() span.finish()
def incoming_trace(operation: str, request: Request, tracer: Tracer) -> Generator[Span, None, None]: span_context = tracer.extract(format=Format.HTTP_HEADERS, carrier=dict(request.headers)) params = {} if span_context: params["child_of"] = span_context with tracer.start_span(operation, **params) as span: span.set_tag('http.url', request.url) remote_ip = request.client.host if remote_ip: span.set_tag(tags.PEER_HOST_IPV4, remote_ip) remote_port = request.client.port if remote_port: span.set_tag(tags.PEER_PORT, remote_port) yield span