summaryrefslogtreecommitdiffstats
path: root/docker-api
diff options
context:
space:
mode:
authorOla Aunrønning <olaa@oath.com>2019-02-04 11:51:13 +0100
committerOla Aunrønning <olaa@oath.com>2019-02-04 15:26:36 +0100
commit25cca34e9a5de329abe6a6e4b789457581ac74b2 (patch)
tree224f4d6d440ecc0c6bd9f530f830d2635dccd733 /docker-api
parente224c79c84659e04513079ae0cfa76d74ca81a8e (diff)
Support deleting metrics from MetricReceiverWrapper
Diffstat (limited to 'docker-api')
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapper.java17
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/metrics/MetricReceiverWrapperTest.java15
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);
+ }
}