diff options
Diffstat (limited to 'metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MetricsParserTest.java')
-rw-r--r-- | metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MetricsParserTest.java | 83 |
1 files changed, 53 insertions, 30 deletions
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MetricsParserTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MetricsParserTest.java index 5fc260e9912..17dc9e643f0 100644 --- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MetricsParserTest.java +++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/service/MetricsParserTest.java @@ -6,7 +6,6 @@ import org.junit.Test; import java.util.ArrayList; import java.util.List; -import static ai.vespa.metricsproxy.service.MetricsParser.dimensionsHashCode; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; @@ -25,44 +24,27 @@ public class MetricsParserTest { } @Test - public void dimensions_hashcode_is_different_for_distinct_but_duplicate_dimension_values() { - var dimensions1 = List.of( - new MetricsParser.Dimension("cluster", "CLUSTER-1"), - new MetricsParser.Dimension("clusterid", "CLUSTER-1")); - - var dimensions2 = List.of( - new MetricsParser.Dimension("cluster", "CLUSTER-2"), - new MetricsParser.Dimension("clusterid", "CLUSTER-2")); - - assertNotEquals(dimensionsHashCode(dimensions1), dimensionsHashCode(dimensions2)); - } - - @Test - public void dimensions_hashcode_is_different_for_distinct_with_swapped_dimension_values() { - var dimensions1 = List.of( - new MetricsParser.Dimension("cluster", "CLUSTER-1"), - new MetricsParser.Dimension("clusterid", "CLUSTER-2")); - - var dimensions2 = List.of( - new MetricsParser.Dimension("cluster", "CLUSTER-2"), - new MetricsParser.Dimension("clusterid", "CLUSTER-1")); - - assertNotEquals(dimensionsHashCode(dimensions1), dimensionsHashCode(dimensions2)); - } - - - @Test public void different_dimension_values_are_not_treated_as_equal() throws Exception { var collector = new MetricsCollector(); - MetricsParser.parse(metricsJson(), collector); + MetricsParser.parse(metricsJsonDistinctButDuplicateDimensionDalues(), collector); assertEquals(2, collector.metrics.size()); assertNotEquals("Dimensions should not be equal", collector.metrics.get(0).getDimensions(), collector.metrics.get(1).getDimensions()); } + @Test + public void different_swapped_dimension_values_are_not_treated_as_equal() throws Exception { + var collector = new MetricsCollector(); + MetricsParser.parse(metricsJsonDistinctButDuplicateSwappedDimensionDalues(), collector); + assertEquals(2, collector.metrics.size()); + assertNotEquals("Dimensions should not be equal", + collector.metrics.get(0).getDimensions(), + collector.metrics.get(1).getDimensions()); + } + // The duplicate dimension values for 'cluster' and 'clusterid' exposed a bug in a previously used hashing algo for dimensions. - private String metricsJson() { + private String metricsJsonDistinctButDuplicateDimensionDalues() { return """ { "time": 1671035366573, @@ -102,5 +84,46 @@ public class MetricsParserTest { } """; } + // The duplicate dimension values for 'cluster' and 'clusterid' exposed a bug in a previously used hashing algo for dimensions. + private String metricsJsonDistinctButDuplicateSwappedDimensionDalues() { + return """ + { + "time": 1671035366573, + "status": { + "code": "up" + }, + "metrics": { + "snapshot": { + "from": 1671035306.562, + "to": 1671035366.562 + }, + "values": [ + { + "name": "cluster-controller.resource_usage.nodes_above_limit", + "values": { + "last": 1.0 + }, + "dimensions": { + "controller-index": "0", + "cluster": "CLUSTER-1", + "clusterid": "CLUSTER-2" + } + }, + { + "name": "cluster-controller.resource_usage.nodes_above_limit", + "values": { + "last": 2.0 + }, + "dimensions": { + "controller-index": "0", + "cluster": "CLUSTER-2", + "clusterid": "CLUSTER-1" + } + } + ] + } + } + """; + } } |