diff options
author | Ola Aunrønning <olaa@oath.com> | 2019-02-04 11:51:13 +0100 |
---|---|---|
committer | Ola Aunrønning <olaa@oath.com> | 2019-02-04 15:26:36 +0100 |
commit | 25cca34e9a5de329abe6a6e4b789457581ac74b2 (patch) | |
tree | 224f4d6d440ecc0c6bd9f530f830d2635dccd733 /docker-api/src | |
parent | e224c79c84659e04513079ae0cfa76d74ca81a8e (diff) |
Support deleting metrics from MetricReceiverWrapper
Diffstat (limited to 'docker-api/src')
2 files changed, 30 insertions, 2 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java index 11c7005fcd2..7e8f3704fa0 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java @@ -106,12 +106,25 @@ public class MetricReceiverWrapper { } } + public void deleteMetricByDimension(String name, Dimensions dimensionsToRemove, DimensionType type) { + try{ + metrics.get(type) + .get(name) + .metricsByDimensions() + .remove(dimensionsToRemove); + } catch (NullPointerException e) {} + } + // For testing Map<String, Number> getMetricsForDimension(String application, Dimensions dimensions) { synchronized (monitor) { Map<Dimensions, Map<String, MetricValue>> metricsByDimensions = getOrCreateApplicationMetrics(application, DimensionType.DEFAULT); - return metricsByDimensions.get(dimensions).entrySet().stream().collect( - Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().getValue())); + try { + return metricsByDimensions.get(dimensions).entrySet().stream().collect( + Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().getValue())); + } catch (NullPointerException e) { + return new HashMap<>(); + } } } diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapperTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapperTest.java index 08b3489fbea..c20e64d906e 100644 --- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapperTest.java +++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapperTest.java @@ -78,4 +78,19 @@ public class MetricReceiverWrapperTest { assertEquals(metricReceiver.getMetricsForDimension(applicationDocker, hostDimension).get("test.gauge"), 42.); assertEquals(metricReceiver.getMetricsForDimension(applicationDocker, newDimension).get("test.gauge"), 56.); } + + @Test + public void testDeletingMetric() { + MetricReceiverWrapper metricReceiver = new MetricReceiverWrapper(MetricReceiver.nullImplementation); + metricReceiver.declareGauge(applicationDocker, hostDimension, "test.gauge"); + + Dimensions differentDimension = new Dimensions.Builder().add("host", "abcd.yahoo.com").build(); + metricReceiver.declareGauge(applicationDocker, differentDimension, "test.gauge"); + + assertEquals(2, metricReceiver.getDefaultMetricsRaw().size()); + metricReceiver.deleteMetricByDimension(applicationDocker, differentDimension, MetricReceiverWrapper.DimensionType.DEFAULT); + assertEquals(1, metricReceiver.getDefaultMetricsRaw().size()); + assertEquals(metricReceiver.getMetricsForDimension(applicationDocker, hostDimension).size(), 1); + assertEquals(metricReceiver.getMetricsForDimension(applicationDocker, differentDimension).size(), 0); + } } |