From 8bebe88526e449bbca0514d8bdfc87390cb26db4 Mon Sep 17 00:00:00 2001 From: Ola Aunrønning Date: Thu, 16 Apr 2020 10:38:41 +0200 Subject: Add metrics for enqueued and processed coredumps --- .../maintenance/coredump/CoredumpHandlerTest.java | 28 ++++++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'node-admin/src/test/java') diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java index 3d9e3c08276..62bf9e3f9c2 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java @@ -1,6 +1,8 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.node.admin.maintenance.coredump; +import com.yahoo.vespa.hosted.dockerapi.metrics.DimensionMetrics; +import com.yahoo.vespa.hosted.dockerapi.metrics.Metrics; import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext; import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImpl; import com.yahoo.vespa.hosted.node.admin.task.util.file.UnixPath; @@ -46,16 +48,17 @@ public class CoredumpHandlerTest { private final Path donePath = fileSystem.getPath("/home/docker/dumps"); private final NodeAgentContext context = new NodeAgentContextImpl.Builder("container-123.domain.tld") .fileSystem(fileSystem).build(); - private final Path crashPathInContainer = Paths.get("/var/crash"); + private final Path crashPathInContainer = fileSystem.getPath("/var/crash"); private final Path doneCoredumpsPath = fileSystem.getPath("/home/docker/dumps"); private final TestTerminal terminal = new TestTerminal(); private final CoreCollector coreCollector = mock(CoreCollector.class); private final CoredumpReporter coredumpReporter = mock(CoredumpReporter.class); + private final Metrics metrics = new Metrics(); @SuppressWarnings("unchecked") private final Supplier coredumpIdSupplier = mock(Supplier.class); private final CoredumpHandler coredumpHandler = new CoredumpHandler(terminal, coreCollector, coredumpReporter, - crashPathInContainer, doneCoredumpsPath, "users", coredumpIdSupplier); + crashPathInContainer, doneCoredumpsPath, "users", metrics, coredumpIdSupplier); @Test @@ -206,13 +209,28 @@ public class CoredumpHandlerTest { verify(coreCollector, never()).collect(any(), any()); verify(coredumpReporter, times(1)).reportCoredump(eq("id-123"), eq("metadata")); assertFalse(Files.exists(coredumpDirectory)); - assertFolderContents(doneCoredumpsPath, "id-123"); - assertFolderContents(doneCoredumpsPath.resolve("id-123"), "metadata.json", "dump_bash.core.431.lz4"); + assertFolderContents(doneCoredumpsPath.resolve("container-123"), "id-123"); + assertFolderContents(doneCoredumpsPath.resolve("container-123").resolve("id-123"), "metadata.json", "dump_bash.core.431.lz4"); + } + + @Test + public void report_enqueued_and_processed_metrics() throws IOException { + Files.createFile(crashPathInContainer.resolve("dump-1")); + Files.createFile(crashPathInContainer.resolve("dump-2")); + Files.createFile(doneCoredumpsPath.resolve("container-123").resolve("dump-3")); + + coredumpHandler.updateMetrics(context, crashPathInContainer); + List updatedMetrics = metrics.getMetricsByType(Metrics.DimensionType.PRETAGGED); + assertEquals(1, updatedMetrics.size()); + Map values = updatedMetrics.get(0).getMetrics(); + assertEquals(2, values.get("coredumps.enqueued").intValue()); + assertEquals(1, values.get("coredumps.processed").intValue()); } @Before public void setup() throws IOException { - Files.createDirectories(donePath); + Files.createDirectories(donePath.resolve("container-123")); + Files.createDirectories(crashPathInContainer); } @After -- cgit v1.2.3