diff options
Diffstat (limited to 'src')
27 files changed, 97 insertions, 107 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionResult.java b/src/main/java/com/google/devtools/build/lib/actions/ActionResult.java index b84006c0bd..0b8fa0143d 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/ActionResult.java +++ b/src/main/java/com/google/devtools/build/lib/actions/ActionResult.java @@ -15,10 +15,10 @@ package com.google.devtools.build.lib.actions; import com.google.auto.value.AutoValue; -import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableList; import java.time.Duration; +import java.util.List; import java.util.Optional; -import java.util.Set; import java.util.function.Function; /** Holds the result(s) of an action's execution. */ @@ -26,10 +26,10 @@ import java.util.function.Function; public abstract class ActionResult { /** An empty ActionResult used by Actions that don't have any metadata to return. */ - public static final ActionResult EMPTY = ActionResult.create(ImmutableSet.of()); + public static final ActionResult EMPTY = ActionResult.create(ImmutableList.of()); /** Returns the SpawnResults for the action. */ - public abstract Set<SpawnResult> spawnResults(); + public abstract List<SpawnResult> spawnResults(); /** Returns a builder that can be used to construct a {@link ActionResult} object. */ public static Builder builder() { @@ -92,8 +92,8 @@ public abstract class ActionResult { return getCumulativeTime(spawnResult -> spawnResult.getSystemTime()); } - /** Creates an ActionResult given a set of SpawnResults. */ - public static ActionResult create(Set<SpawnResult> spawnResults) { + /** Creates an ActionResult given a list of SpawnResults. */ + public static ActionResult create(List<SpawnResult> spawnResults) { if (spawnResults == null) { return EMPTY; } else { @@ -106,7 +106,7 @@ public abstract class ActionResult { public abstract static class Builder { /** Sets the SpawnResults for the action. */ - public abstract Builder setSpawnResults(Set<SpawnResult> spawnResults); + public abstract Builder setSpawnResults(List<SpawnResult> spawnResults); /** Builds and returns an ActionResult object. */ public abstract ActionResult build(); diff --git a/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java b/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java index 24292c8c5b..96a2c21808 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java +++ b/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java @@ -14,7 +14,7 @@ package com.google.devtools.build.lib.actions; -import java.util.Set; +import java.util.List; import java.util.concurrent.atomic.AtomicReference; /** @@ -44,11 +44,11 @@ public interface SandboxedSpawnActionContext extends SpawnActionContext { * to the unique reference of the strategy, the {@link SandboxedSpawnActionContext} should abandon * all results and raise {@link InterruptedException}. * - * @return a Set of {@link SpawnResult}s containing metadata about the Spawn's execution. This - * will typically contain one element, but could contain no elements if spawn execution did not - * complete, or contain multiple elements if multiple sub-spawns were executed + * @return a List of {@link SpawnResult}s containing metadata about the Spawn's execution. This + * will typically contain one element, but could contain no elements if spawn execution did + * not complete, or contain multiple elements if multiple sub-spawns were executed */ - Set<SpawnResult> exec( + List<SpawnResult> exec( Spawn spawn, ActionExecutionContext actionExecutionContext, AtomicReference<Class<? extends SpawnActionContext>> writeOutputFiles) diff --git a/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java b/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java index b4066ec870..ce8da0ca1b 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java +++ b/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java @@ -13,7 +13,7 @@ // limitations under the License. package com.google.devtools.build.lib.actions; -import java.util.Set; +import java.util.List; /** * A context that allows execution of {@link Spawn} instances. @@ -22,6 +22,6 @@ import java.util.Set; public interface SpawnActionContext extends ActionContext { /** Executes the given spawn and returns metadata about the execution. */ - Set<SpawnResult> exec(Spawn spawn, ActionExecutionContext actionExecutionContext) + List<SpawnResult> exec(Spawn spawn, ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java index 4a2a19b1ae..8a0572ef12 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java @@ -17,7 +17,7 @@ import com.google.devtools.build.lib.actions.ActionContext; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.SpawnResult; -import java.util.Set; +import java.util.List; /** * The action context for {@link AbstractFileWriteAction} instances (technically instances of @@ -28,9 +28,9 @@ public interface FileWriteActionContext extends ActionContext { /** * Performs all the setup and then calls back into the action to write the data. * - * @return a set of SpawnResults created during execution, if any + * @return a list of SpawnResults created during execution, if any */ - Set<SpawnResult> exec( + List<SpawnResult> exec( AbstractFileWriteAction action, ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java index 90f09f4c94..3c73955c04 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java @@ -45,7 +45,6 @@ import java.io.IOException; import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Set; /** * An action that populates a TreeArtifact with the contents of an archive file. @@ -191,7 +190,7 @@ public final class PopulateTreeArtifactAction extends AbstractAction { } // Execute the spawn. - Set<SpawnResult> spawnResults; + List<SpawnResult> spawnResults; try { spawnResults = getContext(actionExecutionContext).exec(spawn, actionExecutionContext); } catch (ExecException e) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java index 7ca19b757a..0c91168b83 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java @@ -72,7 +72,6 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Set; import javax.annotation.CheckReturnValue; import javax.annotation.Nullable; @@ -260,7 +259,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie * * <p>Called by {@link #execute}. */ - protected Set<SpawnResult> internalExecute(ActionExecutionContext actionExecutionContext) + protected List<SpawnResult> internalExecute(ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException, CommandLineExpansionException { return getContext(actionExecutionContext) .exec(getSpawn(actionExecutionContext.getClientEnv()), actionExecutionContext); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java index 7ea2e2bbe2..449a0cc572 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java @@ -18,7 +18,7 @@ import com.google.devtools.build.lib.actions.ActionContext; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionExecutionException; import com.google.devtools.build.lib.actions.SpawnResult; -import java.util.Set; +import java.util.List; /** * Action context for symlink tree actions (an action that creates a tree of symlinks). @@ -28,9 +28,9 @@ public interface SymlinkTreeActionContext extends ActionContext { /** * Creates the symlink tree. * - * @return a set of SpawnResults created during symlink creation, if any + * @return a list of SpawnResults created during symlink creation, if any */ - Set<SpawnResult> createSymlinks( + List<SpawnResult> createSymlinks( SymlinkTreeAction action, ActionExecutionContext actionExecutionContext, ImmutableMap<String, String> shellEnvironment, diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionContext.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionContext.java index 44ae134d9d..885f42bbdf 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionContext.java @@ -20,7 +20,7 @@ import com.google.devtools.build.lib.actions.SpawnResult; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.view.test.TestStatus.TestResultData; import java.io.IOException; -import java.util.Set; +import java.util.List; /** * A context for the execution of test actions ({@link TestRunnerAction}). @@ -31,9 +31,9 @@ public interface TestActionContext extends ActionContext { * Executes the test command, directing standard out / err to {@code outErr}. The status of the * test should be communicated by posting a {@link TestResult} object to the eventbus. * - * @return a set of SpawnResults created during execution of the test command, if any + * @return a list of SpawnResults created during execution of the test command, if any */ - Set<SpawnResult> exec(TestRunnerAction action, ActionExecutionContext actionExecutionContext) + List<SpawnResult> exec(TestRunnerAction action, ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException; /** diff --git a/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java index 93b58ff7e2..0f1cf259c0 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java @@ -16,7 +16,7 @@ package com.google.devtools.build.lib.exec; import com.google.common.base.Preconditions; import com.google.common.base.Predicates; -import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.eventbus.EventBus; import com.google.devtools.build.lib.actions.ActionExecutionContext; @@ -44,7 +44,6 @@ import java.io.IOException; import java.time.Duration; import java.util.ArrayList; import java.util.List; -import java.util.Set; import java.util.SortedMap; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; @@ -61,13 +60,13 @@ public abstract class AbstractSpawnStrategy implements SandboxedSpawnActionConte } @Override - public Set<SpawnResult> exec(Spawn spawn, ActionExecutionContext actionExecutionContext) + public List<SpawnResult> exec(Spawn spawn, ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException { return exec(spawn, actionExecutionContext, null); } @Override - public Set<SpawnResult> exec( + public List<SpawnResult> exec( Spawn spawn, ActionExecutionContext actionExecutionContext, AtomicReference<Class<? extends SpawnActionContext>> writeOutputFiles) @@ -116,7 +115,7 @@ public abstract class AbstractSpawnStrategy implements SandboxedSpawnActionConte cwd); throw new SpawnExecException(message, spawnResult, /*forciblyRunRemotely=*/false); } - return ImmutableSet.of(spawnResult); + return ImmutableList.of(spawnResult); } private List<Path> listExistingOutputFiles(Spawn spawn, Path execRoot) { diff --git a/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java index 74df515739..be9841cf0c 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java @@ -14,7 +14,7 @@ package com.google.devtools.build.lib.exec; -import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.EnvironmentalExecException; @@ -28,7 +28,7 @@ import com.google.devtools.build.lib.vfs.Path; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; -import java.util.Set; +import java.util.List; import java.util.logging.Logger; /** @@ -43,7 +43,7 @@ public final class FileWriteStrategy implements FileWriteActionContext { } @Override - public Set<SpawnResult> exec( + public List<SpawnResult> exec( AbstractFileWriteAction action, ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException { // TODO(ulfjack): Consider acquiring local resources here before trying to write the file. @@ -64,6 +64,6 @@ public final class FileWriteStrategy implements FileWriteActionContext { + "' due to I/O error: " + e.getMessage(), e); } } - return ImmutableSet.of(); + return ImmutableList.of(); } } diff --git a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestResult.java b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestResult.java index b4fab1fff7..d94e1311a2 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestResult.java +++ b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestResult.java @@ -15,17 +15,17 @@ package com.google.devtools.build.lib.exec; import com.google.auto.value.AutoValue; -import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.SpawnResult; import com.google.devtools.build.lib.view.test.TestStatus.TestResultData; -import java.util.Set; +import java.util.List; /** Contains information about the results of test execution. */ @AutoValue public abstract class StandaloneTestResult { /** Returns the SpawnResults created by the test, if any. */ - public abstract Set<SpawnResult> spawnResults(); + public abstract List<SpawnResult> spawnResults(); /** Returns the TestResultData for the test. */ public abstract TestResultData testResultData(); @@ -37,7 +37,7 @@ public abstract class StandaloneTestResult { /** Creates a StandaloneTestResult, given spawnResults and testResultData. */ public static StandaloneTestResult create( - Set<SpawnResult> spawnResults, TestResultData testResultData) { + List<SpawnResult> spawnResults, TestResultData testResultData) { return builder().setSpawnResults(spawnResults).setTestResultData(testResultData).build(); } @@ -46,10 +46,10 @@ public abstract class StandaloneTestResult { public abstract static class Builder { /** Returns the SpawnResults for the test, if any. */ - abstract Set<SpawnResult> spawnResults(); + abstract List<SpawnResult> spawnResults(); /** Sets the SpawnResults for the test. */ - public abstract Builder setSpawnResults(Set<SpawnResult> spawnResults); + public abstract Builder setSpawnResults(List<SpawnResult> spawnResults); /** Sets the TestResultData for the test. */ public abstract Builder setTestResultData(TestResultData testResultData); @@ -59,10 +59,10 @@ public abstract class StandaloneTestResult { /** * Returns an immutable StandaloneTestResult object. * - * <p>The set of SpawnResults is also made immutable here. + * <p>The list of SpawnResults is also made immutable here. */ public StandaloneTestResult build() { - return this.setSpawnResults(ImmutableSet.copyOf(spawnResults())).realBuild(); + return this.setSpawnResults(ImmutableList.copyOf(spawnResults())).realBuild(); } } } diff --git a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java index bfa8cd8b9d..41fcb3cd12 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.exec; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.EnvironmentalExecException; @@ -51,8 +50,8 @@ import com.google.devtools.build.lib.view.test.TestStatus.TestResultData; import com.google.devtools.build.lib.view.test.TestStatus.TestResultData.Builder; import java.io.Closeable; import java.io.IOException; +import java.util.List; import java.util.Map; -import java.util.Set; /** Runs TestRunnerAction actions. */ @ExecutionStrategy( @@ -87,7 +86,7 @@ public class StandaloneTestStrategy extends TestStrategy { } @Override - public Set<SpawnResult> exec( + public List<SpawnResult> exec( TestRunnerAction action, ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException { Path execRoot = actionExecutionContext.getExecRoot(); @@ -199,7 +198,7 @@ public class StandaloneTestStrategy extends TestStrategy { finalizeTest(actionExecutionContext, action, dataBuilder.build()); // TODO(b/62588075): Should we accumulate SpawnResults across test attempts instead of only - // returning the last set? + // returning the last list? return standaloneTestResult.spawnResults(); } catch (IOException e) { actionExecutionContext.getEventHandler().handle(Event.error("Caught I/O exception: " + e)); @@ -351,7 +350,7 @@ public class StandaloneTestStrategy extends TestStrategy { long startTime = actionExecutionContext.getClock().currentTimeMillis(); SpawnActionContext spawnActionContext = actionExecutionContext.getSpawnActionContext(action.getMnemonic()); - Set<SpawnResult> spawnResults = ImmutableSet.of(); + List<SpawnResult> spawnResults = ImmutableList.of(); try { try { if (executionOptions.testOutput.equals(TestOutputFormat.STREAMED)) { @@ -374,7 +373,7 @@ public class StandaloneTestStrategy extends TestStrategy { .setTestPassed(false) .setStatus(e.hasTimedOut() ? BlazeTestStatus.TIMEOUT : BlazeTestStatus.FAILED) .addFailedLogs(testLogPath.getPathString()); - spawnResults = ImmutableSet.of(e.getSpawnResult()); + spawnResults = ImmutableList.of(e.getSpawnResult()); } finally { long duration = actionExecutionContext.getClock().currentTimeMillis() - startTime; builder.setStartTimeMillisEpoch(startTime); diff --git a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java index 60fbf2dfac..b5f4b92024 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java +++ b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java @@ -15,8 +15,8 @@ package com.google.devtools.build.lib.exec; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import com.google.devtools.build.lib.actions.AbstractAction; import com.google.devtools.build.lib.actions.ActionExecutionContext; @@ -35,7 +35,6 @@ import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import java.io.IOException; import java.util.List; -import java.util.Set; /** * Helper class responsible for the symlink tree creation. @@ -109,9 +108,9 @@ public final class SymlinkTreeHelper { * @param action action instance that requested symlink tree creation * @param actionExecutionContext Services that are in the scope of the action. * @param enableRunfiles - * @return a set of SpawnResults created during symlink creation, if any + * @return a list of SpawnResults created during symlink creation, if any */ - public Set<SpawnResult> createSymlinks( + public List<SpawnResult> createSymlinks( AbstractAction action, ActionExecutionContext actionExecutionContext, BinTools binTools, @@ -135,7 +134,7 @@ public final class SymlinkTreeHelper { } catch (IOException e) { throw new UserExecException(e.getMessage(), e); } - return ImmutableSet.of(); + return ImmutableList.of(); } } diff --git a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java index 617b8f1d84..a0f87d4da0 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java @@ -13,8 +13,8 @@ // limitations under the License. package com.google.devtools.build.lib.exec; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionExecutionException; import com.google.devtools.build.lib.actions.ExecException; @@ -25,7 +25,7 @@ import com.google.devtools.build.lib.analysis.actions.SymlinkTreeActionContext; import com.google.devtools.build.lib.analysis.config.BinTools; import com.google.devtools.build.lib.profiler.AutoProfiler; import com.google.devtools.build.lib.skyframe.OutputService; -import java.util.Set; +import java.util.List; import java.util.logging.Logger; /** @@ -45,7 +45,7 @@ public final class SymlinkTreeStrategy implements SymlinkTreeActionContext { } @Override - public Set<SpawnResult> createSymlinks( + public List<SpawnResult> createSymlinks( SymlinkTreeAction action, ActionExecutionContext actionExecutionContext, ImmutableMap<String, String> shellEnvironment, @@ -63,7 +63,7 @@ public final class SymlinkTreeStrategy implements SymlinkTreeActionContext { action.getOutputManifest().getPath(), action.isFilesetTree(), action.getOutputManifest().getExecPath().getParentDirectory()); - return ImmutableSet.of(); + return ImmutableList.of(); } else { return helper.createSymlinks( action, actionExecutionContext, binTools, shellEnvironment, enableRunfiles); diff --git a/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java index dda60463c6..85d1d1d60d 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java @@ -56,7 +56,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import javax.annotation.Nullable; /** A strategy for executing a {@link TestRunnerAction}. */ @@ -148,7 +147,7 @@ public abstract class TestStrategy implements TestActionContext { } @Override - public abstract Set<SpawnResult> exec( + public abstract List<SpawnResult> exec( TestRunnerAction action, ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException; diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java index b2b5d4af10..623435bf95 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java @@ -1167,7 +1167,7 @@ public class CppCompileAction extends AbstractAction actionExecutionContext.getFileOutErr().setErrorFilter(showIncludesFilterForStderr); } - Set<SpawnResult> spawnResults; + List<SpawnResult> spawnResults; try { CppCompileActionResult cppCompileActionResult = actionExecutionContext diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionResult.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionResult.java index 93e3ae4ef8..57daf406b9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionResult.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionResult.java @@ -15,9 +15,9 @@ package com.google.devtools.build.lib.rules.cpp; import com.google.auto.value.AutoValue; -import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.SpawnResult; -import java.util.Set; +import java.util.List; import javax.annotation.Nullable; /** Contains information about the result of a CppCompileAction's execution. */ @@ -25,7 +25,7 @@ import javax.annotation.Nullable; public abstract class CppCompileActionResult { /** Returns the SpawnResults created by the action, if any. */ - public abstract Set<SpawnResult> spawnResults(); + public abstract List<SpawnResult> spawnResults(); /** * Gets the optional CppCompileActionContext.Reply for the action. @@ -46,10 +46,10 @@ public abstract class CppCompileActionResult { public abstract static class Builder { /** Returns the SpawnResults for the action, if any. */ - abstract Set<SpawnResult> spawnResults(); + abstract List<SpawnResult> spawnResults(); /** Sets the SpawnResults for the action. */ - public abstract Builder setSpawnResults(Set<SpawnResult> spawnResults); + public abstract Builder setSpawnResults(List<SpawnResult> spawnResults); /** Sets the CppCompileActionContext.Reply for the action. */ public abstract Builder setContextReply(CppCompileActionContext.Reply reply); @@ -59,10 +59,10 @@ public abstract class CppCompileActionResult { /** * Returns an immutable CppCompileActionResult object. * - * <p>The set of SpawnResults is also made immutable here. + * <p>The list of SpawnResults is also made immutable here. */ public CppCompileActionResult build() { - return this.setSpawnResults(ImmutableSet.copyOf(spawnResults())).realBuild(); + return this.setSpawnResults(ImmutableList.copyOf(spawnResults())).realBuild(); } } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java index 5e7d5dfecb..383e84f03d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java @@ -39,7 +39,7 @@ import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import java.io.IOException; -import java.util.Set; +import java.util.List; import java.util.UUID; import java.util.logging.Logger; @@ -126,7 +126,7 @@ public class FakeCppCompileAction extends CppCompileAction { public ActionResult execute(ActionExecutionContext actionExecutionContext) throws ActionExecutionException, InterruptedException { setModuleFileFlags(); - Set<SpawnResult> spawnResults; + List<SpawnResult> spawnResults; // First, do a normal compilation, to generate the ".d" file. The generated object file is built // to a temporary location (tempOutputFile) and ignored afterwards. logger.info("Generating " + getDotdFile()); diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java index a5a82f1b13..4b64e2b7ad 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java @@ -27,7 +27,7 @@ import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnResult; import com.google.devtools.build.lib.actions.UserExecException; -import java.util.Set; +import java.util.List; /** * A context for C++ compilation that calls into a {@link SpawnActionContext}. @@ -67,7 +67,7 @@ public class SpawnGccStrategy implements CppCompileActionContext { action.getOutputs().asList(), action.estimateResourceConsumptionLocal()); - Set<SpawnResult> spawnResults = + List<SpawnResult> spawnResults = actionExecutionContext .getSpawnActionContext(action.getMnemonic()) .exec(spawn, actionExecutionContext); diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java index 4955c2b183..7cf23808ec 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java @@ -14,8 +14,8 @@ package com.google.devtools.build.lib.rules.genrule; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.ActionEnvironment; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionOwner; @@ -29,7 +29,6 @@ import com.google.devtools.build.lib.analysis.actions.CommandLine; import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.events.EventHandler; import java.util.List; -import java.util.Set; /** * A spawn action for genrules. Genrules are handled specially in that inputs and outputs are @@ -69,11 +68,11 @@ public class GenRuleAction extends SpawnAction { } @Override - protected Set<SpawnResult> internalExecute(ActionExecutionContext actionExecutionContext) + protected List<SpawnResult> internalExecute(ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException { EventHandler reporter = actionExecutionContext.getEventHandler(); checkInputsForDirectories(reporter, actionExecutionContext.getActionInputFileCache()); - Set<SpawnResult> spawnResults = ImmutableSet.of(); + List<SpawnResult> spawnResults = ImmutableList.of(); try { spawnResults = super.internalExecute(actionExecutionContext); } catch (CommandLineExpansionException e) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java index cc5299aa65..1d4272178e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java @@ -55,7 +55,6 @@ import com.google.devtools.build.lib.vfs.PathFragment; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Set; import javax.annotation.Nullable; /** @@ -137,7 +136,7 @@ public class JavaHeaderCompileAction extends SpawnAction { } @Override - protected Set<SpawnResult> internalExecute(ActionExecutionContext actionExecutionContext) + protected List<SpawnResult> internalExecute(ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException { SpawnActionContext context = getContext(actionExecutionContext); try { diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java index dd127ca8ec..66e25763ec 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java @@ -23,7 +23,7 @@ import com.google.devtools.build.lib.analysis.test.TestRunnerAction; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.view.test.TestStatus.TestResultData; import java.io.IOException; -import java.util.Set; +import java.util.List; /** * Test strategy wrapper called 'exclusive'. It should delegate to a test strategy for local @@ -41,7 +41,7 @@ public class ExclusiveTestStrategy implements TestActionContext { } @Override - public Set<SpawnResult> exec( + public List<SpawnResult> exec( TestRunnerAction action, ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException { return parent.exec(action, actionExecutionContext); diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java index e06b6c4f1b..274c953484 100644 --- a/src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java @@ -213,7 +213,7 @@ public class WorkerTestStrategy extends StandaloneTestStrategy { builder.setTestCase(details); } - return StandaloneTestResult.create(ImmutableSet.of(), builder.build()); + return StandaloneTestResult.create(ImmutableList.of(), builder.build()); } catch (IOException | InterruptedException e) { if (worker != null) { workerPool.invalidateObject(key, worker); diff --git a/src/test/java/com/google/devtools/build/lib/actions/ActionResultTest.java b/src/test/java/com/google/devtools/build/lib/actions/ActionResultTest.java index 986e6e89a6..87081ea417 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ActionResultTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ActionResultTest.java @@ -13,12 +13,11 @@ // limitations under the License. package com.google.devtools.build.lib.actions; -import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth8.assertThat; -import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableList; import java.time.Duration; -import java.util.Set; +import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -29,7 +28,7 @@ public final class ActionResultTest { @Test public void testCumulativeCommandExecutionTime_NoSpawnResults() { - Set<SpawnResult> spawnResults = ImmutableSet.of(); + List<SpawnResult> spawnResults = ImmutableList.of(); ActionResult actionResult = ActionResult.create(spawnResults); assertThat(actionResult.cumulativeCommandExecutionWallTime()).isEmpty(); assertThat(actionResult.cumulativeCommandExecutionUserTime()).isEmpty(); @@ -45,7 +44,7 @@ public final class ActionResultTest { .setSystemTime(Duration.ofMillis(42)) .setStatus(SpawnResult.Status.SUCCESS) .build(); - Set<SpawnResult> spawnResults = ImmutableSet.of(spawnResult); + List<SpawnResult> spawnResults = ImmutableList.of(spawnResult); ActionResult actionResult = ActionResult.create(spawnResults); assertThat(actionResult.cumulativeCommandExecutionWallTime()).isPresent(); assertThat(actionResult.cumulativeCommandExecutionWallTime()).hasValue(Duration.ofMillis(1984)); @@ -78,7 +77,7 @@ public final class ActionResultTest { .setSystemTime(Duration.ofMillis(2)) .setStatus(SpawnResult.Status.SUCCESS) .build(); - Set<SpawnResult> spawnResults = ImmutableSet.of(spawnResult1, spawnResult2, spawnResult3); + List<SpawnResult> spawnResults = ImmutableList.of(spawnResult1, spawnResult2, spawnResult3); ActionResult actionResult = ActionResult.create(spawnResults); assertThat(actionResult.cumulativeCommandExecutionWallTime()).isPresent(); assertThat(actionResult.cumulativeCommandExecutionWallTime()).hasValue(Duration.ofMillis(1984)); @@ -96,7 +95,7 @@ public final class ActionResultTest { new SpawnResult.Builder().setStatus(SpawnResult.Status.SUCCESS).build(); SpawnResult spawnResult3 = new SpawnResult.Builder().setStatus(SpawnResult.Status.SUCCESS).build(); - Set<SpawnResult> spawnResults = ImmutableSet.of(spawnResult1, spawnResult2, spawnResult3); + List<SpawnResult> spawnResults = ImmutableList.of(spawnResult1, spawnResult2, spawnResult3); ActionResult actionResult = ActionResult.create(spawnResults); assertThat(actionResult.cumulativeCommandExecutionWallTime()).isEmpty(); assertThat(actionResult.cumulativeCommandExecutionUserTime()).isEmpty(); diff --git a/src/test/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategyTest.java index 53ab069b1b..e6c7ee9683 100644 --- a/src/test/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategyTest.java +++ b/src/test/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategyTest.java @@ -34,7 +34,7 @@ import com.google.devtools.build.lib.testutil.TestSpec; import com.google.devtools.build.lib.vfs.FileSystem; import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem; import java.util.Collection; -import java.util.Set; +import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -72,8 +72,8 @@ public class AbstractSpawnStrategyTest { when(spawnRunner.exec(any(Spawn.class), any(SpawnExecutionPolicy.class))) .thenReturn(spawnResult); - Set<SpawnResult> spawnResults = new TestedSpawnStrategy(spawnRunner) - .exec(SIMPLE_SPAWN, actionExecutionContext); + List<SpawnResult> spawnResults = + new TestedSpawnStrategy(spawnRunner).exec(SIMPLE_SPAWN, actionExecutionContext); assertThat(spawnResults).containsExactly(spawnResult); @@ -90,7 +90,7 @@ public class AbstractSpawnStrategyTest { .thenReturn(result); try { - // Ignoring the Set<SpawnResult> return value. + // Ignoring the List<SpawnResult> return value. new TestedSpawnStrategy(spawnRunner).exec(SIMPLE_SPAWN, actionExecutionContext); fail("Expected SpawnExecException"); } catch (SpawnExecException e) { @@ -109,8 +109,8 @@ public class AbstractSpawnStrategyTest { when(actionExecutionContext.getContext(eq(SpawnCache.class))).thenReturn(cache); when(actionExecutionContext.getExecRoot()).thenReturn(fs.getPath("/execroot")); - Set<SpawnResult> spawnResults = new TestedSpawnStrategy(spawnRunner) - .exec(SIMPLE_SPAWN, actionExecutionContext); + List<SpawnResult> spawnResults = + new TestedSpawnStrategy(spawnRunner).exec(SIMPLE_SPAWN, actionExecutionContext); assertThat(spawnResults).containsExactly(spawnResult); verify(spawnRunner, never()).exec(any(Spawn.class), any(SpawnExecutionPolicy.class)); } @@ -130,8 +130,8 @@ public class AbstractSpawnStrategyTest { when(spawnRunner.exec(any(Spawn.class), any(SpawnExecutionPolicy.class))) .thenReturn(spawnResult); - Set<SpawnResult> spawnResults = new TestedSpawnStrategy(spawnRunner) - .exec(SIMPLE_SPAWN, actionExecutionContext); + List<SpawnResult> spawnResults = + new TestedSpawnStrategy(spawnRunner).exec(SIMPLE_SPAWN, actionExecutionContext); assertThat(spawnResults).containsExactly(spawnResult); @@ -155,7 +155,7 @@ public class AbstractSpawnStrategyTest { when(spawnRunner.exec(any(Spawn.class), any(SpawnExecutionPolicy.class))).thenReturn(result); try { - // Ignoring the Set<SpawnResult> return value. + // Ignoring the List<SpawnResult> return value. new TestedSpawnStrategy(spawnRunner).exec(SIMPLE_SPAWN, actionExecutionContext); fail("Expected SpawnExecException"); } catch (SpawnExecException e) { diff --git a/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java b/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java index fd20daa223..04ef2f1f20 100644 --- a/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java +++ b/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java @@ -20,8 +20,8 @@ import static org.junit.Assert.fail; import static org.mockito.Matchers.any; import static org.mockito.Mockito.when; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.Artifact; @@ -44,7 +44,6 @@ import java.io.IOException; import java.io.OutputStream; import java.time.Duration; import java.util.List; -import java.util.Set; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -124,12 +123,12 @@ public final class StandaloneTestStrategyTest extends BuildViewTestCase { .setStatus(Status.SUCCESS) .setWallTime(Duration.ofMillis(10)) .build(); - when(spawnActionContext.exec(any(), any())).thenReturn(ImmutableSet.of(expectedSpawnResult)); + when(spawnActionContext.exec(any(), any())).thenReturn(ImmutableList.of(expectedSpawnResult)); when(actionExecutionContext.getSpawnActionContext(any())).thenReturn(spawnActionContext); // actual StandaloneTestStrategy execution - Set<SpawnResult> spawnResults = + List<SpawnResult> spawnResults = standaloneTestStrategy.exec(testRunnerAction, actionExecutionContext); // check that the rigged SpawnResult was returned @@ -206,7 +205,7 @@ public final class StandaloneTestStrategyTest extends BuildViewTestCase { when(actionExecutionContext.getSpawnActionContext(any())).thenReturn(spawnActionContext); // actual StandaloneTestStrategy execution - Set<SpawnResult> spawnResults = + List<SpawnResult> spawnResults = standaloneTestStrategy.exec(testRunnerAction, actionExecutionContext); // check that the rigged SpawnResult was returned @@ -277,11 +276,11 @@ public final class StandaloneTestStrategyTest extends BuildViewTestCase { when(actionExecutionContext.getFileOutErr()).thenReturn(outErr); SpawnResult expectedSpawnResult = new SpawnResult.Builder().setStatus(Status.SUCCESS).build(); - when(spawnActionContext.exec(any(), any())).thenReturn(ImmutableSet.of(expectedSpawnResult)); + when(spawnActionContext.exec(any(), any())).thenReturn(ImmutableList.of(expectedSpawnResult)); when(actionExecutionContext.getSpawnActionContext(any())).thenReturn(spawnActionContext); // actual StandaloneTestStrategy execution - Set<SpawnResult> spawnResults = + List<SpawnResult> spawnResults = standaloneTestStrategy.exec(testRunnerAction, actionExecutionContext); // check that the rigged SpawnResult was returned diff --git a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java index 10b0f35bef..342680b700 100644 --- a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java +++ b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java @@ -60,7 +60,7 @@ import com.google.devtools.common.options.OptionsParser; import java.io.IOException; import java.util.Arrays; import java.util.Collection; -import java.util.Set; +import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -171,7 +171,7 @@ public class StandaloneSpawnStrategyTest { assertThat(err()).isEmpty(); } - private Set<SpawnResult> run(Spawn spawn) throws Exception { + private List<SpawnResult> run(Spawn spawn) throws Exception { return executor.getSpawnActionContext(spawn.getMnemonic()).exec(spawn, createContext()); } |