diff --git a/src/Attributes/Attribute.php b/src/Attributes/Attribute.php index 3a79c84c5..56820e483 100644 --- a/src/Attributes/Attribute.php +++ b/src/Attributes/Attribute.php @@ -9,7 +9,7 @@ /** * @phpstan-type AttributeType 'string'|'boolean'|'integer'|'double' - * @phpstan-type AttributeValue string|bool|int|float + * @phpstan-type AttributeValue string|bool|int|float|null */ class Attribute { diff --git a/src/Metrics/MetricsAggregator.php b/src/Metrics/MetricsAggregator.php index a4a3aef3e..d946ca35a 100644 --- a/src/Metrics/MetricsAggregator.php +++ b/src/Metrics/MetricsAggregator.php @@ -41,8 +41,8 @@ final class MetricsAggregator private $metrics; /** - * @param int|float $value - * @param array $attributes + * @param int|float $value + * @param array $attributes */ public function add( string $type, diff --git a/src/Metrics/TraceMetrics.php b/src/Metrics/TraceMetrics.php index 4eae90d38..4fa9aa927 100644 --- a/src/Metrics/TraceMetrics.php +++ b/src/Metrics/TraceMetrics.php @@ -32,8 +32,8 @@ public static function getInstance(): self } /** - * @param int|float $value - * @param array $attributes + * @param int|float $value + * @param array $attributes */ public function count( string $name, @@ -51,8 +51,8 @@ public function count( } /** - * @param int|float $value - * @param array $attributes + * @param int|float $value + * @param array $attributes */ public function distribution( string $name, @@ -70,8 +70,8 @@ public function distribution( } /** - * @param int|float $value - * @param array $attributes + * @param int|float $value + * @param array $attributes */ public function gauge( string $name, diff --git a/src/Metrics/Types/CounterMetric.php b/src/Metrics/Types/CounterMetric.php index ff7d636dc..42710c2b2 100644 --- a/src/Metrics/Types/CounterMetric.php +++ b/src/Metrics/Types/CounterMetric.php @@ -24,8 +24,8 @@ final class CounterMetric extends Metric private $value; /** - * @param int|float $value - * @param array $attributes + * @param int|float $value + * @param array $attributes */ public function __construct( string $name, diff --git a/src/Metrics/Types/DistributionMetric.php b/src/Metrics/Types/DistributionMetric.php index 6d2ea7306..631062001 100644 --- a/src/Metrics/Types/DistributionMetric.php +++ b/src/Metrics/Types/DistributionMetric.php @@ -24,8 +24,8 @@ final class DistributionMetric extends Metric private $value; /** - * @param int|float $value - * @param array $attributes + * @param int|float $value + * @param array $attributes */ public function __construct( string $name, diff --git a/src/Metrics/Types/GaugeMetric.php b/src/Metrics/Types/GaugeMetric.php index 22dc944c2..ae5909fc7 100644 --- a/src/Metrics/Types/GaugeMetric.php +++ b/src/Metrics/Types/GaugeMetric.php @@ -24,8 +24,8 @@ final class GaugeMetric extends Metric private $value; /** - * @param int|float $value - * @param array $attributes + * @param int|float $value + * @param array $attributes */ public function __construct( string $name, diff --git a/src/Metrics/Types/Metric.php b/src/Metrics/Types/Metric.php index a66cbd6ea..d74cf424a 100644 --- a/src/Metrics/Types/Metric.php +++ b/src/Metrics/Types/Metric.php @@ -42,7 +42,7 @@ abstract class Metric private $unit; /** - * @param array $attributes + * @param array $attributes */ public function __construct( string $name, diff --git a/tests/Metrics/TraceMetricsTest.php b/tests/Metrics/TraceMetricsTest.php index 1191e076e..7ce43404a 100644 --- a/tests/Metrics/TraceMetricsTest.php +++ b/tests/Metrics/TraceMetricsTest.php @@ -192,6 +192,20 @@ public function testFloatType(): void $this->assertEquals(10.50, $metric->getValue()); } + public function testNullAttributeValueIsStringified(): void + { + traceMetrics()->count('test-count', 2, ['foo' => null]); + traceMetrics()->flush(); + + $this->assertCount(1, StubTransport::$events); + $event = StubTransport::$events[0]; + + $this->assertCount(1, $event->getMetrics()); + $metric = $event->getMetrics()[0]; + + $this->assertSame('null', $metric->getAttributes()->toSimpleArray()['foo']); + } + public function testInvalidTypeIsDiscarded(): void { // @phpstan-ignore-next-line