diff --git a/src/org/rascalmpl/library/lang/rascal/grammar/ParserGenerator.rsc b/src/org/rascalmpl/library/lang/rascal/grammar/ParserGenerator.rsc index ddfeade3d52..74839350d67 100644 --- a/src/org/rascalmpl/library/lang/rascal/grammar/ParserGenerator.rsc +++ b/src/org/rascalmpl/library/lang/rascal/grammar/ParserGenerator.rsc @@ -43,7 +43,7 @@ default str getParserMethodName(Symbol s) = value2id(s); public str newGenerate(str package, str name, Grammar gr) { str src = ""; - job("Generating parser .", void (void (str m, int w) worked) { + job("Generating ", void (void (str m, int w) worked) { int uniqueItem = 1; // -1 and -2 are reserved by the SGTDBF implementation int newItem() { uniqueItem += 1; return uniqueItem; }; @@ -85,7 +85,7 @@ public str newGenerate(str package, str name, Grammar gr) { //println("optimizing lookahead automaton", 1); //gr = compileLookaheads(gr); - worked("printing the source code of the parser class", 1); + worked("source code template", 1); src = "package ; ' diff --git a/src/org/rascalmpl/repl/TerminalProgressBarMonitor.java b/src/org/rascalmpl/repl/TerminalProgressBarMonitor.java index 67b0acc41f4..5c120d06f25 100644 --- a/src/org/rascalmpl/repl/TerminalProgressBarMonitor.java +++ b/src/org/rascalmpl/repl/TerminalProgressBarMonitor.java @@ -126,7 +126,7 @@ void write() { var msg = message.substring(0, 1).toUpperCase() + message.substring(1, message.length()); // fill up and cut off: - msg = threadLabel() + message; + msg = threadLabel() + msg; msg = (msg + " ".repeat(Math.max(0, barWidth - msg.length()))).substring(0, barWidth); // split @@ -162,6 +162,9 @@ private String threadLabel() { if (threadName.isEmpty()) { return ""; } + else if ("main".equals(threadName)) { + return ""; + } return threadName + ": "; } @@ -388,7 +391,14 @@ public synchronized void write(int b) throws IOException { @Override public synchronized void endAllJobs() { - // eraseBars(); + for (var pb : bars) { + if (pb.nesting > 0) { + writer.println("[INFO] " + pb.name + " is still at nesting level " + pb.nesting); + } + if (pb.current < pb.max) { + writer.println("[INFO] " + pb.name + " has not done all the work (" + pb.current + " of " + pb.max + ")"); + } + } bars.clear(); writer.write(ANSI.showCursor()); writer.flush(); diff --git a/src/org/rascalmpl/semantics/dynamic/Import.java b/src/org/rascalmpl/semantics/dynamic/Import.java index fe43297baca..0e741910482 100644 --- a/src/org/rascalmpl/semantics/dynamic/Import.java +++ b/src/org/rascalmpl/semantics/dynamic/Import.java @@ -345,6 +345,9 @@ public static ModuleEnvironment loadModule(ISourceLocation x, String name, IEval e.printStackTrace(); throw new ModuleImport(name, e.getMessage(), x); } + finally { + eval.jobEnd("loading", true); + } heap.removeModule(env); throw new ImplementationError("Unexpected error while parsing module " + name + " and building an AST for it ", x); diff --git a/src/org/rascalmpl/test/infrastructure/RascalJUnitParallelRecursiveTestRunner.java b/src/org/rascalmpl/test/infrastructure/RascalJUnitParallelRecursiveTestRunner.java index 2856ec84457..8927b6c7a09 100644 --- a/src/org/rascalmpl/test/infrastructure/RascalJUnitParallelRecursiveTestRunner.java +++ b/src/org/rascalmpl/test/infrastructure/RascalJUnitParallelRecursiveTestRunner.java @@ -172,6 +172,8 @@ private void runTests(RunNotifier notifier) { newResult.accept(notifier); } } + + monitor.endAllJobs(); assert results.isEmpty(); } @@ -240,7 +242,7 @@ private boolean waitForRunSignal() { } private void processModules() { - evaluator.job("Importing test modules", 1, (jn) -> { + evaluator.job("Importing test modules", 0, (jn) -> { try { String module; diff --git a/src/org/rascalmpl/test/infrastructure/TestFramework.java b/src/org/rascalmpl/test/infrastructure/TestFramework.java index 1dfe3674dad..888cc019cb1 100644 --- a/src/org/rascalmpl/test/infrastructure/TestFramework.java +++ b/src/org/rascalmpl/test/infrastructure/TestFramework.java @@ -34,6 +34,7 @@ import org.rascalmpl.interpreter.load.StandardLibraryContributor; import org.rascalmpl.interpreter.result.Result; import org.rascalmpl.interpreter.staticErrors.StaticError; +import org.rascalmpl.repl.TerminalProgressBarMonitor; import org.rascalmpl.uri.URIResolverRegistry; import org.rascalmpl.uri.URIUtil; import io.usethesource.vallang.IBool; @@ -41,10 +42,13 @@ import io.usethesource.vallang.IValue; import io.usethesource.vallang.exceptions.FactTypeUseException; import io.usethesource.vallang.type.TypeFactory; +import jline.TerminalFactory; + import org.rascalmpl.values.ValueFactoryFactory; public class TestFramework { + private final static TerminalProgressBarMonitor monitor = new TerminalProgressBarMonitor(System.out, TerminalFactory.get()); private final static Evaluator evaluator; private final static GlobalEnvironment heap; private final static ModuleEnvironment root; @@ -57,9 +61,10 @@ public class TestFramework { root = heap.addModule(new ModuleEnvironment("___test___", heap)); stderr = new PrintWriter(System.err); - stdout = new PrintWriter(System.out); - evaluator = new Evaluator(ValueFactoryFactory.getValueFactory(), System.in, System.err, System.out, root, heap); - + stdout = new PrintWriter(monitor); + evaluator = new Evaluator(ValueFactoryFactory.getValueFactory(), System.in, System.err, monitor, root, heap); + evaluator.setMonitor(monitor); + evaluator.addRascalSearchPathContributor(StandardLibraryContributor.getInstance()); RascalJUnitTestRunner.configureProjectEvaluator(evaluator, RascalJUnitTestRunner.inferProjectRoot(TestFramework.class)); diff --git a/test/org/rascalmpl/test/functionality/ParallelEvaluatorsTests.java b/test/org/rascalmpl/test/functionality/ParallelEvaluatorsTests.java index 16ea17ef311..d260f369490 100644 --- a/test/org/rascalmpl/test/functionality/ParallelEvaluatorsTests.java +++ b/test/org/rascalmpl/test/functionality/ParallelEvaluatorsTests.java @@ -11,19 +11,19 @@ import java.util.concurrent.atomic.AtomicReference; import org.junit.Test; +import org.rascalmpl.debug.IRascalMonitor; import org.rascalmpl.interpreter.Evaluator; import org.rascalmpl.interpreter.ITestResultListener; +import org.rascalmpl.interpreter.NullRascalMonitor; import org.rascalmpl.interpreter.env.GlobalEnvironment; import org.rascalmpl.interpreter.env.ModuleEnvironment; import org.rascalmpl.interpreter.load.StandardLibraryContributor; -import org.rascalmpl.repl.TerminalProgressBarMonitor; import org.rascalmpl.values.ValueFactoryFactory; import io.usethesource.vallang.ISourceLocation; -import jline.TerminalFactory; public class ParallelEvaluatorsTests { - private static final TerminalProgressBarMonitor monitor = new TerminalProgressBarMonitor(System.out, TerminalFactory.get()); + private static final IRascalMonitor monitor = new NullRascalMonitor(); private static final String[] testModules = new String[] { "lang::rascal::tests::library::ValueIO", @@ -35,7 +35,7 @@ private static Evaluator freshEvaluator() { var heap = new GlobalEnvironment(); var root = heap.addModule(new ModuleEnvironment("___test___", heap)); - var evaluator = new Evaluator(ValueFactoryFactory.getValueFactory(), System.in, System.err, monitor, root, heap); + var evaluator = new Evaluator(ValueFactoryFactory.getValueFactory(), System.in, System.err, System.out, root, heap); evaluator.setMonitor(monitor); evaluator.addRascalSearchPathContributor(StandardLibraryContributor.getInstance()); evaluator.setTestResultListener(new ITestResultListener() { @@ -107,7 +107,7 @@ public void testMultipleEvaluators() { } } - }); + }, "Evaluator parallel stress test " + i); runner.setDaemon(true); runner.start(); } @@ -131,10 +131,8 @@ public void testMultipleEvaluators() { } finally { close.set(true); + monitor.endAllJobs(); } - - - } }