From 7b0e37ab3aafcd81d427a02e1b345d5eb98f3f98 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Fri, 20 Nov 2020 03:34:49 -0600 Subject: [PATCH] add metrics manifest to polyglot --- .../PolyglotMetricRegistryBindings.java | 21 ++++++++++++++++--- nb/src/test/resources/scripts/async/optimo.js | 2 +- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/metrics/PolyglotMetricRegistryBindings.java b/engine-core/src/main/java/io/nosqlbench/engine/core/metrics/PolyglotMetricRegistryBindings.java index d4f78b648..9257554e8 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/metrics/PolyglotMetricRegistryBindings.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/metrics/PolyglotMetricRegistryBindings.java @@ -18,13 +18,13 @@ package io.nosqlbench.engine.core.metrics; import com.codahale.metrics.*; +import com.codahale.metrics.Timer; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.graalvm.polyglot.Value; import org.graalvm.polyglot.proxy.ProxyObject; -import java.util.ArrayList; -import java.util.Map; +import java.util.*; /** * A view of metrics objects as an object tree. @@ -136,7 +136,22 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist } public Map getMetrics() { - throw new RuntimeException("implement me"); + return getMetrics(new LinkedHashMap(), "metrics", metrics); + } + + private Map getMetrics(Map totalMap, String prefix, MetricMap map) { + for (String key : map.getKeys()) { + Object o = map.get(key); + String name = prefix + "." + key; + if (o instanceof Metric) { + totalMap.put(name, (Metric) o); + } else if (o instanceof MetricMap) { + getMetrics(totalMap, name, (MetricMap) o); + } else { + throw new RuntimeException("entry value must be either a Metric or a MetricMap"); + } + } + return totalMap; } // @Override diff --git a/nb/src/test/resources/scripts/async/optimo.js b/nb/src/test/resources/scripts/async/optimo.js index 6a7675da8..bf4188ab7 100644 --- a/nb/src/test/resources/scripts/async/optimo.js +++ b/nb/src/test/resources/scripts/async/optimo.js @@ -22,5 +22,5 @@ optimo.setObjectiveFunction( var result = optimo.optimize(); print("optimized result was " + result); -print("map of result was " + result.getVarMap()); +print("map of result was " + result.getMap());