opentelemetry-php/tests/Unit/SDK/SdkTest.php

97 lines
3.1 KiB
PHP

<?php
declare(strict_types=1);
namespace OpenTelemetry\Tests\Unit\SDK;
use OpenTelemetry\Context\Propagation\TextMapPropagatorInterface;
use OpenTelemetry\SDK\Common\Configuration\Variables;
use OpenTelemetry\SDK\Logs\LoggerProviderInterface;
use OpenTelemetry\SDK\Metrics\MeterProviderInterface;
use OpenTelemetry\SDK\Sdk;
use OpenTelemetry\SDK\SdkBuilder;
use OpenTelemetry\SDK\Trace\TracerProviderInterface;
use OpenTelemetry\Tests\TestState;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
#[CoversClass(Sdk::class)]
class SdkTest extends TestCase
{
use TestState;
private TextMapPropagatorInterface $propagator;
private MeterProviderInterface $meterProvider;
private TracerProviderInterface $tracerProvider;
private LoggerProviderInterface $loggerProvider;
public function setUp(): void
{
$this->propagator = $this->createMock(TextMapPropagatorInterface::class);
$this->meterProvider = $this->createMock(MeterProviderInterface::class);
$this->tracerProvider = $this->createMock(TracerProviderInterface::class);
$this->loggerProvider = $this->createMock(LoggerProviderInterface::class);
}
public function tearDown(): void
{
self::restoreEnvironmentVariables();
}
public function test_is_not_disabled_by_default(): void
{
$this->assertFalse(Sdk::isDisabled());
}
#[DataProvider('disabledProvider')]
public function test_is_disabled(string $value, bool $expected): void
{
self::setEnvironmentVariable('OTEL_SDK_DISABLED', $value);
$this->assertSame($expected, Sdk::isDisabled());
}
public static function disabledProvider(): array
{
return [
['true', true],
['false', false],
];
}
#[DataProvider('instrumentationDisabledProvider')]
public function test_is_instrumentation_disabled(string $value, string $name, bool $expected): void
{
$this->setEnvironmentVariable(Variables::OTEL_PHP_DISABLED_INSTRUMENTATIONS, $value);
$this->assertSame($expected, Sdk::isInstrumentationDisabled($name));
}
public static function instrumentationDisabledProvider(): array
{
return [
['foo,bar', 'foo', true],
['foo,bar', 'bar', true],
['', 'foo', false],
['foo', 'foo', true],
['all', 'foo', true],
['all,bar', 'foo', false],
['all,foo', 'foo', true],
];
}
public function test_builder(): void
{
$this->assertInstanceOf(SdkBuilder::class, Sdk::builder());
}
public function test_getters(): void
{
$sdk = new Sdk($this->tracerProvider, $this->meterProvider, $this->loggerProvider, $this->propagator);
$this->assertSame($this->propagator, $sdk->getPropagator());
$this->assertSame($this->meterProvider, $sdk->getMeterProvider());
$this->assertSame($this->tracerProvider, $sdk->getTracerProvider());
$this->assertSame($this->loggerProvider, $sdk->getLoggerProvider());
}
}