diff --git a/libraries/src/AWS.Lambda.Powertools.Metrics/Metrics.cs b/libraries/src/AWS.Lambda.Powertools.Metrics/Metrics.cs index a5a825d8..9cf95ec5 100644 --- a/libraries/src/AWS.Lambda.Powertools.Metrics/Metrics.cs +++ b/libraries/src/AWS.Lambda.Powertools.Metrics/Metrics.cs @@ -182,6 +182,10 @@ void IMetrics.AddMetric(string key, double value, MetricUnit unit, MetricResolut throw new ArgumentNullException( nameof(key), "'AddMetric' method requires a valid metrics key. 'Null' or empty values are not allowed."); + if (key.Length > 255) + throw new ArgumentOutOfRangeException( + nameof(key), + "'AddMetric' method requires a valid metrics key. Key exceeds the allowed length constraint."); if (value < 0) { diff --git a/libraries/tests/AWS.Lambda.Powertools.Metrics.Tests/MetricsTests.cs b/libraries/tests/AWS.Lambda.Powertools.Metrics.Tests/MetricsTests.cs index b710236a..8f038dfc 100644 --- a/libraries/tests/AWS.Lambda.Powertools.Metrics.Tests/MetricsTests.cs +++ b/libraries/tests/AWS.Lambda.Powertools.Metrics.Tests/MetricsTests.cs @@ -155,6 +155,21 @@ public void When_AddMetric_With_InvalidKey_Should_ThrowArgumentNullException(str exception.Message); } + [Fact] + public void When_AddMetric_With_TooLongKey_Should_ThrowArgumentOutOfRangeException() + { + // Arrange + Substitute.For(); + var powertoolsConfigMock = Substitute.For(); + IMetrics metrics = new Metrics(powertoolsConfigMock); + + // Act & Assert + var exception = Assert.Throws(() => metrics.AddMetric("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.", 1.0)); + Assert.Equal("key", exception.ParamName); + Assert.Contains("'AddMetric' method requires a valid metrics key. Key exceeds the allowed length constraint.", + exception.Message); + } + [Fact] public void When_SetDefaultDimensions_With_InvalidKeyOrValue_Should_ThrowArgumentNullException() {