aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java')
-rw-r--r--src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java38
1 files changed, 34 insertions, 4 deletions
diff --git a/src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java b/src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java
index 238a30be49..70c583a0cd 100644
--- a/src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java
+++ b/src/tools/execlog/src/main/java/com/google/devtools/build/execlog/ExecLogParser.java
@@ -15,8 +15,8 @@ package com.google.devtools.build.execlog;
import com.google.devtools.build.lib.exec.Protos.SpawnExec;
import com.google.devtools.common.options.OptionsParser;
-
import java.io.FileInputStream;
+import java.io.IOException;
import java.io.InputStream;
/**
@@ -26,15 +26,45 @@ final class ExecLogParser {
static final String DELIMITER = "\n---------------------------------------------------------\n";
+ final InputStream in;
+ final String restrictToRunner;
+
+ ExecLogParser(InputStream in, String restrictToRunner) {
+ this.in = in;
+ this.restrictToRunner = restrictToRunner;
+ }
+
+ public SpawnExec getNext() throws IOException {
+ SpawnExec ex;
+ // Find the next record whose runner matches
+ do {
+ if (in.available() <= 0) {
+ // End of file
+ return null;
+ }
+ ex = SpawnExec.parseDelimitedFrom(in);
+ } while (restrictToRunner != null && !restrictToRunner.equals(ex.getRunner()));
+ return ex;
+ }
+
public static void main(String[] args) throws Exception {
OptionsParser op = OptionsParser.newOptionsParser(ParserOptions.class);
op.parseAndExitUponError(args);
+
ParserOptions options = op.getOptions(ParserOptions.class);
- InputStream in = new FileInputStream(options.logPath);
- while (in.available() > 0) {
- SpawnExec ex = SpawnExec.parseDelimitedFrom(in);
+ if (options.logPath == null) {
+ System.err.println("--log_path needs to be specified.");
+ System.exit(1);
+ }
+
+ ExecLogParser parser =
+ new ExecLogParser(new FileInputStream(options.logPath), options.restrictToRunner);
+
+ SpawnExec ex;
+ while ((ex = parser.getNext()) != null) {
System.out.println(ex);
System.out.println(DELIMITER);
}
}
}
+