diff options
author | Ola Aunrønning <olaa@verizonmedia.com> | 2019-12-02 15:11:02 +0100 |
---|---|---|
committer | Ola Aunrønning <olaa@verizonmedia.com> | 2019-12-02 15:11:02 +0100 |
commit | 2e56c4baee6220399c73bb13a30cab659eacf26d (patch) | |
tree | 396318a824e6e60ff6458b86ed9663bd4b2f7726 /metrics-proxy | |
parent | 8175316fae82332f74e2cb18bd47e6d8b308127c (diff) |
Split test. Rename flush -> purge
Diffstat (limited to 'metrics-proxy')
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)); |