make scenarios run in workspace

This commit is contained in:
Jonathan Shook 2020-08-17 16:20:06 -05:00
parent 6179692162
commit 9717487db4
4 changed files with 34 additions and 5 deletions

View File

@ -113,7 +113,7 @@ public class StdoutActivity extends SimpleActivity implements ActivityDefObserve
protected Writer createPrintWriter() { protected Writer createPrintWriter() {
PrintWriter pw; PrintWriter pw;
if (fileName.toLowerCase().equals("stdout")) { if (fileName.toLowerCase().equals("stdout")) {
pw = new PrintWriter(System.out); pw = getConsoleOut();
} else { } else {
try { try {
pw = new PrintWriter(fileName); pw = new PrintWriter(fileName);
@ -144,8 +144,9 @@ public class StdoutActivity extends SimpleActivity implements ActivityDefObserve
BindingsTemplate bt = new BindingsTemplate(); BindingsTemplate bt = new BindingsTemplate();
stmtsDocList.getDocBindings().forEach(bt::addFieldBinding); stmtsDocList.getDocBindings().forEach(bt::addFieldBinding);
String diagnostics = bt.getDiagnostics(); String diagnostics = bt.getDiagnostics();
System.out.println(diagnostics);
System.out.flush(); getConsoleOut().println(diagnostics);
getConsoleOut().flush();
System.exit(2); System.exit(2);
} else { } else {
logger.info("Creating stdout statement template from bindings, since none is otherwise defined."); logger.info("Creating stdout statement template from bindings, since none is otherwise defined.");

View File

@ -26,6 +26,8 @@ import io.nosqlbench.engine.api.activityimpl.ActivityDef;
import io.nosqlbench.engine.api.activityimpl.ParameterMap; import io.nosqlbench.engine.api.activityimpl.ParameterMap;
import io.nosqlbench.engine.api.activityimpl.SimpleActivity; import io.nosqlbench.engine.api.activityimpl.SimpleActivity;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.function.Supplier; import java.util.function.Supplier;
/** /**
@ -181,4 +183,10 @@ public interface Activity extends Comparable<Activity>, ActivityDefObserver {
* @return A new or existing instrumentation object for this activity. * @return A new or existing instrumentation object for this activity.
*/ */
ActivityInstrumentation getInstrumentation(); ActivityInstrumentation getInstrumentation();
PrintWriter getConsoleOut();
InputStream getConsoleIn();
void setConsoleOut(PrintWriter writer);
} }

View File

@ -13,8 +13,6 @@ import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiters;
import io.nosqlbench.engine.api.activityapi.ratelimits.RateSpec; import io.nosqlbench.engine.api.activityapi.ratelimits.RateSpec;
import io.nosqlbench.engine.api.activityconfig.StatementsLoader; import io.nosqlbench.engine.api.activityconfig.StatementsLoader;
import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate;
import io.nosqlbench.engine.api.activityconfig.yaml.StmtDef;
import io.nosqlbench.engine.api.activityconfig.yaml.StmtsDoc;
import io.nosqlbench.engine.api.activityconfig.yaml.StmtsDocList; import io.nosqlbench.engine.api.activityconfig.yaml.StmtsDocList;
import io.nosqlbench.engine.api.metrics.ActivityMetrics; import io.nosqlbench.engine.api.metrics.ActivityMetrics;
import io.nosqlbench.engine.api.templating.CommandTemplate; import io.nosqlbench.engine.api.templating.CommandTemplate;
@ -23,6 +21,8 @@ import io.nosqlbench.nb.api.errors.BasicError;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -48,6 +48,7 @@ public class SimpleActivity implements Activity {
private RateLimiter phaseLimiter; private RateLimiter phaseLimiter;
private ActivityController activityController; private ActivityController activityController;
private ActivityInstrumentation activityInstrumentation; private ActivityInstrumentation activityInstrumentation;
private PrintWriter console;
public SimpleActivity(ActivityDef activityDef) { public SimpleActivity(ActivityDef activityDef) {
this.activityDef = activityDef; this.activityDef = activityDef;
@ -232,6 +233,24 @@ public class SimpleActivity implements Activity {
return activityInstrumentation; return activityInstrumentation;
} }
@Override
public synchronized PrintWriter getConsoleOut() {
if (this.console==null) {
this.console = new PrintWriter(System.out);
}
return this.console;
}
@Override
public synchronized InputStream getConsoleIn() {
return System.in;
}
@Override
public void setConsoleOut(PrintWriter writer) {
this.console = writer;
}
@Override @Override
public synchronized void onActivityDefUpdate(ActivityDef activityDef) { public synchronized void onActivityDefUpdate(ActivityDef activityDef) {

View File

@ -145,6 +145,7 @@ public class Scenario implements Callable<ScenarioResult> {
.option("js.ecmascript-version", "2020") .option("js.ecmascript-version", "2020")
.option("js.nashorn-compat", "true"); .option("js.nashorn-compat", "true");
// TODO: add in, out, err for this scenario
this.scriptEngine = GraalJSScriptEngine.create(null, contextSettings); this.scriptEngine = GraalJSScriptEngine.create(null, contextSettings);
// try { // try {