From 2e2398773a9c9550b7b6f64003e1f0ee59c5692b Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 21 Apr 2020 11:19:56 -0500 Subject: [PATCH] poll for specific scenario result --- .../java/io/nosqlbench/engine/cli/NBCLI.java | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java index f492b9a25..eb8da69cd 100644 --- a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java +++ b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java @@ -1,17 +1,15 @@ package io.nosqlbench.engine.cli; +import ch.qos.logback.classic.Level; import io.nosqlbench.engine.api.activityapi.core.ActivityType; import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogDumperUtility; import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogImporterUtility; import io.nosqlbench.engine.api.activityapi.input.InputType; import io.nosqlbench.engine.api.activityapi.output.OutputType; +import io.nosqlbench.engine.core.*; import io.nosqlbench.nb.api.content.Content; import io.nosqlbench.nb.api.content.NBIO; import io.nosqlbench.nb.api.errors.BasicError; -import io.nosqlbench.engine.core.MarkdownDocInfo; -import io.nosqlbench.engine.core.ScenarioLogger; -import io.nosqlbench.engine.core.ScenariosResults; -import io.nosqlbench.engine.core.ShutdownManager; import io.nosqlbench.engine.docker.DockerMetricsManager; import io.nosqlbench.engine.api.metrics.ActivityMetrics; import io.nosqlbench.engine.core.metrics.MetricReporters; @@ -31,6 +29,7 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; +import java.util.concurrent.locks.LockSupport; import java.util.stream.Collectors; public class NBCLI { @@ -261,16 +260,34 @@ public class NBCLI { // Execute Scenario! + Level clevel = options.wantsConsoleLogLevel(); + Level llevel = Level.toLevel(options.getLogsLevel()); + if (llevel.toInt()>clevel.toInt()) { + logger.info("raising scenario logging level to accommodate console logging level"); + } + Level maxLevel = Level.toLevel(Math.min(clevel.toInt(), llevel.toInt())); + scenario.addScriptText(scriptData); ScenarioLogger sl = new ScenarioLogger(scenario) .setLogDir(options.getLogsDirectory()) .setMaxLogs(options.getLogsMax()) - .setLevel(options.getLogsLevel()) + .setLevel(maxLevel) .setLogLevelOverrides(options.getLogLevelOverrides()) .start(); executor.execute(scenario, sl); + + while (true) { + Optional pendingResult = executor.getPendingResult(scenario.getName()); + if (pendingResult.isEmpty()) { + LockSupport.parkNanos(100000000L); + } else { + break; + } + } + ScenariosResults scenariosResults = executor.awaitAllResults(); + ActivityMetrics.closeMetrics(options.wantsEnableChart()); scenariosResults.reportToLog(); ShutdownManager.shutdown();