From c4ee38d22c9bf6d73ec7a76af0def0cb9060cabc Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 9 Nov 2021 22:35:58 -0600 Subject: [PATCH] squelch invalid parts of summary --- .../engine/core/lifecycle/ScenarioResult.java | 35 ++++++++++++++++--- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/ScenarioResult.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/ScenarioResult.java index 5505ed9ab..8519010ed 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/ScenarioResult.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/ScenarioResult.java @@ -28,12 +28,31 @@ import org.apache.logging.log4j.Logger; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.nio.charset.StandardCharsets; +import java.util.HashSet; import java.util.Optional; +import java.util.Set; import java.util.concurrent.TimeUnit; public class ScenarioResult { private final static Logger logger = LogManager.getLogger(ScenarioResult.class); + public static final Set INTERVAL_ONLY_METRICS = Set.of( + MetricAttribute.MIN, + MetricAttribute.MAX, + MetricAttribute.MEAN, + MetricAttribute.STDDEV, + MetricAttribute.P50, + MetricAttribute.P75, + MetricAttribute.P95, + MetricAttribute.P98, + MetricAttribute.P99, + MetricAttribute.P999); + public static final Set OVER_ONE_MINUTE_METRICS = Set.of( + MetricAttribute.MEAN_RATE, + MetricAttribute.M1_RATE, + MetricAttribute.M5_RATE, + MetricAttribute.M15_RATE + ); private final long startedAt; private final long endedAt; @@ -60,12 +79,17 @@ public class ScenarioResult { public String getSummaryReport() { ByteArrayOutputStream os = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(os); - ConsoleReporter consoleReporter = ConsoleReporter.forRegistry(ActivityMetrics.getMetricRegistry()) + ConsoleReporter.Builder builder = ConsoleReporter.forRegistry(ActivityMetrics.getMetricRegistry()) .convertDurationsTo(TimeUnit.MICROSECONDS) .convertRatesTo(TimeUnit.SECONDS) .filter(MetricFilter.ALL) - .outputTo(ps) - .build(); + .outputTo(ps); + Set disabled = new HashSet<>(INTERVAL_ONLY_METRICS); + if (this.getElapsedMillis()<60000) { + disabled.addAll(OVER_ONE_MINUTE_METRICS); + } + builder.disabledMetricAttributes(disabled); + ConsoleReporter consoleReporter = builder.build(); consoleReporter.report(); ps.flush(); @@ -106,6 +130,9 @@ public class ScenarioResult { } public void reportToLog() { + logger.debug("-- WARNING: Metrics which are taken per-interval (like histograms) will not have --"); + logger.debug("-- active data on this last report. (The workload has already stopped.) Record --"); + logger.debug("-- metrics to an external format to see values for each reporting interval. --"); logger.debug("-- BEGIN METRICS DETAIL --"); Log4JMetricsReporter reporter = Log4JMetricsReporter.forRegistry(ActivityMetrics.getMetricRegistry()) .withLoggingLevel(Log4JMetricsReporter.LoggingLevel.DEBUG) @@ -139,7 +166,7 @@ public class ScenarioResult { }); printStream.println("-- BEGIN NON-ZERO metric counts (run longer for full report):"); - printStream.print(sb.toString()); + printStream.print(sb); printStream.println("-- END NON-ZERO metric counts:"); }