diff options
author | Philipp Wollermann <philwo@google.com> | 2015-11-04 20:21:40 +0000 |
---|---|---|
committer | John Field <jfield@google.com> | 2015-11-05 16:49:45 +0000 |
commit | 026de57e5e4e1d853808cd817d4f6f32dc0efa58 (patch) | |
tree | b4d890ab2cbf63150251c8f50cc8616b33035c61 /src/test/java/com | |
parent | 4bb27491c877a6b77efdc0a4ba78b1f265934097 (diff) |
workers: Pass a map of input filenames -> digest of file contents to workers so that they can cache and reuse state for unchanged inputs over multiple builds.
--
MOS_MIGRATED_REVID=107066408
Diffstat (limited to 'src/test/java/com')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/worker/ExampleWorker.java | 17 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/worker/ExampleWorkerOptions.java | 7 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/worker/ExampleWorker.java b/src/test/java/com/google/devtools/build/lib/worker/ExampleWorker.java index 78c03ff012..21c089c088 100644 --- a/src/test/java/com/google/devtools/build/lib/worker/ExampleWorker.java +++ b/src/test/java/com/google/devtools/build/lib/worker/ExampleWorker.java @@ -20,6 +20,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.worker.ExampleWorkerOptions.ExampleWorkOptions; +import com.google.devtools.build.lib.worker.WorkerProtocol.Input; import com.google.devtools.build.lib.worker.WorkerProtocol.WorkRequest; import com.google.devtools.build.lib.worker.WorkerProtocol.WorkResponse; import com.google.devtools.common.options.OptionsParser; @@ -30,7 +31,9 @@ import java.io.PrintStream; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map.Entry; import java.util.UUID; /** @@ -47,6 +50,9 @@ public class ExampleWorker { // If true, returns corrupt responses instead of correct protobufs. static boolean poisoned = false; + // Keep state across multiple builds. + static final LinkedHashMap<String, String> inputs = new LinkedHashMap<>(); + public static void main(String[] args) throws Exception { if (ImmutableSet.copyOf(args).contains("--persistent_worker")) { OptionsParser parser = OptionsParser.newOptionsParser(ExampleWorkerOptions.class); @@ -73,6 +79,11 @@ public class ExampleWorker { break; } + inputs.clear(); + for (Input input : request.getInputsList()) { + inputs.put(input.getPath(), input.getDigest().toStringUtf8()); + } + ByteArrayOutputStream baos = new ByteArrayOutputStream(); int exitCode = 0; @@ -142,6 +153,12 @@ public class ExampleWorker { } outputs.add(residueStr); + if (options.printInputs) { + for (Entry<String, String> input : inputs.entrySet()) { + outputs.add("INPUT " + input.getKey() + " " + input.getValue()); + } + } + String outputStr = Joiner.on('\n').join(outputs); if (options.outputFile.isEmpty()) { System.out.println(outputStr); diff --git a/src/test/java/com/google/devtools/build/lib/worker/ExampleWorkerOptions.java b/src/test/java/com/google/devtools/build/lib/worker/ExampleWorkerOptions.java index 6a159ae512..7456e4b331 100644 --- a/src/test/java/com/google/devtools/build/lib/worker/ExampleWorkerOptions.java +++ b/src/test/java/com/google/devtools/build/lib/worker/ExampleWorkerOptions.java @@ -44,6 +44,13 @@ public class ExampleWorkerOptions extends OptionsBase { help = "Writes a counter that increases with each work unit processed into the output." ) public boolean writeCounter; + + @Option( + name = "print_inputs", + defaultValue = "false", + help = "Writes a list of input files and their digests." + ) + public boolean printInputs; } @Option(name = "persistent_worker", defaultValue = "false") |