From 25fc7debe07345bfa20fcd98ebdcfe1814e2adfe Mon Sep 17 00:00:00 2001 From: kristofvanbecelaere Date: Thu, 28 Mar 2024 16:56:51 +0100 Subject: [PATCH] added a test storing the same metric with different dimenstion sets According to the documentation (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension) each metric stored with a different set of dimensions should result in a separate event --- .../emf/logger/MetricsLoggerTest.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/test/java/software/amazon/cloudwatchlogs/emf/logger/MetricsLoggerTest.java b/src/test/java/software/amazon/cloudwatchlogs/emf/logger/MetricsLoggerTest.java index 683fa75f..3a0629d9 100644 --- a/src/test/java/software/amazon/cloudwatchlogs/emf/logger/MetricsLoggerTest.java +++ b/src/test/java/software/amazon/cloudwatchlogs/emf/logger/MetricsLoggerTest.java @@ -531,6 +531,28 @@ void flush_doesNotPreserveMetrics() assertFalse(sink.getLogEvents().get(0).contains("Count")); } + @Test + void putMetricWithSameNameAndDifferentDimensionSet_shouldNotAggregateCounts() { + MetricsLogger logger = new MetricsLogger(envProvider); + logger.setDimensions(DimensionSet.of("foo", "bar")); + logger.putMetric("metric", 1); + logger.setDimensions(DimensionSet.of("barf", "baz")); + logger.putMetric("metric", 1); + logger.flush(); + + List events = sink.getLogEvents(); + + assertEquals(2, events.size()); + + assertTrue(events.get(0).contains("metric")); + assertTrue(events.get(0).contains("foo")); + assertTrue(events.get(0).contains("bar")); + + assertTrue(events.get(1).contains("metric")); + assertTrue(events.get(1).contains("barf")); + assertTrue(events.get(1).contains("baz")); + } + private void expectDimension(String dimension, String value) throws DimensionSetExceededException { List dimensions = sink.getContext().getDimensions();