summaryrefslogtreecommitdiffstats
path: root/metrics-proxy
diff options
context:
space:
mode:
authorOla Aunrønning <olaa@verizonmedia.com>2019-12-02 15:11:02 +0100
committerOla Aunrønning <olaa@verizonmedia.com>2019-12-02 15:11:02 +0100
commit2e56c4baee6220399c73bb13a30cab659eacf26d (patch)
tree396318a824e6e60ff6458b86ed9663bd4b2f7726 /metrics-proxy
parent8175316fae82332f74e2cb18bd47e6d8b308127c (diff)
Split test. Rename flush -> purge
Diffstat (limited to 'metrics-proxy')
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java10
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/rpc/RpcServer.java8
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java55
3 files changed, 44 insertions, 29 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java
index e4c40f55f6c..8d0074dca66 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java
@@ -90,7 +90,7 @@ public class MetricsManager {
List<MetricsPacket.Builder> result = vespaMetrics.getMetrics(services);
log.log(DEBUG, () -> "Got " + result.size() + " metrics packets for vespa services.");
- flushStaleMetrics();
+ purgeStaleMetrics();
List<MetricsPacket.Builder> externalPackets = externalMetrics.getMetrics().stream()
.filter(MetricsPacket.Builder::hasMetrics)
.collect(toList());
@@ -154,17 +154,17 @@ public class MetricsManager {
}
public Map<DimensionId, String> getExtraDimensions() {
- flushStaleMetrics();
+ purgeStaleMetrics();
return this.extraDimensions;
}
- private void flushStaleMetrics() {
+ private void purgeStaleMetrics() {
if (Duration.between(externalMetricsUpdateTime, Instant.now()).getSeconds() > EXTERNAL_METRICS_TTL.getSeconds()) {
- flushExtraMetrics();
+ purgeExtraMetrics();
}
}
- public void flushExtraMetrics() {
+ public void purgeExtraMetrics() {
extraDimensions = new HashMap<>();
externalMetrics.setExtraMetrics(Collections.emptyList());
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/rpc/RpcServer.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/rpc/RpcServer.java
index 315cfcc2c63..b43e7959eff 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/rpc/RpcServer.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/rpc/RpcServer.java
@@ -60,8 +60,8 @@ public class RpcServer {
.paramDesc(0, "metricsJson", "The metrics in json format"));
connector.addMethod(
- new Method("flushExtraMetrics", "", "", this::flushExtraMetrics)
- .methodDesc("Flush metrics and dimensions populated by setExtraMetrics"));
+ new Method("purgeExtraMetrics", "", "", this::purgeExtraMetrics)
+ .methodDesc("Purge metrics and dimensions populated by setExtraMetrics"));
connector.addMethod(
new Method("getMetricsById", "s", "s", this::getMetricsById)
@@ -153,8 +153,8 @@ public class RpcServer {
withExceptionHandling(req, () -> metricsManager.setExtraMetrics(toMetricsPackets(metricsJson)));
}
- void flushExtraMetrics(Request req) {
- withExceptionHandling(req, metricsManager::flushExtraMetrics);
+ void purgeExtraMetrics(Request req) {
+ withExceptionHandling(req, metricsManager::purgeExtraMetrics);
}
private static void withExceptionHandling(Request req, ThrowingRunnable runnable) {
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
index 6b47689a602..b0b8bcc614c 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
@@ -66,39 +66,35 @@ public class RpcMetricsTest {
}
@Test
- public void extra_metrics_are_added_to_and_flushed_from_output() throws Exception {
- String extraMetricsPayload = "{\"timestamp\":1557754772,\"application\":\"" + EXTRA_APP +
- "\",\"metrics\":{\"foo.count\":3},\"dimensions\":{\"role\":\"extra-role\"}}";
-
+ public void extra_metrics_are_added_to_output() throws Exception {
try (IntegrationTester tester = new IntegrationTester()) {
try (RpcClient rpcClient = new RpcClient(tester.rpcPort())) {
- Request req = new Request("setExtraMetrics");
- req.parameters().add(new StringValue(extraMetricsPayload));
- invoke(req, rpcClient, false);
+ setExtraMetrics(rpcClient);
String allServicesResponse = getMetricsForYamas(ALL_SERVICES, rpcClient).trim();
// Verify that application is used as serviceId, and that metric exists.
JSONObject extraMetrics = findExtraMetricsObject(allServicesResponse);
assertThat(extraMetrics.getJSONObject("metrics").getInt("foo.count"), is(3));
assertThat(extraMetrics.getJSONObject("dimensions").getString("role"), is("extra-role"));
-
- req = new Request("flushExtraMetrics");
- invoke(req, rpcClient, false);
- allServicesResponse = getMetricsForYamas(ALL_SERVICES, rpcClient).trim();
- extraMetrics = findExtraMetricsObject(allServicesResponse);
- assertEquals(extraMetrics.toString(), "{}");
}
}
}
- private JSONObject findExtraMetricsObject(String jsonResponse) throws JSONException {
- JSONArray metrics = new JSONObject(jsonResponse).getJSONArray("metrics");
- for (int i = 0; i < metrics.length(); i++) {
- JSONObject jsonObject = metrics.getJSONObject(i);
- assertTrue(jsonObject.has("application"));
- if (jsonObject.getString("application").equals(EXTRA_APP)) return jsonObject;
+ @Test
+ public void extra_metrics_are_purged() throws Exception {
+ try (IntegrationTester tester = new IntegrationTester()) {
+ try (RpcClient rpcClient = new RpcClient(tester.rpcPort())) {
+ setExtraMetrics(rpcClient);
+
+ Request req = new Request("purgeExtraMetrics");
+ invoke(req, rpcClient, false);
+
+ // Verify that no extra metrics exists
+ String allServicesResponse = getMetricsForYamas(ALL_SERVICES, rpcClient).trim();
+ JSONObject extraMetrics = findExtraMetricsObject(allServicesResponse);
+ assertEquals(extraMetrics.toString(), "{}");
+ }
}
- return new JSONObject();
}
@Test
@@ -206,6 +202,25 @@ public class RpcMetricsTest {
}
}
+ private void setExtraMetrics(RpcClient rpcClient) {
+ String extraMetricsPayload = "{\"timestamp\":1557754772,\"application\":\"" + EXTRA_APP +
+ "\",\"metrics\":{\"foo.count\":3},\"dimensions\":{\"role\":\"extra-role\"}}";
+
+ Request req = new Request("setExtraMetrics");
+ req.parameters().add(new StringValue(extraMetricsPayload));
+ invoke(req, rpcClient, false);
+ }
+
+ private JSONObject findExtraMetricsObject(String jsonResponse) throws JSONException {
+ JSONArray metrics = new JSONObject(jsonResponse).getJSONArray("metrics");
+ for (int i = 0; i < metrics.length(); i++) {
+ JSONObject jsonObject = metrics.getJSONObject(i);
+ assertTrue(jsonObject.has("application"));
+ if (jsonObject.getString("application").equals(EXTRA_APP)) return jsonObject;
+ }
+ return new JSONObject();
+ }
+
private static String getMetricsForYamas(String service, RpcClient client) {
Request req = new Request("getMetricsForYamas");
req.parameters().add(new StringValue(service));