188 lines
12 KiB
PHP
188 lines
12 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace OpenTelemetry\Tests\Integration\SDK\Resource;
|
|
|
|
use AssertWell\PHPUnitGlobalState\EnvironmentVariables;
|
|
use OpenTelemetry\SDK\Resource\ResourceInfoFactory;
|
|
use OpenTelemetry\SemConv\ResourceAttributes;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* @coversNothing
|
|
*/
|
|
class ResourceInfoFactoryTest extends TestCase
|
|
{
|
|
use EnvironmentVariables;
|
|
|
|
public function tearDown(): void
|
|
{
|
|
$this->restoreEnvironmentVariables();
|
|
}
|
|
|
|
public function test_all_default_resources(): void
|
|
{
|
|
$resource = ResourceInfoFactory::defaultResource();
|
|
|
|
$this->assertSame(ResourceAttributes::SCHEMA_URL, $resource->getSchemaUrl());
|
|
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::HOST_NAME));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::HOST_ARCH));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::OS_TYPE));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::OS_DESCRIPTION));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::OS_NAME));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::OS_VERSION));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_PID));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_EXECUTABLE_PATH));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_COMMAND));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_COMMAND_ARGS));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_RUNTIME_NAME));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_RUNTIME_VERSION));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_NAME));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_LANGUAGE));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_VERSION));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::SERVICE_NAME));
|
|
|
|
$this->assertEquals('opentelemetry', $resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_NAME));
|
|
$this->assertEquals('php', $resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_LANGUAGE));
|
|
$this->assertEquals('unknown_service:php', $resource->getAttributes()->get(ResourceAttributes::SERVICE_NAME));
|
|
}
|
|
|
|
public function test_none_default_resources(): void
|
|
{
|
|
$this->setEnvironmentVariable('OTEL_PHP_DETECTORS', 'none');
|
|
|
|
$resource = ResourceInfoFactory::defaultResource();
|
|
|
|
$this->assertNull($resource->getSchemaUrl());
|
|
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::HOST_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::HOST_ARCH));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_TYPE));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_DESCRIPTION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_VERSION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_PID));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_EXECUTABLE_PATH));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_COMMAND));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_COMMAND_ARGS));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_RUNTIME_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_RUNTIME_VERSION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_LANGUAGE));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_VERSION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::SERVICE_NAME));
|
|
}
|
|
|
|
public function test_env_default_resources(): void
|
|
{
|
|
$this->setEnvironmentVariable('OTEL_PHP_DETECTORS', 'env');
|
|
$this->setEnvironmentVariable('OTEL_SERVICE_NAME', 'test-service');
|
|
|
|
$resource = ResourceInfoFactory::defaultResource();
|
|
|
|
$this->assertSame(ResourceAttributes::SCHEMA_URL, $resource->getSchemaUrl());
|
|
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::HOST_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::HOST_ARCH));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_TYPE));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_DESCRIPTION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_VERSION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_PID));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_EXECUTABLE_PATH));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_COMMAND));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_COMMAND_ARGS));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_RUNTIME_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_RUNTIME_VERSION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_LANGUAGE));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_VERSION));
|
|
|
|
$this->assertEquals('test-service', $resource->getAttributes()->get(ResourceAttributes::SERVICE_NAME));
|
|
}
|
|
|
|
public function test_os_and_host_default_resources(): void
|
|
{
|
|
$this->setEnvironmentVariable('OTEL_PHP_DETECTORS', 'os,host');
|
|
|
|
$resource = ResourceInfoFactory::defaultResource();
|
|
|
|
$this->assertSame(ResourceAttributes::SCHEMA_URL, $resource->getSchemaUrl());
|
|
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::HOST_NAME));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::HOST_ARCH));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::OS_TYPE));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::OS_DESCRIPTION));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::OS_NAME));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::OS_VERSION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_PID));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_EXECUTABLE_PATH));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_COMMAND));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_COMMAND_ARGS));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_RUNTIME_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_RUNTIME_VERSION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_LANGUAGE));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_VERSION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::SERVICE_NAME));
|
|
}
|
|
|
|
public function test_process_and_process_runtime_default_resources(): void
|
|
{
|
|
$this->setEnvironmentVariable('OTEL_PHP_DETECTORS', 'process,process_runtime');
|
|
|
|
$resource = ResourceInfoFactory::defaultResource();
|
|
|
|
$this->assertSame(ResourceAttributes::SCHEMA_URL, $resource->getSchemaUrl());
|
|
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::HOST_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::HOST_ARCH));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_TYPE));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_DESCRIPTION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_VERSION));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_PID));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_EXECUTABLE_PATH));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_COMMAND));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_COMMAND_ARGS));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_RUNTIME_NAME));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_RUNTIME_VERSION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_LANGUAGE));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_VERSION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::SERVICE_NAME));
|
|
}
|
|
|
|
public function test_sdk_and_sdk_provided_default_resources(): void
|
|
{
|
|
$this->setEnvironmentVariable('OTEL_PHP_DETECTORS', 'sdk,sdk_provided');
|
|
|
|
$resource = ResourceInfoFactory::defaultResource();
|
|
|
|
$this->assertSame(ResourceAttributes::SCHEMA_URL, $resource->getSchemaUrl());
|
|
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::HOST_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::HOST_ARCH));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_TYPE));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_DESCRIPTION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::OS_VERSION));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_PID));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_EXECUTABLE_PATH));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_COMMAND));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_COMMAND_ARGS));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_RUNTIME_NAME));
|
|
$this->assertNull($resource->getAttributes()->get(ResourceAttributes::PROCESS_RUNTIME_VERSION));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_NAME));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_LANGUAGE));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_VERSION));
|
|
$this->assertNotNull($resource->getAttributes()->get(ResourceAttributes::SERVICE_NAME));
|
|
|
|
$this->assertEquals('opentelemetry', $resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_NAME));
|
|
$this->assertEquals('php', $resource->getAttributes()->get(ResourceAttributes::TELEMETRY_SDK_LANGUAGE));
|
|
$this->assertEquals('unknown_service:php', $resource->getAttributes()->get(ResourceAttributes::SERVICE_NAME));
|
|
}
|
|
}
|