def test_no_propagators(self): propagator = CompositePropagator([]) new_carrier = {} propagator.inject(new_carrier) self.assertEqual(new_carrier, {}) context = propagator.extract(carrier=new_carrier, context={}, getter=get_as_list) self.assertEqual(context, {})
def test_single_propagator(self): propagator = CompositePropagator([self.mock_propagator_0]) new_carrier = {} propagator.inject(new_carrier) self.assertEqual(new_carrier, {"mock-0": "data"}) context = propagator.extract(carrier=new_carrier, context={}, getter=get_as_list) self.assertEqual(context, {"mock-0": "context"})
def test_multiple_propagators_same_key(self): # test that when multiple propagators extract/inject the same # key, the later propagator values are extracted/injected propagator = CompositePropagator( [self.mock_propagator_0, self.mock_propagator_2]) new_carrier = {} propagator.inject(new_carrier) self.assertEqual(new_carrier, {"mock-0": "data2"}) context = propagator.extract(carrier=new_carrier, context={}, getter=get_as_list) self.assertEqual(context, {"mock-0": "context2"})
def test_fields(self): propagator = CompositePropagator([ self.mock_propagator_0, self.mock_propagator_1, self.mock_propagator_2, ]) mock_setter = Mock() propagator.inject({}, setter=mock_setter) inject_fields = set() for mock_call in mock_setter.mock_calls: inject_fields.add(mock_call[1][1]) self.assertEqual(inject_fields, propagator.fields)
def init_propagation(self) -> None: '''Initialize requested context propagation protocols.''' propagator_list = [] for prop_format in self._config.agent_config.propagation_formats: if prop_format == config_pb2.PropagationFormat.TRACECONTEXT: from opentelemetry.trace.propagation.tracecontext \ import TraceContextTextMapPropagator # pylint: disable=C0415 propagator_list += [TraceContextTextMapPropagator()] logger.debug('Adding TRACECONTEXT trace propagator to list.') if prop_format == config_pb2.PropagationFormat.B3: from opentelemetry.propagators.b3 import B3MultiFormat # pylint: disable=C0415 propagator_list += [B3MultiFormat()] logger.debug('Adding B3 trace propagator to list.') if len(propagator_list) == 0: logger.debug('No propagators have been initialized.') logger.debug('propagator_list: %s', str(propagator_list)) from opentelemetry.propagate import set_global_textmap # pylint: disable=C0415 from opentelemetry.propagators.composite import CompositePropagator # pylint: disable=C0415 composite_propagators = CompositePropagator(propagator_list) set_global_textmap(composite_propagators)
trace.get_tracer_provider().add_span_processor( DatadogExportSpanProcessor( DatadogSpanExporter( agent_url="http://*****:*****@app.route("/server_request") def server_request(): param = request.args.get("param") with tracer.start_as_current_span("server-inner"): if param == "error": raise ValueError("forced server error") return "served: {}".format(param)