From 6a0e415a5bd6ddc0e266673ab433c6f279c985e1 Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Tue, 5 Mar 2024 09:33:45 +1100 Subject: [PATCH 01/11] split config into own package --- deptrac.yaml | 7 +++++ phpstan.neon.dist | 4 +-- .../Accessor}/ClassConstantAccessor.php | 2 +- .../Configuration.php | 28 ++++++------------- .../Configuration => Config}/Defaults.php | 2 +- .../Configuration => Config}/KnownValues.php | 2 +- .../Parser/BooleanParser.php | 2 +- .../Parser/ListParser.php | 2 +- .../Parser/MapParser.php | 2 +- .../Parser/RatioParser.php | 2 +- .../Resolver/CompositeResolver.php | 4 +-- .../Resolver/EnvironmentResolver.php | 4 +-- .../Resolver/PhpIniAccessor.php | 2 +- .../Resolver/PhpIniResolver.php | 4 +-- .../Resolver/ResolverInterface.php | 2 +- .../Configuration => Config}/ValueTypes.php | 2 +- .../VariableTypes.php | 2 +- .../Configuration => Config}/Variables.php | 2 +- src/Contrib/Otlp/LogsExporterFactory.php | 6 ++-- src/Contrib/Otlp/MetricExporterFactory.php | 6 ++-- src/Contrib/Otlp/OtlpUtil.php | 4 +-- src/Contrib/Otlp/Protocols.php | 2 +- src/Contrib/Otlp/SpanExporterFactory.php | 6 ++-- src/Contrib/Zipkin/SpanExporterFactory.php | 4 +-- src/SDK/Logs/ExporterFactory.php | 4 +-- src/SDK/Logs/LogRecordLimitsBuilder.php | 4 +-- src/SDK/Logs/LogRecordProcessorFactory.php | 8 +++--- src/SDK/Metrics/MeterProviderFactory.php | 6 ++-- src/SDK/Propagation/PropagatorFactory.php | 4 +-- src/SDK/Propagation/_register.php | 6 ++-- src/SDK/Resource/Detectors/Environment.php | 4 +-- src/SDK/Resource/ResourceInfoFactory.php | 6 ++-- src/SDK/Sdk.php | 4 +-- src/SDK/SdkAutoloader.php | 4 +-- src/SDK/Trace/ExporterFactory.php | 4 +-- src/SDK/Trace/SamplerFactory.php | 6 ++-- src/SDK/Trace/SpanLimitsBuilder.php | 4 +-- src/SDK/Trace/SpanProcessorFactory.php | 6 ++-- tests/Integration/SDK/TracerTest.php | 2 +- .../ConfigurationTest.php | 14 +++++----- .../Parser/BooleanParserTest.php | 6 ++-- .../Parser/ListParserTest.php | 6 ++-- .../Parser/MapParserTest.php | 8 +++--- .../Parser/RatioParserTest.php | 6 ++-- .../Resolver/CompositeResolverTest.php | 12 ++++---- .../Resolver/EnvironmentResolverTest.php | 6 ++-- .../Resolver/PhpIniResolverTest.php | 8 +++--- .../Contrib/Otlp/LogsExporterFactoryTest.php | 4 +-- .../Otlp/MetricExporterFactoryTest.php | 4 +-- tests/Unit/Contrib/Otlp/OtlpUtilTest.php | 2 +- .../Contrib/Otlp/SpanExporterFactoryTest.php | 4 +-- .../Common/Util/ClassConstantAccessorTest.php | 4 +-- .../Logs/LogRecordProcessorFactoryTest.php | 2 +- .../SDK/Metrics/MeterProviderFactoryTest.php | 4 +-- .../SDK/Propagation/PropagatorFactoryTest.php | 4 +-- tests/Unit/SDK/SdkAutoloaderTest.php | 2 +- tests/Unit/SDK/SdkTest.php | 2 +- 57 files changed, 135 insertions(+), 138 deletions(-) rename src/{SDK/Common/Util => Config/Accessor}/ClassConstantAccessor.php (95%) rename src/{SDK/Common/Configuration => Config}/Configuration.php (86%) rename src/{SDK/Common/Configuration => Config}/Defaults.php (99%) rename src/{SDK/Common/Configuration => Config}/KnownValues.php (99%) rename src/{SDK/Common/Configuration => Config}/Parser/BooleanParser.php (91%) rename src/{SDK/Common/Configuration => Config}/Parser/ListParser.php (89%) rename src/{SDK/Common/Configuration => Config}/Parser/MapParser.php (94%) rename src/{SDK/Common/Configuration => Config}/Parser/RatioParser.php (93%) rename src/{SDK/Common/Configuration => Config}/Resolver/CompositeResolver.php (92%) rename src/{SDK/Common/Configuration => Config}/Resolver/EnvironmentResolver.php (86%) rename src/{SDK/Common/Configuration => Config}/Resolver/PhpIniAccessor.php (82%) rename src/{SDK/Common/Configuration => Config}/Resolver/PhpIniResolver.php (87%) rename src/{SDK/Common/Configuration => Config}/Resolver/ResolverInterface.php (79%) rename src/{SDK/Common/Configuration => Config}/ValueTypes.php (99%) rename src/{SDK/Common/Configuration => Config}/VariableTypes.php (95%) rename src/{SDK/Common/Configuration => Config}/Variables.php (99%) rename tests/Unit/{SDK/Common/Configuration => Config}/ConfigurationTest.php (97%) rename tests/Unit/{SDK/Common/Configuration => Config}/Parser/BooleanParserTest.php (91%) rename tests/Unit/{SDK/Common/Configuration => Config}/Parser/ListParserTest.php (81%) rename tests/Unit/{SDK/Common/Configuration => Config}/Parser/MapParserTest.php (84%) rename tests/Unit/{SDK/Common/Configuration => Config}/Parser/RatioParserTest.php (88%) rename tests/Unit/{SDK/Common/Configuration => Config}/Resolver/CompositeResolverTest.php (86%) rename tests/Unit/{SDK/Common/Configuration => Config}/Resolver/EnvironmentResolverTest.php (92%) rename tests/Unit/{SDK/Common/Configuration => Config}/Resolver/PhpIniResolverTest.php (83%) diff --git a/deptrac.yaml b/deptrac.yaml index 8507328db..74d2be469 100644 --- a/deptrac.yaml +++ b/deptrac.yaml @@ -25,6 +25,10 @@ deptrac: collectors: - type: directory value: src/SDK/.* + - name: Config + collectors: + - type: directory + value: src/Config/.* - name: Context collectors: - type: directory @@ -83,6 +87,7 @@ deptrac: - FFI SemConv: ~ API: + - Config - Context - PsrLog SDK: @@ -91,6 +96,8 @@ deptrac: - PsrHttp - HttpPlug - Composer + Config: + - PsrLog Contrib: - +SDK - +OtelProto diff --git a/phpstan.neon.dist b/phpstan.neon.dist index fc15014fb..676c310bd 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -15,8 +15,8 @@ parameters: - message: "#Call to an undefined method .*#" paths: - - tests/Unit/SDK/Common/Configuration/Resolver/PhpIniResolverTest.php - - tests/Unit/SDK/Common/Configuration/Resolver/CompositeResolverTest.php + - tests/Unit/Config/Resolver/PhpIniResolverTest.php + - tests/Unit/Config/Resolver/CompositeResolverTest.php - message: "#Call to an undefined method .*:allows.*#" paths: diff --git a/src/SDK/Common/Util/ClassConstantAccessor.php b/src/Config/Accessor/ClassConstantAccessor.php similarity index 95% rename from src/SDK/Common/Util/ClassConstantAccessor.php rename to src/Config/Accessor/ClassConstantAccessor.php index b4ab1198e..02ad5685a 100644 --- a/src/SDK/Common/Util/ClassConstantAccessor.php +++ b/src/Config/Accessor/ClassConstantAccessor.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Util; +namespace OpenTelemetry\Config\Accessor; use LogicException; diff --git a/src/SDK/Common/Configuration/Configuration.php b/src/Config/Configuration.php similarity index 86% rename from src/SDK/Common/Configuration/Configuration.php rename to src/Config/Configuration.php index 577c85708..fc61c890f 100644 --- a/src/SDK/Common/Configuration/Configuration.php +++ b/src/Config/Configuration.php @@ -2,16 +2,14 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration; - -use InvalidArgumentException; -use OpenTelemetry\API\Behavior\LogsMessagesTrait; -use OpenTelemetry\SDK\Common\Configuration\Parser\BooleanParser; -use OpenTelemetry\SDK\Common\Configuration\Parser\ListParser; -use OpenTelemetry\SDK\Common\Configuration\Parser\MapParser; -use OpenTelemetry\SDK\Common\Configuration\Parser\RatioParser; -use OpenTelemetry\SDK\Common\Configuration\Resolver\CompositeResolver; -use OpenTelemetry\SDK\Common\Util\ClassConstantAccessor; +namespace OpenTelemetry\Config; + +use OpenTelemetry\Config\Accessor\ClassConstantAccessor; +use OpenTelemetry\Config\Parser\BooleanParser; +use OpenTelemetry\Config\Parser\ListParser; +use OpenTelemetry\Config\Parser\MapParser; +use OpenTelemetry\Config\Parser\RatioParser; +use OpenTelemetry\Config\Resolver\CompositeResolver; use UnexpectedValueException; /** @@ -22,8 +20,6 @@ */ class Configuration { - use LogsMessagesTrait; - public static function has(string $name): bool { return CompositeResolver::instance()->hasVariable($name); @@ -59,13 +55,7 @@ public static function getBoolean(string $key, bool $default = null): bool ) ); - try { - return BooleanParser::parse($resolved); - } catch (InvalidArgumentException) { - self::logWarning(sprintf('Invalid boolean value "%s" interpreted as "false" for %s', $resolved, $key)); - - return false; - } + return BooleanParser::parse($resolved); } public static function getMixed(string $key, $default = null) diff --git a/src/SDK/Common/Configuration/Defaults.php b/src/Config/Defaults.php similarity index 99% rename from src/SDK/Common/Configuration/Defaults.php rename to src/Config/Defaults.php index 7228270a6..419858d4c 100644 --- a/src/SDK/Common/Configuration/Defaults.php +++ b/src/Config/Defaults.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration; +namespace OpenTelemetry\Config; /** * Default values for environment variables defined by the OpenTelemetry specification and language specific variables for the PHP SDK. diff --git a/src/SDK/Common/Configuration/KnownValues.php b/src/Config/KnownValues.php similarity index 99% rename from src/SDK/Common/Configuration/KnownValues.php rename to src/Config/KnownValues.php index a7636214c..8b178a510 100644 --- a/src/SDK/Common/Configuration/KnownValues.php +++ b/src/Config/KnownValues.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration; +namespace OpenTelemetry\Config; use Psr\Log\LogLevel; diff --git a/src/SDK/Common/Configuration/Parser/BooleanParser.php b/src/Config/Parser/BooleanParser.php similarity index 91% rename from src/SDK/Common/Configuration/Parser/BooleanParser.php rename to src/Config/Parser/BooleanParser.php index 4141c61ef..76ac2178e 100644 --- a/src/SDK/Common/Configuration/Parser/BooleanParser.php +++ b/src/Config/Parser/BooleanParser.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration\Parser; +namespace OpenTelemetry\Config\Parser; use InvalidArgumentException; diff --git a/src/SDK/Common/Configuration/Parser/ListParser.php b/src/Config/Parser/ListParser.php similarity index 89% rename from src/SDK/Common/Configuration/Parser/ListParser.php rename to src/Config/Parser/ListParser.php index f27b16597..97fd42dae 100644 --- a/src/SDK/Common/Configuration/Parser/ListParser.php +++ b/src/Config/Parser/ListParser.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration\Parser; +namespace OpenTelemetry\Config\Parser; class ListParser { diff --git a/src/SDK/Common/Configuration/Parser/MapParser.php b/src/Config/Parser/MapParser.php similarity index 94% rename from src/SDK/Common/Configuration/Parser/MapParser.php rename to src/Config/Parser/MapParser.php index 7e0d44534..36419ffa6 100644 --- a/src/SDK/Common/Configuration/Parser/MapParser.php +++ b/src/Config/Parser/MapParser.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration\Parser; +namespace OpenTelemetry\Config\Parser; use InvalidArgumentException; diff --git a/src/SDK/Common/Configuration/Parser/RatioParser.php b/src/Config/Parser/RatioParser.php similarity index 93% rename from src/SDK/Common/Configuration/Parser/RatioParser.php rename to src/Config/Parser/RatioParser.php index f0fe32100..c1256ab97 100644 --- a/src/SDK/Common/Configuration/Parser/RatioParser.php +++ b/src/Config/Parser/RatioParser.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration\Parser; +namespace OpenTelemetry\Config\Parser; use InvalidArgumentException; use RangeException; diff --git a/src/SDK/Common/Configuration/Resolver/CompositeResolver.php b/src/Config/Resolver/CompositeResolver.php similarity index 92% rename from src/SDK/Common/Configuration/Resolver/CompositeResolver.php rename to src/Config/Resolver/CompositeResolver.php index 1160129be..320d4038a 100644 --- a/src/SDK/Common/Configuration/Resolver/CompositeResolver.php +++ b/src/Config/Resolver/CompositeResolver.php @@ -2,9 +2,9 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration\Resolver; +namespace OpenTelemetry\Config\Resolver; -use OpenTelemetry\SDK\Common\Configuration\Configuration; +use OpenTelemetry\Config\Configuration; /** * @internal diff --git a/src/SDK/Common/Configuration/Resolver/EnvironmentResolver.php b/src/Config/Resolver/EnvironmentResolver.php similarity index 86% rename from src/SDK/Common/Configuration/Resolver/EnvironmentResolver.php rename to src/Config/Resolver/EnvironmentResolver.php index 453f98e39..6604b914b 100644 --- a/src/SDK/Common/Configuration/Resolver/EnvironmentResolver.php +++ b/src/Config/Resolver/EnvironmentResolver.php @@ -2,9 +2,9 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration\Resolver; +namespace OpenTelemetry\Config\Resolver; -use OpenTelemetry\SDK\Common\Configuration\Configuration; +use OpenTelemetry\Config\Configuration; /** * @internal diff --git a/src/SDK/Common/Configuration/Resolver/PhpIniAccessor.php b/src/Config/Resolver/PhpIniAccessor.php similarity index 82% rename from src/SDK/Common/Configuration/Resolver/PhpIniAccessor.php rename to src/Config/Resolver/PhpIniAccessor.php index a12b507e8..fb0c9d846 100644 --- a/src/SDK/Common/Configuration/Resolver/PhpIniAccessor.php +++ b/src/Config/Resolver/PhpIniAccessor.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration\Resolver; +namespace OpenTelemetry\Config\Resolver; class PhpIniAccessor { diff --git a/src/SDK/Common/Configuration/Resolver/PhpIniResolver.php b/src/Config/Resolver/PhpIniResolver.php similarity index 87% rename from src/SDK/Common/Configuration/Resolver/PhpIniResolver.php rename to src/Config/Resolver/PhpIniResolver.php index 6f7db258d..a0fdd4587 100644 --- a/src/SDK/Common/Configuration/Resolver/PhpIniResolver.php +++ b/src/Config/Resolver/PhpIniResolver.php @@ -2,9 +2,9 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration\Resolver; +namespace OpenTelemetry\Config\Resolver; -use OpenTelemetry\SDK\Common\Configuration\Configuration; +use OpenTelemetry\Config\Configuration; /** * @internal diff --git a/src/SDK/Common/Configuration/Resolver/ResolverInterface.php b/src/Config/Resolver/ResolverInterface.php similarity index 79% rename from src/SDK/Common/Configuration/Resolver/ResolverInterface.php rename to src/Config/Resolver/ResolverInterface.php index 4e88f3ff6..63ec2e861 100644 --- a/src/SDK/Common/Configuration/Resolver/ResolverInterface.php +++ b/src/Config/Resolver/ResolverInterface.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration\Resolver; +namespace OpenTelemetry\Config\Resolver; interface ResolverInterface { diff --git a/src/SDK/Common/Configuration/ValueTypes.php b/src/Config/ValueTypes.php similarity index 99% rename from src/SDK/Common/Configuration/ValueTypes.php rename to src/Config/ValueTypes.php index 64a69f6a7..59308e0b5 100644 --- a/src/SDK/Common/Configuration/ValueTypes.php +++ b/src/Config/ValueTypes.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration; +namespace OpenTelemetry\Config; /** * Environment variables defined by the OpenTelemetry specification and language specific variables for the PHP SDK. diff --git a/src/SDK/Common/Configuration/VariableTypes.php b/src/Config/VariableTypes.php similarity index 95% rename from src/SDK/Common/Configuration/VariableTypes.php rename to src/Config/VariableTypes.php index 471632e16..001b6ff1f 100644 --- a/src/SDK/Common/Configuration/VariableTypes.php +++ b/src/Config/VariableTypes.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration; +namespace OpenTelemetry\Config; interface VariableTypes { diff --git a/src/SDK/Common/Configuration/Variables.php b/src/Config/Variables.php similarity index 99% rename from src/SDK/Common/Configuration/Variables.php rename to src/Config/Variables.php index 8ccb28ac1..cdf565884 100644 --- a/src/SDK/Common/Configuration/Variables.php +++ b/src/Config/Variables.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace OpenTelemetry\SDK\Common\Configuration; +namespace OpenTelemetry\Config; /** * Environment variables defined by the OpenTelemetry specification and language specific variables for the PHP SDK. diff --git a/src/Contrib/Otlp/LogsExporterFactory.php b/src/Contrib/Otlp/LogsExporterFactory.php index f588cfa27..60d3aabd1 100644 --- a/src/Contrib/Otlp/LogsExporterFactory.php +++ b/src/Contrib/Otlp/LogsExporterFactory.php @@ -5,9 +5,9 @@ namespace OpenTelemetry\Contrib\Otlp; use OpenTelemetry\API\Signals; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Defaults; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Defaults; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Common\Export\TransportFactoryInterface; use OpenTelemetry\SDK\Common\Export\TransportInterface; use OpenTelemetry\SDK\Logs\LogRecordExporterFactoryInterface; diff --git a/src/Contrib/Otlp/MetricExporterFactory.php b/src/Contrib/Otlp/MetricExporterFactory.php index 8a201fd53..d3c6b3ee4 100644 --- a/src/Contrib/Otlp/MetricExporterFactory.php +++ b/src/Contrib/Otlp/MetricExporterFactory.php @@ -5,9 +5,9 @@ namespace OpenTelemetry\Contrib\Otlp; use OpenTelemetry\API\Signals; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Defaults; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Defaults; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Common\Export\TransportFactoryInterface; use OpenTelemetry\SDK\Common\Export\TransportInterface; use OpenTelemetry\SDK\Metrics\Data\Temporality; diff --git a/src/Contrib/Otlp/OtlpUtil.php b/src/Contrib/Otlp/OtlpUtil.php index 62feb6d91..bba8d4b45 100644 --- a/src/Contrib/Otlp/OtlpUtil.php +++ b/src/Contrib/Otlp/OtlpUtil.php @@ -5,8 +5,8 @@ namespace OpenTelemetry\Contrib\Otlp; use OpenTelemetry\API\Signals; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Resource\Detectors\Sdk; use OpenTelemetry\SemConv\ResourceAttributes; use UnexpectedValueException; diff --git a/src/Contrib/Otlp/Protocols.php b/src/Contrib/Otlp/Protocols.php index 96b04d8bf..745b6bb96 100644 --- a/src/Contrib/Otlp/Protocols.php +++ b/src/Contrib/Otlp/Protocols.php @@ -4,7 +4,7 @@ namespace OpenTelemetry\Contrib\Otlp; -use OpenTelemetry\SDK\Common\Configuration\KnownValues; +use OpenTelemetry\Config\KnownValues; use UnexpectedValueException; class Protocols diff --git a/src/Contrib/Otlp/SpanExporterFactory.php b/src/Contrib/Otlp/SpanExporterFactory.php index 67627a7b9..bbece6e4f 100644 --- a/src/Contrib/Otlp/SpanExporterFactory.php +++ b/src/Contrib/Otlp/SpanExporterFactory.php @@ -6,9 +6,9 @@ use OpenTelemetry\API\Behavior\LogsMessagesTrait; use OpenTelemetry\API\Signals; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Defaults; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Defaults; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Common\Export\TransportFactoryInterface; use OpenTelemetry\SDK\Common\Export\TransportInterface; use OpenTelemetry\SDK\Registry; diff --git a/src/Contrib/Zipkin/SpanExporterFactory.php b/src/Contrib/Zipkin/SpanExporterFactory.php index fc352a633..37353e71f 100644 --- a/src/Contrib/Zipkin/SpanExporterFactory.php +++ b/src/Contrib/Zipkin/SpanExporterFactory.php @@ -4,8 +4,8 @@ namespace OpenTelemetry\Contrib\Zipkin; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Common\Export\Http\PsrTransportFactory; use OpenTelemetry\SDK\Trace\SpanExporter\SpanExporterFactoryInterface; use OpenTelemetry\SDK\Trace\SpanExporterInterface; diff --git a/src/SDK/Logs/ExporterFactory.php b/src/SDK/Logs/ExporterFactory.php index 2a560ae95..b2b88d5cb 100644 --- a/src/SDK/Logs/ExporterFactory.php +++ b/src/SDK/Logs/ExporterFactory.php @@ -5,8 +5,8 @@ namespace OpenTelemetry\SDK\Logs; use InvalidArgumentException; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Logs\Exporter\NoopExporter; use OpenTelemetry\SDK\Registry; diff --git a/src/SDK/Logs/LogRecordLimitsBuilder.php b/src/SDK/Logs/LogRecordLimitsBuilder.php index 3aa5217ef..eb64350dc 100644 --- a/src/SDK/Logs/LogRecordLimitsBuilder.php +++ b/src/SDK/Logs/LogRecordLimitsBuilder.php @@ -4,9 +4,9 @@ namespace OpenTelemetry\SDK\Logs; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Common\Attribute\Attributes; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Variables; use const PHP_INT_MAX; class LogRecordLimitsBuilder diff --git a/src/SDK/Logs/LogRecordProcessorFactory.php b/src/SDK/Logs/LogRecordProcessorFactory.php index 869345cce..887e65af4 100644 --- a/src/SDK/Logs/LogRecordProcessorFactory.php +++ b/src/SDK/Logs/LogRecordProcessorFactory.php @@ -6,10 +6,10 @@ use InvalidArgumentException; use OpenTelemetry\API\Metrics\MeterProviderInterface; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\KnownValues; -use OpenTelemetry\SDK\Common\Configuration\KnownValues as Values; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\KnownValues; +use OpenTelemetry\Config\KnownValues as Values; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Common\Time\ClockFactory; use OpenTelemetry\SDK\Logs\Processor\BatchLogRecordProcessor; use OpenTelemetry\SDK\Logs\Processor\MultiLogRecordProcessor; diff --git a/src/SDK/Metrics/MeterProviderFactory.php b/src/SDK/Metrics/MeterProviderFactory.php index 0f62cec5f..847fee08e 100644 --- a/src/SDK/Metrics/MeterProviderFactory.php +++ b/src/SDK/Metrics/MeterProviderFactory.php @@ -6,9 +6,9 @@ use InvalidArgumentException; use OpenTelemetry\API\Behavior\LogsMessagesTrait; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\KnownValues; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\KnownValues; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Metrics\Exemplar\ExemplarFilter\AllExemplarFilter; use OpenTelemetry\SDK\Metrics\Exemplar\ExemplarFilter\NoneExemplarFilter; use OpenTelemetry\SDK\Metrics\Exemplar\ExemplarFilter\WithSampledTraceExemplarFilter; diff --git a/src/SDK/Propagation/PropagatorFactory.php b/src/SDK/Propagation/PropagatorFactory.php index 4b3970420..95a9792de 100644 --- a/src/SDK/Propagation/PropagatorFactory.php +++ b/src/SDK/Propagation/PropagatorFactory.php @@ -5,11 +5,11 @@ namespace OpenTelemetry\SDK\Propagation; use OpenTelemetry\API\Behavior\LogsMessagesTrait; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables; use OpenTelemetry\Context\Propagation\MultiTextMapPropagator; use OpenTelemetry\Context\Propagation\NoopTextMapPropagator; use OpenTelemetry\Context\Propagation\TextMapPropagatorInterface; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Variables; use OpenTelemetry\SDK\Registry; class PropagatorFactory diff --git a/src/SDK/Propagation/_register.php b/src/SDK/Propagation/_register.php index fd90da184..f1810b55b 100644 --- a/src/SDK/Propagation/_register.php +++ b/src/SDK/Propagation/_register.php @@ -3,14 +3,14 @@ declare(strict_types=1); \OpenTelemetry\SDK\Registry::registerTextMapPropagator( - \OpenTelemetry\SDK\Common\Configuration\KnownValues::VALUE_BAGGAGE, + \OpenTelemetry\Config\KnownValues::VALUE_BAGGAGE, \OpenTelemetry\API\Baggage\Propagation\BaggagePropagator::getInstance() ); \OpenTelemetry\SDK\Registry::registerTextMapPropagator( - \OpenTelemetry\SDK\Common\Configuration\KnownValues::VALUE_TRACECONTEXT, + \OpenTelemetry\Config\KnownValues::VALUE_TRACECONTEXT, \OpenTelemetry\API\Trace\Propagation\TraceContextPropagator::getInstance() ); \OpenTelemetry\SDK\Registry::registerTextMapPropagator( - \OpenTelemetry\SDK\Common\Configuration\KnownValues::VALUE_NONE, + \OpenTelemetry\Config\KnownValues::VALUE_NONE, \OpenTelemetry\Context\Propagation\NoopTextMapPropagator::getInstance() ); diff --git a/src/SDK/Resource/Detectors/Environment.php b/src/SDK/Resource/Detectors/Environment.php index ceee8fcf7..4de27fe03 100644 --- a/src/SDK/Resource/Detectors/Environment.php +++ b/src/SDK/Resource/Detectors/Environment.php @@ -4,9 +4,9 @@ namespace OpenTelemetry\SDK\Resource\Detectors; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Common\Attribute\Attributes; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Variables; use OpenTelemetry\SDK\Resource\ResourceDetectorInterface; use OpenTelemetry\SDK\Resource\ResourceInfo; use OpenTelemetry\SemConv\ResourceAttributes; diff --git a/src/SDK/Resource/ResourceInfoFactory.php b/src/SDK/Resource/ResourceInfoFactory.php index 7fc80bcd9..b901a1764 100644 --- a/src/SDK/Resource/ResourceInfoFactory.php +++ b/src/SDK/Resource/ResourceInfoFactory.php @@ -6,10 +6,10 @@ use function in_array; use OpenTelemetry\API\Behavior\LogsMessagesTrait; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\KnownValues as Values; +use OpenTelemetry\Config\Variables as Env; use OpenTelemetry\SDK\Common\Attribute\Attributes; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\KnownValues as Values; -use OpenTelemetry\SDK\Common\Configuration\Variables as Env; use OpenTelemetry\SDK\Registry; use RuntimeException; diff --git a/src/SDK/Sdk.php b/src/SDK/Sdk.php index ac82c6052..ca07a541b 100644 --- a/src/SDK/Sdk.php +++ b/src/SDK/Sdk.php @@ -6,9 +6,9 @@ use OpenTelemetry\API\Metrics\MeterProviderInterface; use OpenTelemetry\API\Trace\TracerProviderInterface; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables; use OpenTelemetry\Context\Propagation\TextMapPropagatorInterface; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Variables; use OpenTelemetry\SDK\Logs\LoggerProviderInterface; class Sdk diff --git a/src/SDK/SdkAutoloader.php b/src/SDK/SdkAutoloader.php index db288fe94..31ccd80fe 100644 --- a/src/SDK/SdkAutoloader.php +++ b/src/SDK/SdkAutoloader.php @@ -7,8 +7,8 @@ use InvalidArgumentException; use OpenTelemetry\API\Globals; use OpenTelemetry\API\Instrumentation\Configurator; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Common\Util\ShutdownHandler; use OpenTelemetry\SDK\Logs\LoggerProviderFactory; use OpenTelemetry\SDK\Metrics\MeterProviderFactory; diff --git a/src/SDK/Trace/ExporterFactory.php b/src/SDK/Trace/ExporterFactory.php index 9b652cc2f..2335337bf 100644 --- a/src/SDK/Trace/ExporterFactory.php +++ b/src/SDK/Trace/ExporterFactory.php @@ -5,8 +5,8 @@ namespace OpenTelemetry\SDK\Trace; use InvalidArgumentException; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Registry; use RuntimeException; diff --git a/src/SDK/Trace/SamplerFactory.php b/src/SDK/Trace/SamplerFactory.php index 09efbfc81..1db4877e1 100644 --- a/src/SDK/Trace/SamplerFactory.php +++ b/src/SDK/Trace/SamplerFactory.php @@ -5,9 +5,9 @@ namespace OpenTelemetry\SDK\Trace; use InvalidArgumentException; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\KnownValues as Values; -use OpenTelemetry\SDK\Common\Configuration\Variables as Env; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\KnownValues as Values; +use OpenTelemetry\Config\Variables as Env; use OpenTelemetry\SDK\Trace\Sampler\AlwaysOffSampler; use OpenTelemetry\SDK\Trace\Sampler\AlwaysOnSampler; use OpenTelemetry\SDK\Trace\Sampler\ParentBased; diff --git a/src/SDK/Trace/SpanLimitsBuilder.php b/src/SDK/Trace/SpanLimitsBuilder.php index 11ed5a82b..acc42b74d 100644 --- a/src/SDK/Trace/SpanLimitsBuilder.php +++ b/src/SDK/Trace/SpanLimitsBuilder.php @@ -4,10 +4,10 @@ namespace OpenTelemetry\SDK\Trace; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables as Env; use OpenTelemetry\SDK\Common\Attribute\Attributes; use OpenTelemetry\SDK\Common\Attribute\FilteredAttributesFactory; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Variables as Env; use OpenTelemetry\SemConv\TraceAttributes; use const PHP_INT_MAX; diff --git a/src/SDK/Trace/SpanProcessorFactory.php b/src/SDK/Trace/SpanProcessorFactory.php index 3279c56ee..cac92a5ef 100644 --- a/src/SDK/Trace/SpanProcessorFactory.php +++ b/src/SDK/Trace/SpanProcessorFactory.php @@ -5,9 +5,9 @@ namespace OpenTelemetry\SDK\Trace; use InvalidArgumentException; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\KnownValues as Values; -use OpenTelemetry\SDK\Common\Configuration\Variables as Env; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\KnownValues as Values; +use OpenTelemetry\Config\Variables as Env; use OpenTelemetry\SDK\Common\Time\ClockFactory; use OpenTelemetry\SDK\Metrics\MeterProviderInterface; use OpenTelemetry\SDK\Metrics\NoopMeterProvider; diff --git a/tests/Integration/SDK/TracerTest.php b/tests/Integration/SDK/TracerTest.php index 4512885cc..95fa41b05 100644 --- a/tests/Integration/SDK/TracerTest.php +++ b/tests/Integration/SDK/TracerTest.php @@ -9,8 +9,8 @@ use OpenTelemetry\API\Trace\NonRecordingSpan; use OpenTelemetry\API\Trace\SpanContext; use OpenTelemetry\API\Trace\TraceState; +use OpenTelemetry\Config\Variables; use OpenTelemetry\Context\Context; -use OpenTelemetry\SDK\Common\Configuration\Variables; use OpenTelemetry\SDK\Trace\Sampler\AlwaysOffSampler; use OpenTelemetry\SDK\Trace\SamplerInterface; use OpenTelemetry\SDK\Trace\SamplingResult; diff --git a/tests/Unit/SDK/Common/Configuration/ConfigurationTest.php b/tests/Unit/Config/ConfigurationTest.php similarity index 97% rename from tests/Unit/SDK/Common/Configuration/ConfigurationTest.php rename to tests/Unit/Config/ConfigurationTest.php index 25a19a933..73f5e6c5a 100644 --- a/tests/Unit/SDK/Common/Configuration/ConfigurationTest.php +++ b/tests/Unit/Config/ConfigurationTest.php @@ -2,21 +2,21 @@ declare(strict_types=1); -namespace OpenTelemetry\Tests\Unit\SDK\Common\Configuration; +namespace OpenTelemetry\Tests\Unit\Config; use AssertWell\PHPUnitGlobalState\EnvironmentVariables; use Exception; use Generator; -use OpenTelemetry\SDK\Common\Configuration\Configuration; -use OpenTelemetry\SDK\Common\Configuration\Defaults; -use OpenTelemetry\SDK\Common\Configuration\KnownValues; -use OpenTelemetry\SDK\Common\Configuration\Variables; -use OpenTelemetry\SDK\Common\Configuration\VariableTypes; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Defaults; +use OpenTelemetry\Config\KnownValues; +use OpenTelemetry\Config\Variables; +use OpenTelemetry\Config\VariableTypes; use PHPUnit\Framework\TestCase; use UnexpectedValueException; /** - * @covers \OpenTelemetry\SDK\Common\Configuration\Configuration + * @covers \OpenTelemetry\Config\Configuration */ class ConfigurationTest extends TestCase { diff --git a/tests/Unit/SDK/Common/Configuration/Parser/BooleanParserTest.php b/tests/Unit/Config/Parser/BooleanParserTest.php similarity index 91% rename from tests/Unit/SDK/Common/Configuration/Parser/BooleanParserTest.php rename to tests/Unit/Config/Parser/BooleanParserTest.php index ed4782110..d8ca41762 100644 --- a/tests/Unit/SDK/Common/Configuration/Parser/BooleanParserTest.php +++ b/tests/Unit/Config/Parser/BooleanParserTest.php @@ -2,14 +2,14 @@ declare(strict_types=1); -namespace OpenTelemetry\Tests\Unit\SDK\Common\Configuration\Parser; +namespace OpenTelemetry\Tests\Unit\Config\Parser; use InvalidArgumentException; -use OpenTelemetry\SDK\Common\Configuration\Parser\BooleanParser; +use OpenTelemetry\Config\Parser\BooleanParser; use PHPUnit\Framework\TestCase; /** - * @covers \OpenTelemetry\SDK\Common\Configuration\Parser\BooleanParser + * @covers \OpenTelemetry\Config\Parser\BooleanParser */ class BooleanParserTest extends TestCase { diff --git a/tests/Unit/SDK/Common/Configuration/Parser/ListParserTest.php b/tests/Unit/Config/Parser/ListParserTest.php similarity index 81% rename from tests/Unit/SDK/Common/Configuration/Parser/ListParserTest.php rename to tests/Unit/Config/Parser/ListParserTest.php index 79bb0f059..599066ac0 100644 --- a/tests/Unit/SDK/Common/Configuration/Parser/ListParserTest.php +++ b/tests/Unit/Config/Parser/ListParserTest.php @@ -2,12 +2,12 @@ declare(strict_types=1); -namespace OpenTelemetry\Tests\Unit\SDK\Common\Configuration\Parser; +namespace OpenTelemetry\Tests\Unit\Config\Parser; use PHPUnit\Framework\TestCase; /** - * @covers \OpenTelemetry\SDK\Common\Configuration\Parser\ListParser + * @covers \OpenTelemetry\Config\Parser\ListParser */ class ListParserTest extends TestCase { @@ -40,7 +40,7 @@ class ListParserTest extends TestCase public function test_comma_separated_list_returns_array(string $value, array $expected): void { $this->assertSame( - \OpenTelemetry\SDK\Common\Configuration\Parser\ListParser::parse($value), + \OpenTelemetry\Config\Parser\ListParser::parse($value), $expected ); } diff --git a/tests/Unit/SDK/Common/Configuration/Parser/MapParserTest.php b/tests/Unit/Config/Parser/MapParserTest.php similarity index 84% rename from tests/Unit/SDK/Common/Configuration/Parser/MapParserTest.php rename to tests/Unit/Config/Parser/MapParserTest.php index 0690c02bc..af9117186 100644 --- a/tests/Unit/SDK/Common/Configuration/Parser/MapParserTest.php +++ b/tests/Unit/Config/Parser/MapParserTest.php @@ -2,13 +2,13 @@ declare(strict_types=1); -namespace OpenTelemetry\Tests\Unit\SDK\Common\Configuration\Parser; +namespace OpenTelemetry\Tests\Unit\Config\Parser; use InvalidArgumentException; use PHPUnit\Framework\TestCase; /** - * @covers \OpenTelemetry\SDK\Common\Configuration\Parser\MapParser + * @covers \OpenTelemetry\Config\Parser\MapParser */ class MapParserTest extends TestCase { @@ -46,7 +46,7 @@ class MapParserTest extends TestCase public function test_map_values_return_array(string $value, array $expected): void { $this->assertSame( - \OpenTelemetry\SDK\Common\Configuration\Parser\MapParser::parse($value), + \OpenTelemetry\Config\Parser\MapParser::parse($value), $expected ); } @@ -58,7 +58,7 @@ public function test_invalid_values_throw_exception(string $value): void { $this->expectException(InvalidArgumentException::class); - \OpenTelemetry\SDK\Common\Configuration\Parser\MapParser::parse($value); + \OpenTelemetry\Config\Parser\MapParser::parse($value); } public function mapValueProvider(): array diff --git a/tests/Unit/SDK/Common/Configuration/Parser/RatioParserTest.php b/tests/Unit/Config/Parser/RatioParserTest.php similarity index 88% rename from tests/Unit/SDK/Common/Configuration/Parser/RatioParserTest.php rename to tests/Unit/Config/Parser/RatioParserTest.php index 35dee3c04..7d2f4e2b0 100644 --- a/tests/Unit/SDK/Common/Configuration/Parser/RatioParserTest.php +++ b/tests/Unit/Config/Parser/RatioParserTest.php @@ -2,15 +2,15 @@ declare(strict_types=1); -namespace OpenTelemetry\Tests\Unit\SDK\Common\Configuration\Parser; +namespace OpenTelemetry\Tests\Unit\Config\Parser; use InvalidArgumentException; -use OpenTelemetry\SDK\Common\Configuration\Parser\RatioParser; +use OpenTelemetry\Config\Parser\RatioParser; use PHPUnit\Framework\TestCase; use RangeException; /** - * @covers \OpenTelemetry\SDK\Common\Configuration\Parser\RatioParser + * @covers \OpenTelemetry\Config\Parser\RatioParser */ class RatioParserTest extends TestCase { diff --git a/tests/Unit/SDK/Common/Configuration/Resolver/CompositeResolverTest.php b/tests/Unit/Config/Resolver/CompositeResolverTest.php similarity index 86% rename from tests/Unit/SDK/Common/Configuration/Resolver/CompositeResolverTest.php rename to tests/Unit/Config/Resolver/CompositeResolverTest.php index 70bbe1c92..c890a1f1c 100644 --- a/tests/Unit/SDK/Common/Configuration/Resolver/CompositeResolverTest.php +++ b/tests/Unit/Config/Resolver/CompositeResolverTest.php @@ -2,16 +2,16 @@ declare(strict_types=1); -namespace OpenTelemetry\Tests\Unit\SDK\Common\Configuration\Resolver; +namespace OpenTelemetry\Tests\Unit\Config\Resolver; -use OpenTelemetry\SDK\Common\Configuration\Defaults; -use OpenTelemetry\SDK\Common\Configuration\Resolver\CompositeResolver; -use OpenTelemetry\SDK\Common\Configuration\Resolver\ResolverInterface; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\Defaults; +use OpenTelemetry\Config\Resolver\CompositeResolver; +use OpenTelemetry\Config\Resolver\ResolverInterface; +use OpenTelemetry\Config\Variables; use PHPUnit\Framework\TestCase; /** - * @covers \OpenTelemetry\SDK\Common\Configuration\Resolver\CompositeResolver + * @covers \OpenTelemetry\Config\Resolver\CompositeResolver * @psalm-suppress UndefinedInterfaceMethod */ class CompositeResolverTest extends TestCase diff --git a/tests/Unit/SDK/Common/Configuration/Resolver/EnvironmentResolverTest.php b/tests/Unit/Config/Resolver/EnvironmentResolverTest.php similarity index 92% rename from tests/Unit/SDK/Common/Configuration/Resolver/EnvironmentResolverTest.php rename to tests/Unit/Config/Resolver/EnvironmentResolverTest.php index 3be3a939a..6df766f53 100644 --- a/tests/Unit/SDK/Common/Configuration/Resolver/EnvironmentResolverTest.php +++ b/tests/Unit/Config/Resolver/EnvironmentResolverTest.php @@ -2,14 +2,14 @@ declare(strict_types=1); -namespace OpenTelemetry\Tests\Unit\SDK\Common\Configuration\Resolver; +namespace OpenTelemetry\Tests\Unit\Config\Resolver; use AssertWell\PHPUnitGlobalState\EnvironmentVariables; -use OpenTelemetry\SDK\Common\Configuration\Resolver\EnvironmentResolver; +use OpenTelemetry\Config\Resolver\EnvironmentResolver; use PHPUnit\Framework\TestCase; /** - * @covers \OpenTelemetry\SDK\Common\Configuration\Resolver\EnvironmentResolver + * @covers \OpenTelemetry\Config\Resolver\EnvironmentResolver */ class EnvironmentResolverTest extends TestCase { diff --git a/tests/Unit/SDK/Common/Configuration/Resolver/PhpIniResolverTest.php b/tests/Unit/Config/Resolver/PhpIniResolverTest.php similarity index 83% rename from tests/Unit/SDK/Common/Configuration/Resolver/PhpIniResolverTest.php rename to tests/Unit/Config/Resolver/PhpIniResolverTest.php index ae45fe233..244149d90 100644 --- a/tests/Unit/SDK/Common/Configuration/Resolver/PhpIniResolverTest.php +++ b/tests/Unit/Config/Resolver/PhpIniResolverTest.php @@ -2,14 +2,14 @@ declare(strict_types=1); -namespace OpenTelemetry\Tests\Unit\SDK\Common\Configuration\Resolver; +namespace OpenTelemetry\Tests\Unit\Config\Resolver; -use OpenTelemetry\SDK\Common\Configuration\Resolver\PhpIniAccessor; -use OpenTelemetry\SDK\Common\Configuration\Resolver\PhpIniResolver; +use OpenTelemetry\Config\Resolver\PhpIniAccessor; +use OpenTelemetry\Config\Resolver\PhpIniResolver; use PHPUnit\Framework\TestCase; /** - * @covers \OpenTelemetry\SDK\Common\Configuration\Resolver\PhpIniResolver + * @covers \OpenTelemetry\Config\Resolver\PhpIniResolver * @psalm-suppress UndefinedMethod */ class PhpIniResolverTest extends TestCase diff --git a/tests/Unit/Contrib/Otlp/LogsExporterFactoryTest.php b/tests/Unit/Contrib/Otlp/LogsExporterFactoryTest.php index eab64311a..b3c04db74 100644 --- a/tests/Unit/Contrib/Otlp/LogsExporterFactoryTest.php +++ b/tests/Unit/Contrib/Otlp/LogsExporterFactoryTest.php @@ -5,9 +5,9 @@ namespace OpenTelemetry\Tests\Unit\Contrib\Otlp; use AssertWell\PHPUnitGlobalState\EnvironmentVariables; +use OpenTelemetry\Config\KnownValues; +use OpenTelemetry\Config\Variables; use OpenTelemetry\Contrib\Otlp\LogsExporterFactory; -use OpenTelemetry\SDK\Common\Configuration\KnownValues; -use OpenTelemetry\SDK\Common\Configuration\Variables; use OpenTelemetry\SDK\Common\Export\TransportFactoryInterface; use OpenTelemetry\SDK\Common\Export\TransportInterface; use PHPUnit\Framework\MockObject\MockObject; diff --git a/tests/Unit/Contrib/Otlp/MetricExporterFactoryTest.php b/tests/Unit/Contrib/Otlp/MetricExporterFactoryTest.php index fc9f406ba..58ba95378 100644 --- a/tests/Unit/Contrib/Otlp/MetricExporterFactoryTest.php +++ b/tests/Unit/Contrib/Otlp/MetricExporterFactoryTest.php @@ -5,9 +5,9 @@ namespace OpenTelemetry\Tests\Unit\Contrib\Otlp; use AssertWell\PHPUnitGlobalState\EnvironmentVariables; +use OpenTelemetry\Config\KnownValues; +use OpenTelemetry\Config\Variables; use OpenTelemetry\Contrib\Otlp\MetricExporterFactory; -use OpenTelemetry\SDK\Common\Configuration\KnownValues; -use OpenTelemetry\SDK\Common\Configuration\Variables; use OpenTelemetry\SDK\Common\Export\TransportFactoryInterface; use OpenTelemetry\SDK\Common\Export\TransportInterface; use OpenTelemetry\SDK\Metrics\AggregationTemporalitySelectorInterface; diff --git a/tests/Unit/Contrib/Otlp/OtlpUtilTest.php b/tests/Unit/Contrib/Otlp/OtlpUtilTest.php index 8b22c6383..18099d980 100644 --- a/tests/Unit/Contrib/Otlp/OtlpUtilTest.php +++ b/tests/Unit/Contrib/Otlp/OtlpUtilTest.php @@ -6,8 +6,8 @@ use AssertWell\PHPUnitGlobalState\EnvironmentVariables; use OpenTelemetry\API\Signals; +use OpenTelemetry\Config\Variables; use OpenTelemetry\Contrib\Otlp\OtlpUtil; -use OpenTelemetry\SDK\Common\Configuration\Variables; use PHPUnit\Framework\TestCase; /** diff --git a/tests/Unit/Contrib/Otlp/SpanExporterFactoryTest.php b/tests/Unit/Contrib/Otlp/SpanExporterFactoryTest.php index af39021fb..1e7f11316 100644 --- a/tests/Unit/Contrib/Otlp/SpanExporterFactoryTest.php +++ b/tests/Unit/Contrib/Otlp/SpanExporterFactoryTest.php @@ -5,9 +5,9 @@ namespace OpenTelemetry\Tests\Unit\Contrib\Otlp; use AssertWell\PHPUnitGlobalState\EnvironmentVariables; +use OpenTelemetry\Config\KnownValues; +use OpenTelemetry\Config\Variables; use OpenTelemetry\Contrib\Otlp\SpanExporterFactory; -use OpenTelemetry\SDK\Common\Configuration\KnownValues; -use OpenTelemetry\SDK\Common\Configuration\Variables; use OpenTelemetry\SDK\Common\Export\TransportFactoryInterface; use OpenTelemetry\SDK\Common\Export\TransportInterface; use PHPUnit\Framework\TestCase; diff --git a/tests/Unit/SDK/Common/Util/ClassConstantAccessorTest.php b/tests/Unit/SDK/Common/Util/ClassConstantAccessorTest.php index 801d25253..2ef715f4c 100644 --- a/tests/Unit/SDK/Common/Util/ClassConstantAccessorTest.php +++ b/tests/Unit/SDK/Common/Util/ClassConstantAccessorTest.php @@ -5,11 +5,11 @@ namespace OpenTelemetry\Tests\Unit\SDK\Common\Util; use LogicException; -use OpenTelemetry\SDK\Common\Util\ClassConstantAccessor; +use OpenTelemetry\Config\Accessor\ClassConstantAccessor; use PHPUnit\Framework\TestCase; /** - * @covers \OpenTelemetry\SDK\Common\Util\ClassConstantAccessor + * @covers \OpenTelemetry\Config\Accessor\ClassConstantAccessor */ class ClassConstantAccessorTest extends TestCase { diff --git a/tests/Unit/SDK/Logs/LogRecordProcessorFactoryTest.php b/tests/Unit/SDK/Logs/LogRecordProcessorFactoryTest.php index 3154066fd..d6efcfa8c 100644 --- a/tests/Unit/SDK/Logs/LogRecordProcessorFactoryTest.php +++ b/tests/Unit/SDK/Logs/LogRecordProcessorFactoryTest.php @@ -5,7 +5,7 @@ namespace OpenTelemetry\Tests\Unit\SDK\Logs; use AssertWell\PHPUnitGlobalState\EnvironmentVariables; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Logs\LogRecordExporterInterface; use OpenTelemetry\SDK\Logs\LogRecordProcessorFactory; use OpenTelemetry\SDK\Logs\Processor\BatchLogRecordProcessor; diff --git a/tests/Unit/SDK/Metrics/MeterProviderFactoryTest.php b/tests/Unit/SDK/Metrics/MeterProviderFactoryTest.php index c6370bb15..e3cbe87b7 100644 --- a/tests/Unit/SDK/Metrics/MeterProviderFactoryTest.php +++ b/tests/Unit/SDK/Metrics/MeterProviderFactoryTest.php @@ -7,8 +7,8 @@ use AssertWell\PHPUnitGlobalState\EnvironmentVariables; use OpenTelemetry\API\LoggerHolder; use OpenTelemetry\API\Metrics\MeterInterface; -use OpenTelemetry\SDK\Common\Configuration\KnownValues; -use OpenTelemetry\SDK\Common\Configuration\Variables; +use OpenTelemetry\Config\KnownValues; +use OpenTelemetry\Config\Variables; use OpenTelemetry\SDK\Metrics\MeterProviderFactory; use PHPUnit\Framework\TestCase; use Psr\Log\NullLogger; diff --git a/tests/Unit/SDK/Propagation/PropagatorFactoryTest.php b/tests/Unit/SDK/Propagation/PropagatorFactoryTest.php index 67fdb4f91..490fe972f 100644 --- a/tests/Unit/SDK/Propagation/PropagatorFactoryTest.php +++ b/tests/Unit/SDK/Propagation/PropagatorFactoryTest.php @@ -8,14 +8,14 @@ use OpenTelemetry\API\Baggage\Propagation\BaggagePropagator; use OpenTelemetry\API\LoggerHolder; use OpenTelemetry\API\Trace\Propagation\TraceContextPropagator; +use OpenTelemetry\Config\KnownValues; +use OpenTelemetry\Config\Variables; use OpenTelemetry\Context\Propagation\MultiTextMapPropagator; use OpenTelemetry\Context\Propagation\NoopTextMapPropagator; use OpenTelemetry\Extension\Propagator\B3\B3Propagator; use OpenTelemetry\Extension\Propagator\CloudTrace\CloudTracePropagator; use OpenTelemetry\Extension\Propagator\Jaeger\JaegerBaggagePropagator; use OpenTelemetry\Extension\Propagator\Jaeger\JaegerPropagator; -use OpenTelemetry\SDK\Common\Configuration\KnownValues; -use OpenTelemetry\SDK\Common\Configuration\Variables; use OpenTelemetry\SDK\Propagation\PropagatorFactory; use PHPUnit\Framework\TestCase; use Psr\Log\NullLogger; diff --git a/tests/Unit/SDK/SdkAutoloaderTest.php b/tests/Unit/SDK/SdkAutoloaderTest.php index e053cc0f5..2e1a1b5f5 100644 --- a/tests/Unit/SDK/SdkAutoloaderTest.php +++ b/tests/Unit/SDK/SdkAutoloaderTest.php @@ -10,8 +10,8 @@ use OpenTelemetry\API\Logs\NoopLoggerProvider; use OpenTelemetry\API\Metrics\Noop\NoopMeterProvider; use OpenTelemetry\API\Trace\NoopTracerProvider; +use OpenTelemetry\Config\Variables; use OpenTelemetry\Context\Propagation\NoopTextMapPropagator; -use OpenTelemetry\SDK\Common\Configuration\Variables; use OpenTelemetry\SDK\SdkAutoloader; use PHPUnit\Framework\TestCase; use Psr\Log\NullLogger; diff --git a/tests/Unit/SDK/SdkTest.php b/tests/Unit/SDK/SdkTest.php index 4eff6943f..3bac2117e 100644 --- a/tests/Unit/SDK/SdkTest.php +++ b/tests/Unit/SDK/SdkTest.php @@ -5,8 +5,8 @@ namespace OpenTelemetry\Tests\Unit\SDK; use AssertWell\PHPUnitGlobalState\EnvironmentVariables; +use OpenTelemetry\Config\Variables; 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; From 510f4899401e0b71d1207040232e5524b7d142c0 Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Tue, 5 Mar 2024 09:58:25 +1100 Subject: [PATCH 02/11] use config from api remove custom config handling now that config can be used independent of SDK --- .gitsplit.yml | 2 + composer.json | 1 + .../Behavior/Internal/LogWriterFactory.php | 18 +-- .../Instrumentation/ConfigurationResolver.php | 77 ----------- .../ConfigurationResolverInterface.php | 14 -- src/API/composer.json | 1 + src/Config/composer.json | 33 +++++ src/SDK/composer.json | 1 + .../ConfigurationResolverTest.php | 123 ------------------ 9 files changed, 47 insertions(+), 223 deletions(-) delete mode 100644 src/API/Instrumentation/ConfigurationResolver.php delete mode 100644 src/API/Instrumentation/ConfigurationResolverInterface.php create mode 100644 src/Config/composer.json delete mode 100644 tests/Unit/API/Instrumentation/ConfigurationResolverTest.php diff --git a/.gitsplit.yml b/.gitsplit.yml index f21429504..2d64a5e21 100644 --- a/.gitsplit.yml +++ b/.gitsplit.yml @@ -10,6 +10,8 @@ splits: target: "https://${GH_TOKEN}@github.com/opentelemetry-php/gen-otlp-protobuf.git" - prefix: "src/Context" target: "https://${GH_TOKEN}@github.com/opentelemetry-php/context.git" + - prefix: "src/Config" + target: "https://${GH_TOKEN}@github.com/opentelemetry-php/config.git" - prefix: "src/SemConv" target: "https://${GH_TOKEN}@github.com/opentelemetry-php/sem-conv.git" - prefix: "src/API" diff --git a/composer.json b/composer.json index 7d8b14697..114a73b1b 100644 --- a/composer.json +++ b/composer.json @@ -36,6 +36,7 @@ ], "replace": { "open-telemetry/api": "self.version", + "open-telemetry/config": "self.version", "open-telemetry/context": "self.version", "open-telemetry/gen-otlp-protobuf": "self.version", "open-telemetry/sdk": "self.version", diff --git a/src/API/Behavior/Internal/LogWriterFactory.php b/src/API/Behavior/Internal/LogWriterFactory.php index 5bf5a3af2..e2736b45b 100644 --- a/src/API/Behavior/Internal/LogWriterFactory.php +++ b/src/API/Behavior/Internal/LogWriterFactory.php @@ -9,26 +9,26 @@ use OpenTelemetry\API\Behavior\Internal\LogWriter\NoopLogWriter; use OpenTelemetry\API\Behavior\Internal\LogWriter\Psr3LogWriter; use OpenTelemetry\API\Behavior\Internal\LogWriter\StreamLogWriter; -use OpenTelemetry\API\Instrumentation\ConfigurationResolver; use OpenTelemetry\API\LoggerHolder; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\KnownValues; +use OpenTelemetry\Config\Variables; class LogWriterFactory { - private const OTEL_PHP_LOG_DESTINATION = 'OTEL_PHP_LOG_DESTINATION'; - public function create(): LogWriterInterface { - $dest = (new ConfigurationResolver())->getString(self::OTEL_PHP_LOG_DESTINATION); + $dest = (new Configuration())->getEnum(Variables::OTEL_PHP_LOG_DESTINATION); $logger = LoggerHolder::get(); switch ($dest) { - case 'none': + case KnownValues::VALUE_NONE: return new NoopLogWriter(); - case 'stderr': + case KnownValues::VALUE_STDERR: return new StreamLogWriter('php://stderr'); - case 'stdout': + case KnownValues::VALUE_STDOUT: return new StreamLogWriter('php://stdout'); - case 'psr3': + case KnownValues::VALUE_PSR3: if ($logger) { return new Psr3LogWriter($logger); } @@ -36,7 +36,7 @@ public function create(): LogWriterInterface //default to error log return new ErrorLogWriter(); - case 'error_log': + case KnownValues::VALUE_ERROR_LOG: return new ErrorLogWriter(); default: if ($logger) { diff --git a/src/API/Instrumentation/ConfigurationResolver.php b/src/API/Instrumentation/ConfigurationResolver.php deleted file mode 100644 index bb5619c30..000000000 --- a/src/API/Instrumentation/ConfigurationResolver.php +++ /dev/null @@ -1,77 +0,0 @@ -getVariable($name) !== null; - } - - public function getString(string $name): ?string - { - return $this->getVariable($name); - } - - public function getBoolean(string $name): ?bool - { - $value = $this->getVariable($name); - if ($value === null) { - return null; - } - - return ($value === 'true'); - } - - public function getInt(string $name): ?int - { - $value = $this->getVariable($name); - if ($value === null) { - return null; - } - if (filter_var($value, FILTER_VALIDATE_INT) === false) { - //log warning - return null; - } - - return (int) $value; - } - - public function getList(string $name): array - { - $value = $this->getVariable($name); - if ($value === null) { - return []; - } - - return explode(',', $value); - } - - private function getVariable(string $name): ?string - { - $value = $_SERVER[$name] ?? null; - if ($value !== false && !self::isEmpty($value)) { - assert(is_string($value)); - - return $value; - } - $value = getenv($name); - if ($value !== false && !self::isEmpty($value)) { - return $value; - } - $value = ini_get($name); - if ($value !== false && !self::isEmpty($value)) { - return $value; - } - - return null; - } - - private static function isEmpty($value): bool - { - return $value === false || $value === null || $value === ''; - } -} diff --git a/src/API/Instrumentation/ConfigurationResolverInterface.php b/src/API/Instrumentation/ConfigurationResolverInterface.php deleted file mode 100644 index 79bd94047..000000000 --- a/src/API/Instrumentation/ConfigurationResolverInterface.php +++ /dev/null @@ -1,14 +0,0 @@ -resolver = new ConfigurationResolver(); - } - - public function tearDown(): void - { - $this->restoreEnvironmentVariables(); - } - - /** - * @dataProvider hasProvider - */ - public function test_has(?string $value, bool $expected): void - { - $this->assertFalse($this->resolver->has('OTEL_FOO')); - $this->setEnvironmentVariable('OTEL_FOO', $value); - $this->assertSame($expected, $this->resolver->has('OTEL_FOO')); - } - - public static function hasProvider(): array - { - return [ - ['bar', true], - ['', false], - [null, false], - ]; - } - - public function test_get_string(): void - { - $this->assertFalse($this->resolver->has('OTEL_FOO')); - $this->setEnvironmentVariable('OTEL_FOO', 'bar'); - $this->assertSame('bar', $this->resolver->getString('OTEL_FOO')); - } - - /** - * @dataProvider booleanProvider - */ - public function test_get_boolean(?string $value, ?bool $expected): void - { - $this->assertFalse($this->resolver->has('OTEL_FOO')); - $this->setEnvironmentVariable('OTEL_FOO', $value); - $this->assertSame($expected, $this->resolver->getBoolean('OTEL_FOO')); - } - - public static function booleanProvider(): array - { - return [ - ['true', true], - ['false', false], - ['random', false], - ['', null], - [null, null], - ]; - } - - /** - * @dataProvider intProvider - */ - public function test_get_int(?string $value, ?int $expected): void - { - $this->assertFalse($this->resolver->has('OTEL_FOO')); - $this->setEnvironmentVariable('OTEL_FOO', $value); - $this->assertSame($expected, $this->resolver->getInt('OTEL_FOO')); - } - - public static function intProvider(): array - { - return [ - ['0', 0], - ['1', 1], - ['-1', -1], - ['', null], - [null, null], - ['3.14159', null], - ]; - } - - /** - * @dataProvider listProvider - */ - public function test_get_list(?string $value, array $expected): void - { - $this->assertFalse($this->resolver->has('OTEL_FOO')); - $this->setEnvironmentVariable('OTEL_FOO', $value); - $this->assertSame($expected, $this->resolver->getList('OTEL_FOO')); - } - - public static function listProvider(): array - { - return [ - ['foo,bar,baz', ['foo','bar','baz']], - ['foo', ['foo']], - ['', []], - [null, []], - ]; - } - - public function test_has_when_missing(): void - { - $this->assertFalse($this->resolver->has('OTEL_MISSING')); - } -} From dc58115076328c48151a31f71d9a78c6e69356db Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Tue, 5 Mar 2024 10:17:38 +1100 Subject: [PATCH 03/11] ini accessor cannot return null --- tests/Unit/Config/Resolver/PhpIniResolverTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Unit/Config/Resolver/PhpIniResolverTest.php b/tests/Unit/Config/Resolver/PhpIniResolverTest.php index 244149d90..336622eab 100644 --- a/tests/Unit/Config/Resolver/PhpIniResolverTest.php +++ b/tests/Unit/Config/Resolver/PhpIniResolverTest.php @@ -50,7 +50,7 @@ public function hasVariableProvider(): array 'string' => ['foo', true], 'array' => [['foo'], true], 'empty string' => ['', false], - 'null' => [null, false], + 'false' => [false, false], 'empty array' => [[], false], ]; } From b2112e0d3a2e87093fee6cf3da437831574b0b8c Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Tue, 5 Mar 2024 11:20:36 +1100 Subject: [PATCH 04/11] type-hints --- src/Config/Accessor/ClassConstantAccessor.php | 4 ++-- .../{Resolver => Accessor}/PhpIniAccessor.php | 5 ++-- src/Config/Configuration.php | 4 ++-- src/Config/Parser/BooleanParser.php | 5 +--- src/Config/Parser/ListParser.php | 5 +--- src/Config/Parser/MapParser.php | 4 ++-- src/Config/Parser/RatioParser.php | 2 +- src/Config/Resolver/CompositeResolver.php | 2 +- src/Config/Resolver/EnvironmentResolver.php | 6 +---- src/Config/Resolver/PhpIniResolver.php | 3 ++- src/Config/Resolver/ResolverInterface.php | 5 +--- .../Config/Accessor/PhpIniAccessorTest.php | 23 ++++++++++++++++++ .../Unit/Config/Parser/BooleanParserTest.php | 24 +++++++++++++++---- tests/Unit/Config/Parser/ListParserTest.php | 11 ++++++--- tests/Unit/Config/Parser/MapParserTest.php | 15 ++++++++---- .../Config/Resolver/PhpIniResolverTest.php | 2 +- 16 files changed, 78 insertions(+), 42 deletions(-) rename src/Config/{Resolver => Accessor}/PhpIniAccessor.php (61%) create mode 100644 tests/Unit/Config/Accessor/PhpIniAccessorTest.php diff --git a/src/Config/Accessor/ClassConstantAccessor.php b/src/Config/Accessor/ClassConstantAccessor.php index 02ad5685a..6d51f28fd 100644 --- a/src/Config/Accessor/ClassConstantAccessor.php +++ b/src/Config/Accessor/ClassConstantAccessor.php @@ -8,7 +8,7 @@ class ClassConstantAccessor { - public static function requireValue(string $className, string $constantName) + public static function requireValue(string $className, string $constantName): mixed { $constant = self::getFullName($className, $constantName); @@ -21,7 +21,7 @@ public static function requireValue(string $className, string $constantName) return constant($constant); } - public static function getValue(string $className, string $constantName) + public static function getValue(string $className, string $constantName): mixed { $constant = self::getFullName($className, $constantName); diff --git a/src/Config/Resolver/PhpIniAccessor.php b/src/Config/Accessor/PhpIniAccessor.php similarity index 61% rename from src/Config/Resolver/PhpIniAccessor.php rename to src/Config/Accessor/PhpIniAccessor.php index fb0c9d846..c1d7cc131 100644 --- a/src/Config/Resolver/PhpIniAccessor.php +++ b/src/Config/Accessor/PhpIniAccessor.php @@ -2,16 +2,15 @@ declare(strict_types=1); -namespace OpenTelemetry\Config\Resolver; +namespace OpenTelemetry\Config\Accessor; class PhpIniAccessor { /** * Mockable accessor for php.ini values * @internal - * @return array|false|string */ - public function get(string $variableName) + public function get(string $variableName): array|false|string { return get_cfg_var($variableName); } diff --git a/src/Config/Configuration.php b/src/Config/Configuration.php index fc61c890f..4f6e58c97 100644 --- a/src/Config/Configuration.php +++ b/src/Config/Configuration.php @@ -58,7 +58,7 @@ public static function getBoolean(string $key, bool $default = null): bool return BooleanParser::parse($resolved); } - public static function getMixed(string $key, $default = null) + public static function getMixed(string $key, $default = null): mixed { return self::validateVariableValue( CompositeResolver::instance()->resolve( @@ -155,7 +155,7 @@ private static function validateVariableType(string $variableName, string $type) return $variableName; } - private static function validateVariableValue($value, ?int $filterType = null) + private static function validateVariableValue(mixed $value, ?int $filterType = null): mixed { if ($filterType !== null && filter_var($value, $filterType) === false) { throw new UnexpectedValueException(sprintf('Value has invalid type "%s"', gettype($value))); diff --git a/src/Config/Parser/BooleanParser.php b/src/Config/Parser/BooleanParser.php index 76ac2178e..b2078fc22 100644 --- a/src/Config/Parser/BooleanParser.php +++ b/src/Config/Parser/BooleanParser.php @@ -11,10 +11,7 @@ class BooleanParser private const TRUE_VALUE = 'true'; private const FALSE_VALUE = 'false'; - /** - * @param string|bool $value - */ - public static function parse($value): bool + public static function parse(string|bool $value): bool { if (is_bool($value)) { return $value; diff --git a/src/Config/Parser/ListParser.php b/src/Config/Parser/ListParser.php index 97fd42dae..6acad92cf 100644 --- a/src/Config/Parser/ListParser.php +++ b/src/Config/Parser/ListParser.php @@ -8,10 +8,7 @@ class ListParser { private const DEFAULT_SEPARATOR = ','; - /** - * @param string|array $value - */ - public static function parse($value): array + public static function parse(string|array $value): array { if (is_array($value)) { return $value; diff --git a/src/Config/Parser/MapParser.php b/src/Config/Parser/MapParser.php index ee8c8ffe4..1aa8a5271 100644 --- a/src/Config/Parser/MapParser.php +++ b/src/Config/Parser/MapParser.php @@ -11,7 +11,7 @@ class MapParser private const VARIABLE_SEPARATOR = ','; private const KEY_VALUE_SEPARATOR = '='; - public static function parse($value): array + public static function parse(string|array|null $value): array { if (is_array($value)) { return $value; @@ -33,7 +33,7 @@ public static function parse($value): array return $result; } - private static function validateKeyValuePair(string $pair) + private static function validateKeyValuePair(string $pair): void { if (!str_contains($pair, self::KEY_VALUE_SEPARATOR)) { throw new InvalidArgumentException(sprintf( diff --git a/src/Config/Parser/RatioParser.php b/src/Config/Parser/RatioParser.php index c1256ab97..a924c9729 100644 --- a/src/Config/Parser/RatioParser.php +++ b/src/Config/Parser/RatioParser.php @@ -12,7 +12,7 @@ class RatioParser private const MAX_VALUE = 1; private const MIN_VALUE = 0; - public static function parse($value): float + public static function parse(string|int|float $value): float { if (filter_var($value, FILTER_VALIDATE_FLOAT) === false) { throw new InvalidArgumentException( diff --git a/src/Config/Resolver/CompositeResolver.php b/src/Config/Resolver/CompositeResolver.php index 320d4038a..39d162bbf 100644 --- a/src/Config/Resolver/CompositeResolver.php +++ b/src/Config/Resolver/CompositeResolver.php @@ -42,7 +42,7 @@ public function getResolvers(): array return $this->resolvers; } - public function resolve(string $variableName, $default = '') + public function resolve(string $variableName, mixed $default = ''): mixed { foreach ($this->resolvers as $resolver) { if ($resolver->hasVariable($variableName)) { diff --git a/src/Config/Resolver/EnvironmentResolver.php b/src/Config/Resolver/EnvironmentResolver.php index 6604b914b..e036e0980 100644 --- a/src/Config/Resolver/EnvironmentResolver.php +++ b/src/Config/Resolver/EnvironmentResolver.php @@ -24,11 +24,7 @@ public function hasVariable(string $variableName): bool return !Configuration::isEmpty($env); } - /** - * @psalm-suppress InvalidReturnStatement - * @psalm-suppress InvalidReturnType - */ - public function retrieveValue(string $variableName) + public function retrieveValue(string $variableName): mixed { $value = getenv($variableName); if ($value === false) { diff --git a/src/Config/Resolver/PhpIniResolver.php b/src/Config/Resolver/PhpIniResolver.php index a0fdd4587..e0ffb6cbc 100644 --- a/src/Config/Resolver/PhpIniResolver.php +++ b/src/Config/Resolver/PhpIniResolver.php @@ -4,6 +4,7 @@ namespace OpenTelemetry\Config\Resolver; +use OpenTelemetry\Config\Accessor\PhpIniAccessor; use OpenTelemetry\Config\Configuration; /** @@ -19,7 +20,7 @@ public function __construct(?PhpIniAccessor $accessor = null) $this->accessor = $accessor ?? new PhpIniAccessor(); } - public function retrieveValue(string $variableName) + public function retrieveValue(string $variableName): string|bool { $value = $this->accessor->get($variableName) ?: ''; if (is_array($value)) { diff --git a/src/Config/Resolver/ResolverInterface.php b/src/Config/Resolver/ResolverInterface.php index 63ec2e861..372558498 100644 --- a/src/Config/Resolver/ResolverInterface.php +++ b/src/Config/Resolver/ResolverInterface.php @@ -6,10 +6,7 @@ interface ResolverInterface { - /** - * @return mixed - */ - public function retrieveValue(string $variableName); + public function retrieveValue(string $variableName): mixed; public function hasVariable(string $variableName): bool; } diff --git a/tests/Unit/Config/Accessor/PhpIniAccessorTest.php b/tests/Unit/Config/Accessor/PhpIniAccessorTest.php new file mode 100644 index 000000000..4f7e04c72 --- /dev/null +++ b/tests/Unit/Config/Accessor/PhpIniAccessorTest.php @@ -0,0 +1,23 @@ +get('assert.active'); + + /** @psalm-suppress RedundantCondition */ + $this->assertNotNull($value); + } +} diff --git a/tests/Unit/Config/Parser/BooleanParserTest.php b/tests/Unit/Config/Parser/BooleanParserTest.php index d8ca41762..008003dee 100644 --- a/tests/Unit/Config/Parser/BooleanParserTest.php +++ b/tests/Unit/Config/Parser/BooleanParserTest.php @@ -71,7 +71,7 @@ public function test_disallowed_boolean_type_values_throw_exception(string $valu BooleanParser::parse($value); } - public function disallowedBooleanProvider(): array + public static function disallowedBooleanProvider(): array { return self::DISALLOWED_BOOLEAN_VALUES; } @@ -86,18 +86,34 @@ public function test_non_boolean_values_throw_exception(string $value): void BooleanParser::parse($value); } - public function truthyValueProvider(): array + public static function truthyValueProvider(): array { return self::TRUTHY_VALUES; } - public function falsyValueProvider(): array + public static function falsyValueProvider(): array { return self::FALSY_VALUES; } - public function nonBooleanValueProvider(): array + public static function nonBooleanValueProvider(): array { return self::NON_BOOLEAN_VALUES; } + + /** + * @dataProvider boolProvider + */ + public function test_boolean(bool $bool): void + { + $this->assertSame($bool, BooleanParser::parse($bool)); + } + + public static function boolProvider(): array + { + return [ + [true], + [false], + ]; + } } diff --git a/tests/Unit/Config/Parser/ListParserTest.php b/tests/Unit/Config/Parser/ListParserTest.php index 599066ac0..deefc712a 100644 --- a/tests/Unit/Config/Parser/ListParserTest.php +++ b/tests/Unit/Config/Parser/ListParserTest.php @@ -4,6 +4,7 @@ namespace OpenTelemetry\Tests\Unit\Config\Parser; +use OpenTelemetry\Config\Parser\ListParser; use PHPUnit\Framework\TestCase; /** @@ -32,20 +33,24 @@ class ListParserTest extends TestCase 'foo, bar , faz, baz', ['foo', 'bar', 'faz', 'baz'], ], + 'array' => [ + ['foo', 'bar'], + ['foo', 'bar'], + ], ]; /** * @dataProvider listValueProvider */ - public function test_comma_separated_list_returns_array(string $value, array $expected): void + public function test_comma_separated_list_returns_array(mixed $value, array $expected): void { $this->assertSame( - \OpenTelemetry\Config\Parser\ListParser::parse($value), + ListParser::parse($value), $expected ); } - public function listValueProvider(): array + public static function listValueProvider(): array { return self::LIST_VALUES; } diff --git a/tests/Unit/Config/Parser/MapParserTest.php b/tests/Unit/Config/Parser/MapParserTest.php index af9117186..f73282dd1 100644 --- a/tests/Unit/Config/Parser/MapParserTest.php +++ b/tests/Unit/Config/Parser/MapParserTest.php @@ -5,6 +5,7 @@ namespace OpenTelemetry\Tests\Unit\Config\Parser; use InvalidArgumentException; +use OpenTelemetry\Config\Parser\MapParser; use PHPUnit\Framework\TestCase; /** @@ -33,6 +34,10 @@ class MapParserTest extends TestCase 'Authorization=Basic 1234abc=,bar=baz', ['Authorization' => 'Basic 1234abc=', 'bar' => 'baz'], ], + 'array' => [ + ['foo' => 'foo', 'bar' => 'bar'], + ['foo' => 'foo', 'bar' => 'bar'], + ], ]; private const INVALID_VALUES = [ @@ -43,10 +48,10 @@ class MapParserTest extends TestCase /** * @dataProvider mapValueProvider */ - public function test_map_values_return_array(string $value, array $expected): void + public function test_map_values_return_array(string|array $value, array $expected): void { $this->assertSame( - \OpenTelemetry\Config\Parser\MapParser::parse($value), + MapParser::parse($value), $expected ); } @@ -58,15 +63,15 @@ public function test_invalid_values_throw_exception(string $value): void { $this->expectException(InvalidArgumentException::class); - \OpenTelemetry\Config\Parser\MapParser::parse($value); + MapParser::parse($value); } - public function mapValueProvider(): array + public static function mapValueProvider(): array { return self::MAP_VALUES; } - public function invalidValueProvider(): array + public static function invalidValueProvider(): array { return self::INVALID_VALUES; } diff --git a/tests/Unit/Config/Resolver/PhpIniResolverTest.php b/tests/Unit/Config/Resolver/PhpIniResolverTest.php index 336622eab..e6a396a71 100644 --- a/tests/Unit/Config/Resolver/PhpIniResolverTest.php +++ b/tests/Unit/Config/Resolver/PhpIniResolverTest.php @@ -4,7 +4,7 @@ namespace OpenTelemetry\Tests\Unit\Config\Resolver; -use OpenTelemetry\Config\Resolver\PhpIniAccessor; +use OpenTelemetry\Config\Accessor\PhpIniAccessor; use OpenTelemetry\Config\Resolver\PhpIniResolver; use PHPUnit\Framework\TestCase; From 684d650c9fde2b450ba972d460335e75da0b0a36 Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Tue, 5 Mar 2024 12:27:17 +1100 Subject: [PATCH 05/11] use configuration for context debug scopes disable --- deptrac.yaml | 1 + src/API/Behavior/Internal/Logging.php | 12 +--- src/Config/Resolver/CompositeResolver.php | 2 +- src/Config/ValueTypes.php | 2 + src/Config/Variables.php | 1 + src/Context/Context.php | 11 +--- src/Context/composer.json | 1 + tests/Unit/Context/ContextTest.php | 75 +++++------------------ 8 files changed, 27 insertions(+), 78 deletions(-) diff --git a/deptrac.yaml b/deptrac.yaml index 74d2be469..d4ec0b65a 100644 --- a/deptrac.yaml +++ b/deptrac.yaml @@ -85,6 +85,7 @@ deptrac: ruleset: Context: - FFI + - Config SemConv: ~ API: - Config diff --git a/src/API/Behavior/Internal/Logging.php b/src/API/Behavior/Internal/Logging.php index e5bec7ab5..8369b7642 100644 --- a/src/API/Behavior/Internal/Logging.php +++ b/src/API/Behavior/Internal/Logging.php @@ -5,6 +5,8 @@ namespace OpenTelemetry\API\Behavior\Internal; use OpenTelemetry\API\Behavior\Internal\LogWriter\LogWriterInterface; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables; use Psr\Log\LogLevel; /** @@ -69,15 +71,7 @@ public static function logLevel(): int private static function getLogLevel(): int { - $level = array_key_exists(self::OTEL_LOG_LEVEL, $_SERVER) - ? $_SERVER[self::OTEL_LOG_LEVEL] - : getenv(self::OTEL_LOG_LEVEL); - if (!$level) { - $level = ini_get(self::OTEL_LOG_LEVEL); - } - if (!$level) { - $level = self::DEFAULT_LEVEL; - } + $level = Configuration::getEnum(Variables::OTEL_LOG_LEVEL, self::DEFAULT_LEVEL); return self::level($level); } diff --git a/src/Config/Resolver/CompositeResolver.php b/src/Config/Resolver/CompositeResolver.php index 39d162bbf..61cebcad6 100644 --- a/src/Config/Resolver/CompositeResolver.php +++ b/src/Config/Resolver/CompositeResolver.php @@ -11,7 +11,7 @@ */ class CompositeResolver { - // @var array + // @var list private array $resolvers = []; public static function instance(): self diff --git a/src/Config/ValueTypes.php b/src/Config/ValueTypes.php index 59308e0b5..5e7cefca9 100644 --- a/src/Config/ValueTypes.php +++ b/src/Config/ValueTypes.php @@ -130,4 +130,6 @@ interface ValueTypes public const OTEL_PHP_LOG_DESTINATION = VariableTypes::ENUM; public const OTEL_PHP_INTERNAL_METRICS_ENABLED = VariableTypes::BOOL; public const OTEL_PHP_DISABLED_INSTRUMENTATIONS = VariableTypes::LIST; + public const OTEL_PHP_DEBUG_SCOPES_DISABLED = VariableTypes::BOOL; + public const OTEL_PHP_EXCLUDED_URLS = VariableTypes::LIST; } diff --git a/src/Config/Variables.php b/src/Config/Variables.php index cdf565884..41129e455 100644 --- a/src/Config/Variables.php +++ b/src/Config/Variables.php @@ -138,6 +138,7 @@ interface Variables public const OTEL_PHP_DETECTORS = 'OTEL_PHP_DETECTORS'; public const OTEL_PHP_AUTOLOAD_ENABLED = 'OTEL_PHP_AUTOLOAD_ENABLED'; public const OTEL_PHP_INTERNAL_METRICS_ENABLED = 'OTEL_PHP_INTERNAL_METRICS_ENABLED'; //whether the SDK should emit its own metrics + public const OTEL_PHP_DEBUG_SCOPES_DISABLED = 'OTEL_PHP_DEBUG_SCOPES_DISABLED'; public const OTEL_PHP_DISABLED_INSTRUMENTATIONS = 'OTEL_PHP_DISABLED_INSTRUMENTATIONS'; public const OTEL_PHP_EXCLUDED_URLS = 'OTEL_PHP_EXCLUDED_URLS'; } diff --git a/src/Context/Context.php b/src/Context/Context.php index 278c27d3e..2ee017581 100644 --- a/src/Context/Context.php +++ b/src/Context/Context.php @@ -5,8 +5,8 @@ namespace OpenTelemetry\Context; use function assert; -use const FILTER_VALIDATE_BOOLEAN; -use function filter_var; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables; use function spl_object_id; /** @@ -14,8 +14,6 @@ */ final class Context implements ContextInterface { - private const OTEL_PHP_DEBUG_SCOPES_DISABLED = 'OTEL_PHP_DEBUG_SCOPES_DISABLED'; - /** @var ContextStorageInterface&ExecutionContextAwareInterface */ private static ContextStorageInterface $storage; @@ -92,10 +90,7 @@ public function activate(): ScopeInterface private static function debugScopesDisabled(): bool { - return filter_var( - $_SERVER[self::OTEL_PHP_DEBUG_SCOPES_DISABLED] ?? \getenv(self::OTEL_PHP_DEBUG_SCOPES_DISABLED) ?: \ini_get(self::OTEL_PHP_DEBUG_SCOPES_DISABLED), - FILTER_VALIDATE_BOOLEAN - ); + return Configuration::getBoolean(Variables::OTEL_PHP_DEBUG_SCOPES_DISABLED, false); } public function withContextValue(ImplicitContextKeyedInterface $value): ContextInterface diff --git a/src/Context/composer.json b/src/Context/composer.json index ee191de9b..d82cc7b4a 100644 --- a/src/Context/composer.json +++ b/src/Context/composer.json @@ -18,6 +18,7 @@ ], "require": { "php": "^8.0", + "open-telemetry/config": "*", "symfony/polyfill-php81": "^1.26", "symfony/polyfill-php82": "^1.26" }, diff --git a/tests/Unit/Context/ContextTest.php b/tests/Unit/Context/ContextTest.php index b023300a4..27b1d7822 100644 --- a/tests/Unit/Context/ContextTest.php +++ b/tests/Unit/Context/ContextTest.php @@ -4,6 +4,8 @@ namespace OpenTelemetry\Tests\Unit\Context; +use AssertWell\PHPUnitGlobalState\EnvironmentVariables; +use OpenTelemetry\Config\Variables; use OpenTelemetry\Context\Context; use OpenTelemetry\Context\ContextKeys; use OpenTelemetry\Context\DebugScope; @@ -16,6 +18,15 @@ */ class ContextTest extends TestCase { + use EnvironmentVariables; + + public function tearDown(): void + { + $this->restoreEnvironmentVariables(); + unset($_SERVER[Variables::OTEL_PHP_DEBUG_SCOPES_DISABLED]); + \putenv('OTEL_PHP_DEBUG_SCOPES_DISABLED'); + } + public function test_activate(): void { $context = Context::getRoot(); @@ -179,87 +190,31 @@ public function test_attach_and_detach_set_current_ctx(): void } } - public function test_debug_scopes_disabled_env_var(): void + public function test_debug_scopes_disabled(): void { - \putenv('OTEL_PHP_DEBUG_SCOPES_DISABLED=1'); + $this->setEnvironmentVariable(Variables::OTEL_PHP_DEBUG_SCOPES_DISABLED, 'true'); $context = Context::getRoot(); - $scope = $context->activate(); try { $this->assertNotInstanceOf(DebugScope::class, $scope); } finally { $scope->detach(); - \putenv('OTEL_PHP_DEBUG_SCOPES_DISABLED'); } } - public function test_debug_scopes_disabled_server_var(): void + public function test_debug_scopes_disabled_false(): void { - $_SERVER['OTEL_PHP_DEBUG_SCOPES_DISABLED'] = '1'; + $this->setEnvironmentVariable(Variables::OTEL_PHP_DEBUG_SCOPES_DISABLED, 'false'); $context = Context::getRoot(); - - $scope = $context->activate(); - - try { - $this->assertNotInstanceOf(DebugScope::class, $scope); - } finally { - $scope->detach(); - unset($_SERVER['OTEL_PHP_DEBUG_SCOPES_DISABLED']); - } - } - - public function test_debug_scopes_disabled_order_server(): void - { - $_SERVER['OTEL_PHP_DEBUG_SCOPES_DISABLED'] = '1'; - \putenv('OTEL_PHP_DEBUG_SCOPES_DISABLED=0'); - - $context = Context::getRoot(); - - $scope = $context->activate(); - - try { - $this->assertNotInstanceOf(DebugScope::class, $scope); - } finally { - $scope->detach(); - unset($_SERVER['OTEL_PHP_DEBUG_SCOPES_DISABLED']); - \putenv('OTEL_PHP_DEBUG_SCOPES_DISABLED'); - } - } - - public function test_debug_scopes_disabled_falsey_server(): void - { - $_SERVER['OTEL_PHP_DEBUG_SCOPES_DISABLED'] = '0'; - \putenv('OTEL_PHP_DEBUG_SCOPES_DISABLED=1'); - - $context = Context::getRoot(); - - $scope = $context->activate(); - - try { - $this->assertInstanceOf(DebugScope::class, $scope); - } finally { - $scope->detach(); - unset($_SERVER['OTEL_PHP_DEBUG_SCOPES_DISABLED']); - \putenv('OTEL_PHP_DEBUG_SCOPES_DISABLED'); - } - } - - public function test_debug_scopes_disabled_falsey_env(): void - { - \putenv('OTEL_PHP_DEBUG_SCOPES_DISABLED=0'); - - $context = Context::getRoot(); - $scope = $context->activate(); try { $this->assertInstanceOf(DebugScope::class, $scope); } finally { $scope->detach(); - \putenv('OTEL_PHP_DEBUG_SCOPES_DISABLED'); } } } From 176a67d0cba67bcec541df662e229679d56c9703 Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Tue, 5 Mar 2024 13:23:52 +1100 Subject: [PATCH 06/11] retrieve OTEL_PHP_FIBERS_ENABLED from configuration library --- src/Config/ValueTypes.php | 1 + src/Config/Variables.php | 1 + src/Context/ZendObserverFiber.php | 11 +++-------- .../Fiber/test_context_switching_ffi_observer.phpt | 2 +- ..._switching_ffi_observer_registered_on_startup.phpt | 2 +- .../Fiber/test_context_switching_not_supported.phpt | 2 +- 6 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/Config/ValueTypes.php b/src/Config/ValueTypes.php index 5e7cefca9..77a815b03 100644 --- a/src/Config/ValueTypes.php +++ b/src/Config/ValueTypes.php @@ -132,4 +132,5 @@ interface ValueTypes public const OTEL_PHP_DISABLED_INSTRUMENTATIONS = VariableTypes::LIST; public const OTEL_PHP_DEBUG_SCOPES_DISABLED = VariableTypes::BOOL; public const OTEL_PHP_EXCLUDED_URLS = VariableTypes::LIST; + public const OTEL_PHP_FIBERS_ENABLED = VariableTypes::BOOL; } diff --git a/src/Config/Variables.php b/src/Config/Variables.php index 41129e455..ee8a820e5 100644 --- a/src/Config/Variables.php +++ b/src/Config/Variables.php @@ -141,4 +141,5 @@ interface Variables public const OTEL_PHP_DEBUG_SCOPES_DISABLED = 'OTEL_PHP_DEBUG_SCOPES_DISABLED'; public const OTEL_PHP_DISABLED_INSTRUMENTATIONS = 'OTEL_PHP_DISABLED_INSTRUMENTATIONS'; public const OTEL_PHP_EXCLUDED_URLS = 'OTEL_PHP_EXCLUDED_URLS'; + public const OTEL_PHP_FIBERS_ENABLED = 'OTEL_PHP_FIBERS_ENABLED'; } diff --git a/src/Context/ZendObserverFiber.php b/src/Context/ZendObserverFiber.php index 4d3d0c5ef..e9ac847a7 100644 --- a/src/Context/ZendObserverFiber.php +++ b/src/Context/ZendObserverFiber.php @@ -11,9 +11,8 @@ use function extension_loaded; use FFI; -use const FILTER_VALIDATE_BOOLEAN; -use function filter_var; -use function is_string; +use OpenTelemetry\Config\Configuration; +use OpenTelemetry\Config\Variables; use const PHP_VERSION_ID; use const PHP_ZTS; use function sprintf; @@ -26,11 +25,7 @@ final class ZendObserverFiber { public static function isEnabled(): bool { - $enabled = $_SERVER['OTEL_PHP_FIBERS_ENABLED'] ?? false; - - return is_string($enabled) - ? filter_var($enabled, FILTER_VALIDATE_BOOLEAN) - : (bool) $enabled; + return Configuration::getBoolean(Variables::OTEL_PHP_FIBERS_ENABLED, false); } public static function init(): bool diff --git a/tests/Integration/Context/Fiber/test_context_switching_ffi_observer.phpt b/tests/Integration/Context/Fiber/test_context_switching_ffi_observer.phpt index f6ce0eb81..90acc2f86 100644 --- a/tests/Integration/Context/Fiber/test_context_switching_ffi_observer.phpt +++ b/tests/Integration/Context/Fiber/test_context_switching_ffi_observer.phpt @@ -3,7 +3,7 @@ Context switches on execution context switch. --SKIPIF-- --ENV-- -OTEL_PHP_FIBERS_ENABLED=1 +OTEL_PHP_FIBERS_ENABLED=true --FILE-- --ENV-- -OTEL_PHP_FIBERS_ENABLED=1 +OTEL_PHP_FIBERS_ENABLED=true --FILE-- --ENV-- -OTEL_PHP_FIBERS_ENABLED=0 +OTEL_PHP_FIBERS_ENABLED=false --FILE-- Date: Tue, 5 Mar 2024 14:04:50 +1100 Subject: [PATCH 07/11] internal --- src/Config/Accessor/ClassConstantAccessor.php | 3 +++ src/Config/Accessor/PhpIniAccessor.php | 4 +++- src/Config/Configuration.php | 2 +- src/Config/Parser/BooleanParser.php | 3 +++ src/Config/Parser/ListParser.php | 3 +++ src/Config/Parser/MapParser.php | 3 +++ src/Config/Parser/RatioParser.php | 3 +++ 7 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/Config/Accessor/ClassConstantAccessor.php b/src/Config/Accessor/ClassConstantAccessor.php index 6d51f28fd..0eed71ab6 100644 --- a/src/Config/Accessor/ClassConstantAccessor.php +++ b/src/Config/Accessor/ClassConstantAccessor.php @@ -6,6 +6,9 @@ use LogicException; +/** + * @internal + */ class ClassConstantAccessor { public static function requireValue(string $className, string $constantName): mixed diff --git a/src/Config/Accessor/PhpIniAccessor.php b/src/Config/Accessor/PhpIniAccessor.php index c1d7cc131..d98d9a9d2 100644 --- a/src/Config/Accessor/PhpIniAccessor.php +++ b/src/Config/Accessor/PhpIniAccessor.php @@ -4,11 +4,13 @@ namespace OpenTelemetry\Config\Accessor; +/** + * @internal + */ class PhpIniAccessor { /** * Mockable accessor for php.ini values - * @internal */ public function get(string $variableName): array|false|string { diff --git a/src/Config/Configuration.php b/src/Config/Configuration.php index 4f6e58c97..838ef8205 100644 --- a/src/Config/Configuration.php +++ b/src/Config/Configuration.php @@ -15,7 +15,7 @@ /** * Configuration can come from one or more of the following sources (from highest to lowest priority): * - values defined in php.ini - * - environment variable ($_SERVER) + * - environment variable (getenv, $_SERVER) * - configuration file (todo) */ class Configuration diff --git a/src/Config/Parser/BooleanParser.php b/src/Config/Parser/BooleanParser.php index b2078fc22..f6893f36f 100644 --- a/src/Config/Parser/BooleanParser.php +++ b/src/Config/Parser/BooleanParser.php @@ -6,6 +6,9 @@ use InvalidArgumentException; +/** + * @internal + */ class BooleanParser { private const TRUE_VALUE = 'true'; diff --git a/src/Config/Parser/ListParser.php b/src/Config/Parser/ListParser.php index 6acad92cf..014fe1c64 100644 --- a/src/Config/Parser/ListParser.php +++ b/src/Config/Parser/ListParser.php @@ -4,6 +4,9 @@ namespace OpenTelemetry\Config\Parser; +/** + * @internal + */ class ListParser { private const DEFAULT_SEPARATOR = ','; diff --git a/src/Config/Parser/MapParser.php b/src/Config/Parser/MapParser.php index 1aa8a5271..64553dc72 100644 --- a/src/Config/Parser/MapParser.php +++ b/src/Config/Parser/MapParser.php @@ -6,6 +6,9 @@ use InvalidArgumentException; +/** + * @internal + */ class MapParser { private const VARIABLE_SEPARATOR = ','; diff --git a/src/Config/Parser/RatioParser.php b/src/Config/Parser/RatioParser.php index a924c9729..0898e0798 100644 --- a/src/Config/Parser/RatioParser.php +++ b/src/Config/Parser/RatioParser.php @@ -7,6 +7,9 @@ use InvalidArgumentException; use RangeException; +/** + * @internal + */ class RatioParser { private const MAX_VALUE = 1; From 98ba719f229667df7f78bba0f3900668939208dd Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Tue, 5 Mar 2024 14:14:09 +1100 Subject: [PATCH 08/11] define default values for additional config vars --- src/Config/Configuration.php | 2 +- src/Config/Defaults.php | 2 ++ src/Context/Context.php | 2 +- src/Context/README.md | 6 +++--- src/Context/ZendObserverFiber.php | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Config/Configuration.php b/src/Config/Configuration.php index 838ef8205..7f0cb6b86 100644 --- a/src/Config/Configuration.php +++ b/src/Config/Configuration.php @@ -14,8 +14,8 @@ /** * Configuration can come from one or more of the following sources (from highest to lowest priority): - * - values defined in php.ini * - environment variable (getenv, $_SERVER) + * - values defined in php.ini * - configuration file (todo) */ class Configuration diff --git a/src/Config/Defaults.php b/src/Config/Defaults.php index 419858d4c..566f3e608 100644 --- a/src/Config/Defaults.php +++ b/src/Config/Defaults.php @@ -119,4 +119,6 @@ interface Defaults public const OTEL_PHP_DISABLED_INSTRUMENTATIONS = []; public const OTEL_PHP_LOGS_PROCESSOR = 'batch'; public const OTEL_PHP_LOG_DESTINATION = 'default'; + public const OTEL_PHP_DEBUG_SCOPES_DISABLED = 'false'; + public const OTEL_PHP_FIBERS_ENABLED = 'false'; } diff --git a/src/Context/Context.php b/src/Context/Context.php index 2ee017581..a92192bca 100644 --- a/src/Context/Context.php +++ b/src/Context/Context.php @@ -90,7 +90,7 @@ public function activate(): ScopeInterface private static function debugScopesDisabled(): bool { - return Configuration::getBoolean(Variables::OTEL_PHP_DEBUG_SCOPES_DISABLED, false); + return Configuration::getBoolean(Variables::OTEL_PHP_DEBUG_SCOPES_DISABLED); } public function withContextValue(ImplicitContextKeyedInterface $value): ContextInterface diff --git a/src/Context/README.md b/src/Context/README.md index 8a1ea2584..dbf3d0531 100644 --- a/src/Context/README.md +++ b/src/Context/README.md @@ -34,14 +34,14 @@ It is recommended to use a `try-finally` statement after `::activate()` to ensur ### Debug scopes By default, scopes created by `::activate()` warn on invalid and missing calls to `::detach()` in non-production -environments. This feature can be disabled by setting the environment variable `OTEL_PHP_DEBUG_SCOPES_DISABLED` to a -truthy value. Disabling is only recommended for applications using `exit` / `die` to prevent unavoidable notices. +environments. This feature can be disabled by setting the environment variable `OTEL_PHP_DEBUG_SCOPES_DISABLED` to `true`. +Disabling is only recommended for applications using `exit` / `die` to prevent unavoidable notices. ## Async applications ### Fiber support -Requires `PHP >= 8.1`, an NTS build, `ext-ffi`, and setting the environment variable `OTEL_PHP_FIBERS_ENABLED` to a truthy value. Additionally `vendor/autoload.php` has to be preloaded for non-CLI SAPIs if [`ffi.enable`](https://www.php.net/manual/en/ffi.configuration.php#ini.ffi.enable) is set to `preload`. +Requires `PHP >= 8.1`, an NTS build, `ext-ffi`, and setting the environment variable `OTEL_PHP_FIBERS_ENABLED` to `true`. Additionally `vendor/autoload.php` has to be preloaded for non-CLI SAPIs if [`ffi.enable`](https://www.php.net/manual/en/ffi.configuration.php#ini.ffi.enable) is set to `preload`. ### Event loops diff --git a/src/Context/ZendObserverFiber.php b/src/Context/ZendObserverFiber.php index e9ac847a7..77b45dcdd 100644 --- a/src/Context/ZendObserverFiber.php +++ b/src/Context/ZendObserverFiber.php @@ -25,7 +25,7 @@ final class ZendObserverFiber { public static function isEnabled(): bool { - return Configuration::getBoolean(Variables::OTEL_PHP_FIBERS_ENABLED, false); + return Configuration::getBoolean(Variables::OTEL_PHP_FIBERS_ENABLED); } public static function init(): bool From 911121e55f72aa8474d771690e96fd2592ba490d Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Tue, 5 Mar 2024 15:24:59 +1100 Subject: [PATCH 09/11] remove unneeded teardown step --- tests/Unit/Context/ContextTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Unit/Context/ContextTest.php b/tests/Unit/Context/ContextTest.php index 27b1d7822..67f63739d 100644 --- a/tests/Unit/Context/ContextTest.php +++ b/tests/Unit/Context/ContextTest.php @@ -24,7 +24,6 @@ public function tearDown(): void { $this->restoreEnvironmentVariables(); unset($_SERVER[Variables::OTEL_PHP_DEBUG_SCOPES_DISABLED]); - \putenv('OTEL_PHP_DEBUG_SCOPES_DISABLED'); } public function test_activate(): void From 2d0ea152a5d37d7a9be79b5d60eb5c3374c5f7e4 Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Tue, 23 Apr 2024 12:36:15 +1000 Subject: [PATCH 10/11] remove value type and variable type checking per review feedback, this can be checked with tests rather than at runtime --- deptrac.yaml | 4 +- src/Config/Configuration/Configuration.php | 55 +------ src/Config/Configuration/ValueTypes.php | 136 ----------------- src/Config/Configuration/VariableTypes.php | 62 -------- .../Configuration/ConfigurationTest.php | 137 ++++++------------ 5 files changed, 52 insertions(+), 342 deletions(-) delete mode 100644 src/Config/Configuration/ValueTypes.php delete mode 100644 src/Config/Configuration/VariableTypes.php diff --git a/deptrac.yaml b/deptrac.yaml index e41e0413f..fcbbc3133 100644 --- a/deptrac.yaml +++ b/deptrac.yaml @@ -91,8 +91,8 @@ deptrac: regex: ^Symfony\\Component\\* - name: SPI collectors: - - type: className - regex: ^Nevay\\SPI\\* + - type: className + regex: ^Nevay\\SPI\\* ruleset: Context: diff --git a/src/Config/Configuration/Configuration.php b/src/Config/Configuration/Configuration.php index 459968c2d..9328532d6 100644 --- a/src/Config/Configuration/Configuration.php +++ b/src/Config/Configuration/Configuration.php @@ -28,10 +28,7 @@ public static function has(string $name): bool public static function getInt(string $key, int $default = null): int { return (int) self::validateVariableValue( - CompositeResolver::instance()->resolve( - self::validateVariableType($key, VariableTypes::INTEGER), - $default - ), + CompositeResolver::instance()->resolve($key, $default), FILTER_VALIDATE_INT ); } @@ -39,10 +36,7 @@ public static function getInt(string $key, int $default = null): int public static function getString(string $key, string $default = null): string { return (string) self::validateVariableValue( - CompositeResolver::instance()->resolve( - self::validateVariableType($key, VariableTypes::STRING), - $default - ) + CompositeResolver::instance()->resolve($key, $default), ); } @@ -50,7 +44,7 @@ public static function getBoolean(string $key, bool $default = null): bool { $resolved = self::validateVariableValue( CompositeResolver::instance()->resolve( - self::validateVariableType($key, VariableTypes::BOOL), + $key, null === $default ? $default : ($default ? 'true' : 'false') ) ); @@ -71,40 +65,28 @@ public static function getMixed(string $key, $default = null): mixed public static function getMap(string $key, array $default = null): array { return MapParser::parse( - CompositeResolver::instance()->resolve( - self::validateVariableType($key, VariableTypes::MAP), - $default - ) + CompositeResolver::instance()->resolve($key, $default), ); } public static function getList(string $key, array $default = null): array { return ListParser::parse( - CompositeResolver::instance()->resolve( - self::validateVariableType($key, VariableTypes::LIST), - $default - ) + CompositeResolver::instance()->resolve($key, $default), ); } public static function getEnum(string $key, string $default = null): string { return (string) self::validateVariableValue( - CompositeResolver::instance()->resolve( - self::validateVariableType($key, VariableTypes::ENUM), - $default - ) + CompositeResolver::instance()->resolve($key, $default), ); } public static function getFloat(string $key, float $default = null): float { return (float) self::validateVariableValue( - CompositeResolver::instance()->resolve( - self::validateVariableType($key, VariableTypes::FLOAT), - $default - ), + CompositeResolver::instance()->resolve($key, $default), FILTER_VALIDATE_FLOAT ); } @@ -113,10 +95,7 @@ public static function getRatio(string $key, float $default = null): float { return RatioParser::parse( self::validateVariableValue( - CompositeResolver::instance()->resolve( - self::validateVariableType($key, VariableTypes::RATIO), - $default - ) + CompositeResolver::instance()->resolve($key, $default), ) ); } @@ -131,30 +110,12 @@ public static function getDefault(string $variableName) return ClassConstantAccessor::getValue(Defaults::class, $variableName); } - public static function getType(string $variableName): ?string - { - return ClassConstantAccessor::getValue(ValueTypes::class, $variableName); - } - public static function isEmpty($value): bool { // don't use 'empty()', since '0' is not considered to be empty return $value === null || $value === ''; } - private static function validateVariableType(string $variableName, string $type): string - { - $variableType = self::getType($variableName); - - if ($variableType !== null && $variableType !== $type && $variableType !== VariableTypes::MIXED) { - throw new UnexpectedValueException( - sprintf('Variable "%s" is not supposed to be of type "%s" but type "%s"', $variableName, $type, $variableType) - ); - } - - return $variableName; - } - private static function validateVariableValue(mixed $value, ?int $filterType = null): mixed { if ($filterType !== null && filter_var($value, $filterType) === false) { diff --git a/src/Config/Configuration/ValueTypes.php b/src/Config/Configuration/ValueTypes.php deleted file mode 100644 index 339c48d7e..000000000 --- a/src/Config/Configuration/ValueTypes.php +++ /dev/null @@ -1,136 +0,0 @@ - ['getString'], - VariableTypes::BOOL => ['getBoolean'], - VariableTypes::INTEGER => ['getInt'], - VariableTypes::FLOAT => ['getFloat'], - VariableTypes::RATIO => ['getRatio'], - VariableTypes::ENUM => ['getEnum'], - VariableTypes::LIST => ['getList'], - VariableTypes::MAP => ['getMap'], - VariableTypes::MIXED => ['getMixed'], + 'string' => ['getString'], + 'bool' => ['getBoolean'], + 'integer' => ['getInt'], + 'float' => ['getFloat'], + 'ratio' => ['getRatio'], + 'enum' => ['getEnum'], + 'list' => ['getList'], + 'map' => ['getMap'], + 'mixed' => ['getMixed'], ]; private const TYPES = [ - VariableTypes::STRING => [Variables::OTEL_SERVICE_NAME], - VariableTypes::BOOL => [Variables::OTEL_EXPORTER_OTLP_INSECURE], - VariableTypes::INTEGER => [Variables::OTEL_BSP_MAX_QUEUE_SIZE], - VariableTypes::ENUM => [Variables::OTEL_LOG_LEVEL], - VariableTypes::LIST => [Variables::OTEL_PROPAGATORS], - VariableTypes::MAP => [Variables::OTEL_RESOURCE_ATTRIBUTES], - VariableTypes::MIXED => [Variables::OTEL_TRACES_SAMPLER_ARG], + 'string' => [Variables::OTEL_SERVICE_NAME], + 'bool' => [Variables::OTEL_EXPORTER_OTLP_INSECURE], + 'integer' => [Variables::OTEL_BSP_MAX_QUEUE_SIZE], + 'enum' => [Variables::OTEL_LOG_LEVEL], + 'list' => [Variables::OTEL_PROPAGATORS], + 'map' => [Variables::OTEL_RESOURCE_ATTRIBUTES], + 'mixed' => [Variables::OTEL_TRACES_SAMPLER_ARG], ]; private const USER_VALUES = [ - VariableTypes::STRING => ['foo', 'foo'], - VariableTypes::BOOL => ['true', true], - VariableTypes::INTEGER => ['42', 42], - VariableTypes::ENUM => ['val1', 'val1'], - VariableTypes::LIST => [['val1', 'val2'], ['val1','val2']], - VariableTypes::MAP => [['var1' => 'val1', 'var2' => 'val2'], ['var1'=>'val1','var2'=>'val2']], - VariableTypes::MIXED => ['foo', 'foo'], + 'string' => ['foo', 'foo'], + 'bool' => ['true', true], + 'integer' => ['42', 42], + 'enum' => ['val1', 'val1'], + 'list' => [['val1', 'val2'], ['val1','val2']], + 'map' => [['var1' => 'val1', 'var2' => 'val2'], ['var1'=>'val1','var2'=>'val2']], + 'mixed' => ['foo', 'foo'], ]; private const USER_ENV_VALUES = [ - VariableTypes::STRING => ['foo', 'foo'], - VariableTypes::BOOL => ['true', true], - VariableTypes::INTEGER => ['42', 42], - VariableTypes::ENUM => ['val1', 'val1'], - VariableTypes::LIST => ['val1,val2', ['val1','val2']], - VariableTypes::MAP => ['var1=val1,var2=val2', ['var1'=>'val1','var2'=>'val2']], - VariableTypes::MIXED => ['foo', 'foo'], + 'string' => ['foo', 'foo'], + 'bool' => ['true', true], + 'integer' => ['42', 42], + 'enum' => ['val1', 'val1'], + 'list' => ['val1,val2', ['val1','val2']], + 'map' => ['var1=val1,var2=val2', ['var1'=>'val1','var2'=>'val2']], + 'mixed' => ['foo', 'foo'], ]; private const LIBRARY_DEFAULTS = [ - VariableTypes::STRING => [Variables::OTEL_EXPORTER_OTLP_ENDPOINT, 'http://localhost:4318'], - VariableTypes::BOOL => [Variables::OTEL_EXPORTER_OTLP_INSECURE, false], - VariableTypes::INTEGER => [Variables::OTEL_BSP_MAX_QUEUE_SIZE, 2048], - VariableTypes::ENUM => [Variables::OTEL_LOG_LEVEL, 'info'], - VariableTypes::LIST => [Variables::OTEL_PROPAGATORS, ['tracecontext', 'baggage']], + 'string' => [Variables::OTEL_EXPORTER_OTLP_ENDPOINT, 'http://localhost:4318'], + 'bool' => [Variables::OTEL_EXPORTER_OTLP_INSECURE, false], + 'integer' => [Variables::OTEL_BSP_MAX_QUEUE_SIZE, 2048], + 'enum' => [Variables::OTEL_LOG_LEVEL, 'info'], + 'list' => [Variables::OTEL_PROPAGATORS, ['tracecontext', 'baggage']], ]; private const DEFAULT_VALUES = [ @@ -85,10 +84,10 @@ class ConfigurationTest extends TestCase ]; private const NO_DEFAULTS = [ - VariableTypes::STRING => [Variables::OTEL_SERVICE_NAME], - VariableTypes::ENUM => [Variables::OTEL_EXPORTER_OTLP_COMPRESSION], - VariableTypes::MAP => [Variables::OTEL_EXPORTER_OTLP_HEADERS], - VariableTypes::MIXED => [Variables::OTEL_TRACES_SAMPLER_ARG], + 'string' => [Variables::OTEL_SERVICE_NAME], + 'enum' => [Variables::OTEL_EXPORTER_OTLP_COMPRESSION], + 'map' => [Variables::OTEL_EXPORTER_OTLP_HEADERS], + 'mixed' => [Variables::OTEL_TRACES_SAMPLER_ARG], ]; private const KNOWN_VALUES = [ @@ -262,16 +261,6 @@ public function test_no_value_throws_exception(string $methodName): void call_user_func([Configuration::class, $methodName], 'FOO_BAR_' . $methodName); } - /** - * @dataProvider invalidTypeProvider - */ - public function test_invalid_type_throws_exception(string $methodName, string $variable): void - { - $this->expectException(UnexpectedValueException::class); - - call_user_func([Configuration::class, $methodName], $variable); - } - /** * @dataProvider noDefaultProvider */ @@ -334,24 +323,6 @@ public static function nonEmptyMethodNameProvider(): Generator } } - public static function invalidTypeProvider(): Generator - { - foreach (self::METHOD_NAMES as $varType => $names) { - if ($varType === VariableTypes::MIXED) { - continue; - } - $methodName = $names[0]; - foreach (self::TYPES as $methodType => $types) { - if ($varType === $methodType || $methodType === VariableTypes::MIXED) { - continue; - } - $variableName = $types[0]; - - yield sprintf('%s - %s', $varType, $methodType) => [$methodName, $variableName]; - } - } - } - public static function noDefaultProvider(): Generator { foreach (self::NO_DEFAULTS as $varType => $values) { @@ -400,30 +371,6 @@ public function test_retrieve_value_library_default(): void ); } - /** - * @dataProvider typeProvider - */ - public function test_get_type(string $varName, string $type): void - { - $this->assertSame( - $type, - Configuration::getType($varName) - ); - } - - public static function typeProvider(): array - { - return [ - 'bool' => ['OTEL_EXPORTER_OTLP_INSECURE', VariableTypes::BOOL], - 'string' => ['OTEL_SERVICE_NAME', VariableTypes::STRING], - 'integer' => ['OTEL_BSP_MAX_QUEUE_SIZE', VariableTypes::INTEGER], - 'enum' => ['OTEL_LOG_LEVEL', VariableTypes::ENUM], - 'list' => ['OTEL_PROPAGATORS', VariableTypes::LIST], - 'map' => ['OTEL_RESOURCE_ATTRIBUTES', VariableTypes::MAP], - 'mixed' => ['OTEL_TRACES_SAMPLER_ARG', VariableTypes::MIXED], - ]; - } - /** * @dataProvider defaultValueProvider */ From 28fe251fd97f6cba1effa54ec7ba8c27174d6c89 Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Mon, 29 Apr 2024 20:49:58 +1000 Subject: [PATCH 11/11] lint --- src/SDK/Trace/SpanProcessorFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SDK/Trace/SpanProcessorFactory.php b/src/SDK/Trace/SpanProcessorFactory.php index 96ef8dc88..63a4ddce8 100644 --- a/src/SDK/Trace/SpanProcessorFactory.php +++ b/src/SDK/Trace/SpanProcessorFactory.php @@ -5,10 +5,10 @@ namespace OpenTelemetry\SDK\Trace; use InvalidArgumentException; +use OpenTelemetry\API\Common\Time\Clock; use OpenTelemetry\Config\Configuration\Configuration; use OpenTelemetry\Config\Configuration\KnownValues as Values; use OpenTelemetry\Config\Configuration\Variables as Env; -use OpenTelemetry\API\Common\Time\Clock; use OpenTelemetry\SDK\Metrics\MeterProviderInterface; use OpenTelemetry\SDK\Metrics\NoopMeterProvider; use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessor;