restoreEnvironmentVariables(); } /** * @dataProvider propagatorsProvider * @psalm-suppress ArgumentTypeCoercion */ public function test_create(string $propagators, string $expected): void { $this->setEnvironmentVariable(Variables::OTEL_PROPAGATORS, $propagators); $propagator = (new PropagatorFactory())->create(); $this->assertInstanceOf($expected, $propagator); } public static function propagatorsProvider(): array { return [ [KnownValues::VALUE_BAGGAGE, BaggagePropagator::class], [KnownValues::VALUE_TRACECONTEXT, TraceContextPropagator::class], [KnownValues::VALUE_B3, B3Propagator::class], [KnownValues::VALUE_CLOUD_TRACE, CloudTracePropagator::class], [KnownValues::VALUE_CLOUD_TRACE_ONEWAY, CloudTracePropagator::class], [KnownValues::VALUE_JAEGER, JaegerPropagator::class], [KnownValues::VALUE_JAEGER_BAGGAGE, JaegerBaggagePropagator::class], [KnownValues::VALUE_B3_MULTI, B3Propagator::class], [KnownValues::VALUE_NONE, NoopTextMapPropagator::class], [sprintf('%s,%s', KnownValues::VALUE_B3, KnownValues::VALUE_BAGGAGE), MultiTextMapPropagator::class], ['unknown', NoopTextMapPropagator::class], ]; } /** * @dataProvider unimplementedPropagatorProvider */ public function test_unimplemented_propagators(string $propagator): void { $this->setEnvironmentVariable(Variables::OTEL_PROPAGATORS, $propagator); $propagator = (new PropagatorFactory())->create(); $this->assertInstanceOf(NoopTextMapPropagator::class, $propagator); } public static function unimplementedPropagatorProvider(): array { return [ [KnownValues::VALUE_OTTRACE], [KnownValues::VALUE_XRAY], ]; } }