diff --git a/extended-it/src/test/java/apoc/neo4j/docker/MetricsTest.java b/extended-it/src/test/java/apoc/neo4j/docker/MetricsTest.java index 64ae293365..8fb0081231 100644 --- a/extended-it/src/test/java/apoc/neo4j/docker/MetricsTest.java +++ b/extended-it/src/test/java/apoc/neo4j/docker/MetricsTest.java @@ -5,7 +5,6 @@ import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Test; import org.neo4j.driver.Record; import org.neo4j.driver.Session; @@ -29,8 +28,6 @@ * @author as * @since 13.02.19 */ -// TODO Investigate why this test is not working. Possibly increase timeout for container -@Ignore public class MetricsTest { private static Neo4jContainerExtension neo4jContainer; @@ -63,24 +60,32 @@ public void shouldNotGetFileOutsideMetricsDir() { } } - // TODO: Investigate broken test. It hangs for more than 30 seconds for no reason. @Test - @Ignore public void shouldGetMetrics() { session.executeRead(tx -> tx.run("RETURN 1 AS num;").consume()); - String metricKey = "neo4j.system.check_point.total_time"; + + List metricsList = session.run("CALL apoc.metrics.list") + .list(i -> i.get("name").asString()); + + for (String metric: metricsList) { + metricsGetAssertion(metric); + } + } + + private void metricsGetAssertion(String metric) { assertEventually(() -> { try { return session.run("CALL apoc.metrics.get($metricKey)", - map("metricKey", metricKey)) + map("metricKey", metric)) .list() .get(0) .asMap(); } catch (Exception e) { + System.out.println("e = " + e); return Map.of(); } }, - map -> Set.of("timestamp", "metric", "map").equals(map.keySet()) && map.get("metric").equals(metricKey), + map -> Set.of("timestamp", "metric", "map").equals(map.keySet()) && map.get("metric").equals(metric), 30L, TimeUnit.SECONDS); } diff --git a/extended/src/main/java/apoc/metrics/Metrics.java b/extended/src/main/java/apoc/metrics/Metrics.java index f32cd875f2..3fced20c5a 100644 --- a/extended/src/main/java/apoc/metrics/Metrics.java +++ b/extended/src/main/java/apoc/metrics/Metrics.java @@ -5,11 +5,7 @@ import apoc.load.CSVResult; import apoc.load.LoadCsv; import apoc.load.util.LoadCsvConfig; -import apoc.util.CompressionAlgo; -import apoc.util.ExtendedFileUtils; -import apoc.util.FileUtils; -import apoc.util.SupportedProtocols; -import apoc.util.Util; +import apoc.util.*; import org.neo4j.graphdb.security.URLAccessChecker; import org.neo4j.logging.Log; import org.neo4j.procedure.*; @@ -118,7 +114,7 @@ public Neo4jMeasuredMetric(String name, long lastUpdated) { } } - @Procedure(mode=Mode.DBMS) + @Procedure @Description("apoc.metrics.list() - get a list of available metrics") public Stream list() { File metricsDir = ExtendedFileUtils.getMetricsDirectory(); @@ -204,7 +200,7 @@ public Stream loadCsvForMetric(String metricName, Map storage(@Name("directorySetting") String directoryS .map(StorageMetric::fromStoragePair); } - @Procedure(mode=Mode.DBMS) + @Procedure @Description("apoc.metrics.get(metricName, {}) - retrieve a system metric by its metric name. Additional configuration options may be passed matching the options available for apoc.load.csv.") /** * This method is a specialization of apoc.load.csv, it just happens that the directory and file path