aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/utils/stc/src/main/java/org/onlab/stc/Main.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/utils/stc/src/main/java/org/onlab/stc/Main.java')
-rw-r--r--framework/src/onos/utils/stc/src/main/java/org/onlab/stc/Main.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/framework/src/onos/utils/stc/src/main/java/org/onlab/stc/Main.java b/framework/src/onos/utils/stc/src/main/java/org/onlab/stc/Main.java
index bc10ec7a..ca04a7c2 100644
--- a/framework/src/onos/utils/stc/src/main/java/org/onlab/stc/Main.java
+++ b/framework/src/onos/utils/stc/src/main/java/org/onlab/stc/Main.java
@@ -16,13 +16,16 @@
package org.onlab.stc;
import com.google.common.collect.ImmutableList;
+import com.google.common.io.Files;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletHandler;
import org.eclipse.jetty.util.log.Logger;
import org.onlab.stc.Coordinator.Status;
+import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
+import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@@ -64,10 +67,12 @@ public final class Main {
private String runToPatterns = "";
private Coordinator coordinator;
+ private Compiler compiler;
private Monitor monitor;
private Listener delegate = new Listener();
private static boolean useColor = Objects.equals("true", System.getenv("stcColor"));
+ private static boolean dumpLogs = Objects.equals("true", System.getenv("stcDumpLogs"));
// usage: stc [<scenario-file>] [run]
// usage: stc [<scenario-file>] run [from <from-patterns>] [to <to-patterns>]]
@@ -113,7 +118,7 @@ public final class Main {
Scenario scenario = Scenario.loadScenario(new FileInputStream(scenarioFile));
// Elaborate scenario
- Compiler compiler = new Compiler(scenario);
+ compiler = new Compiler(scenario);
compiler.compile();
// Setup the process flow coordinator
@@ -221,7 +226,7 @@ public final class Main {
/**
* Internal delegate to monitor the process execution.
*/
- private static class Listener implements StepProcessListener {
+ private class Listener implements StepProcessListener {
@Override
public void onStart(Step step, String command) {
logStatus(currentTimeMillis(), step.name(), IN_PROGRESS, command);
@@ -230,6 +235,9 @@ public final class Main {
@Override
public void onCompletion(Step step, Status status) {
logStatus(currentTimeMillis(), step.name(), status, null);
+ if (dumpLogs && !(step instanceof Group) && status == FAILED) {
+ dumpLogs(step);
+ }
}
@Override
@@ -246,6 +254,18 @@ public final class Main {
}
}
+ // Dumps the step logs to standard output.
+ private void dumpLogs(Step step) {
+ File logFile = new File(compiler.logDir(), step.name() + ".log");
+ try {
+ print(">>>>>");
+ Files.copy(logFile, System.out);
+ print("<<<<<");
+ } catch (IOException e) {
+ print("Unable to dump log file %s", logFile.getName());
+ }
+ }
+
// Produces a description of event using the specified step status.
private static String action(Status status) {
return status == IN_PROGRESS ? "started" :