Simplify Executor.getSpawnActionContext() by removing mnemonic: spawn is enough.
RELNOTES: None
PiperOrigin-RevId: 190544948
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionContext.java b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionContext.java
index a0ea5698..a75ee38 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionContext.java
@@ -183,9 +183,9 @@
return executor.getContext(type);
}
- /** Returns the action context implementation for spawn actions with a given mnemonic. */
- public SpawnActionContext getSpawnActionContext(String mnemonic, Spawn spawn) {
- return executor.getSpawnActionContext(mnemonic, spawn);
+ /** Returns the action context implementation for a given spawn action. */
+ public SpawnActionContext getSpawnActionContext(Spawn spawn) {
+ return executor.getSpawnActionContext(spawn);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Executor.java b/src/main/java/com/google/devtools/build/lib/actions/Executor.java
index bb1f6b4..3dc0e5d 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Executor.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Executor.java
@@ -87,6 +87,6 @@
*/
<T extends ActionContext> T getContext(Class<? extends T> type);
- /** Returns the action context implementation for spawn actions with a given mnemonic. */
- SpawnActionContext getSpawnActionContext(String mnemonic, Spawn spawn);
+ /** Returns the action context implementation for the given spawn. */
+ SpawnActionContext getSpawnActionContext(Spawn spawn);
}
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 ec46996..6567c93 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
@@ -235,7 +235,7 @@
private SpawnActionContext getContext(
Spawn spawn, ActionExecutionContext actionExecutionContext) {
- return actionExecutionContext.getSpawnActionContext(getMnemonic(), spawn);
+ return actionExecutionContext.getSpawnActionContext(spawn);
}
/**
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 fc068bc..3d352c4 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
@@ -451,7 +451,7 @@
protected SpawnActionContext getContext(
ActionExecutionContext actionExecutionContext, Spawn spawn) {
- return actionExecutionContext.getSpawnActionContext(getMnemonic(), spawn);
+ return actionExecutionContext.getSpawnActionContext(spawn);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/exec/BlazeExecutor.java b/src/main/java/com/google/devtools/build/lib/exec/BlazeExecutor.java
index fe05762..7d41a15 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/BlazeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/BlazeExecutor.java
@@ -190,8 +190,8 @@
* set, then it returns the default strategy for spawn actions.
*/
@Override
- public SpawnActionContext getSpawnActionContext(String mnemonic, Spawn spawn) {
- return spawnActionContextMaps.getSpawnActionContext(mnemonic, spawn, reporter);
+ public SpawnActionContext getSpawnActionContext(Spawn spawn) {
+ return spawnActionContextMaps.getSpawnActionContext(spawn, reporter);
}
/** Returns true iff the --verbose_failures option was enabled. */
diff --git a/src/main/java/com/google/devtools/build/lib/exec/SpawnActionContextMaps.java b/src/main/java/com/google/devtools/build/lib/exec/SpawnActionContextMaps.java
index fd017d0f..fc179ba 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/SpawnActionContextMaps.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/SpawnActionContextMaps.java
@@ -16,6 +16,7 @@
import com.google.auto.value.AutoValue;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Joiner;
+import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.ImmutableList;
@@ -81,14 +82,14 @@
}
/**
- * Returns the appropriate {@link ActionContext} to execute an action with the given {@code
- * mnemonic} and {@link Spawn}.
+ * Returns the appropriate {@link ActionContext} to execute the given {@link Spawn} with.
*
* <p>If the reason for selecting the context is worth mentioning to the user, logs a message
* using the given {@link Reporter}.
*/
- public SpawnActionContext getSpawnActionContext(String mnemonic, Spawn spawn, Reporter reporter) {
- if (!spawnStrategyRegexList.isEmpty() && spawn != null && spawn.getResourceOwner() != null) {
+ public SpawnActionContext getSpawnActionContext(Spawn spawn, Reporter reporter) {
+ Preconditions.checkNotNull(spawn);
+ if (!spawnStrategyRegexList.isEmpty() && spawn.getResourceOwner() != null) {
String description = spawn.getResourceOwner().getProgressMessage();
if (description != null) {
for (RegexFilterSpawnActionContext entry : spawnStrategyRegexList) {
@@ -100,7 +101,7 @@
}
}
}
- SpawnActionContext context = spawnStrategyMnemonicMap.get(mnemonic);
+ SpawnActionContext context = spawnStrategyMnemonicMap.get(spawn.getMnemonic());
if (context != null) {
return context;
}
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 91ff96f..c3828d3 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
@@ -347,8 +347,7 @@
TestResultData.Builder builder = TestResultData.newBuilder();
long startTime = actionExecutionContext.getClock().currentTimeMillis();
- SpawnActionContext spawnActionContext =
- actionExecutionContext.getSpawnActionContext(action.getMnemonic(), spawn);
+ SpawnActionContext spawnActionContext = actionExecutionContext.getSpawnActionContext(spawn);
List<SpawnResult> spawnResults = ImmutableList.of();
try {
try {
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 612b926..5f231e4 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
@@ -124,7 +124,7 @@
shellEnvironment,
inputManifestArtifact);
return actionExecutionContext
- .getSpawnActionContext(owner.getMnemonic(), spawn)
+ .getSpawnActionContext(spawn)
.exec(spawn, actionExecutionContext);
} else {
// Pretend we created the runfiles tree by copying the manifest
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
index 2b214ee..8bd167f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
@@ -317,7 +317,7 @@
estimateResourceConsumptionLocal());
return ActionResult.create(
actionExecutionContext
- .getSpawnActionContext(getMnemonic(), spawn)
+ .getSpawnActionContext(spawn)
.exec(spawn, actionExecutionContext));
} catch (ExecException e) {
throw e.toActionExecutionException(
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 3f40a10..5d29cb7 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
@@ -62,9 +62,7 @@
action.estimateResourceConsumptionLocal());
List<SpawnResult> spawnResults =
- actionExecutionContext
- .getSpawnActionContext(action.getMnemonic(), spawn)
- .exec(spawn, actionExecutionContext);
+ actionExecutionContext.getSpawnActionContext(spawn).exec(spawn, actionExecutionContext);
return CppCompileActionResult.builder().setSpawnResults(spawnResults).build();
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/actions/util/DummyExecutor.java b/src/test/java/com/google/devtools/build/lib/actions/util/DummyExecutor.java
index d9d78cd..b4f8786 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/util/DummyExecutor.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/util/DummyExecutor.java
@@ -84,7 +84,7 @@
}
@Override
- public SpawnActionContext getSpawnActionContext(String mnemonic, Spawn spawn) {
+ public SpawnActionContext getSpawnActionContext(Spawn spawn) {
throw new UnsupportedOperationException();
}
diff --git a/src/test/java/com/google/devtools/build/lib/exec/SpawnActionContextMapsTest.java b/src/test/java/com/google/devtools/build/lib/exec/SpawnActionContextMapsTest.java
index 8e9f610..38ee97c 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/SpawnActionContextMapsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/SpawnActionContextMapsTest.java
@@ -71,7 +71,7 @@
public void duplicateMnemonics_lastOneWins() throws Exception {
builder.strategyByMnemonicMap().put("Spawn1", "ac1").put("Spawn1", "ac2");
SpawnActionContextMaps maps = builder.build(PROVIDERS, "actest");
- SpawnActionContext result = maps.getSpawnActionContext("Spawn1", null, reporter);
+ SpawnActionContext result = maps.getSpawnActionContext(mockSpawn("Spawn1", null), reporter);
assertThat(result).isInstanceOf(AC2.class);
}
@@ -82,7 +82,7 @@
SpawnActionContextMaps maps = builder.build(PROVIDERS, "actest");
SpawnActionContext result =
- maps.getSpawnActionContext("", mockSpawn("Doing something with foo/bar/baz"), reporter);
+ maps.getSpawnActionContext(mockSpawn(null, "Doing something with foo/bar/baz"), reporter);
assertThat(result).isInstanceOf(AC1.class);
}
@@ -95,7 +95,7 @@
SpawnActionContext result =
maps.getSpawnActionContext(
- "Spawn1", mockSpawn("Doing something with foo/bar/baz"), reporter);
+ mockSpawn("Spawn1", "Doing something with foo/bar/baz"), reporter);
assertThat(result).isInstanceOf(AC2.class);
}
@@ -107,11 +107,12 @@
builder.strategyByContextMap().put(AC1.class, "");
}
- private Spawn mockSpawn(String message) {
+ private Spawn mockSpawn(String mnemonic, String message) {
Spawn mockSpawn = Mockito.mock(Spawn.class);
ActionExecutionMetadata mockOwner = Mockito.mock(ActionExecutionMetadata.class);
when(mockOwner.getProgressMessage()).thenReturn(message);
when(mockSpawn.getResourceOwner()).thenReturn(mockOwner);
+ when(mockSpawn.getMnemonic()).thenReturn(mnemonic);
return mockSpawn;
}
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 9ebe4aa..57ad243 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
@@ -128,7 +128,7 @@
.build();
when(spawnActionContext.exec(any(), any())).thenReturn(ImmutableList.of(expectedSpawnResult));
- when(actionExecutionContext.getSpawnActionContext(any(), any())).thenReturn(spawnActionContext);
+ when(actionExecutionContext.getSpawnActionContext(any())).thenReturn(spawnActionContext);
// actual StandaloneTestStrategy execution
List<SpawnResult> spawnResults =
@@ -208,7 +208,7 @@
expectedSpawnResult,
/*forciblyRunRemotely=*/ false,
/*catastrophe=*/ false));
- when(actionExecutionContext.getSpawnActionContext(any(), any())).thenReturn(spawnActionContext);
+ when(actionExecutionContext.getSpawnActionContext(any())).thenReturn(spawnActionContext);
// actual StandaloneTestStrategy execution
List<SpawnResult> spawnResults =
@@ -285,7 +285,7 @@
SpawnResult expectedSpawnResult = new SpawnResult.Builder().setStatus(Status.SUCCESS).build();
when(spawnActionContext.exec(any(), any())).thenReturn(ImmutableList.of(expectedSpawnResult));
- when(actionExecutionContext.getSpawnActionContext(any(), any())).thenReturn(spawnActionContext);
+ when(actionExecutionContext.getSpawnActionContext(any())).thenReturn(spawnActionContext);
// actual StandaloneTestStrategy execution
List<SpawnResult> spawnResults =
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 0e93ff2..6a46b88 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
@@ -171,14 +171,14 @@
@Test
public void testBinTrueExecutesFine() throws Exception {
Spawn spawn = createSpawn(getTrueCommand());
- executor.getSpawnActionContext(spawn.getMnemonic(), spawn).exec(spawn, createContext());
+ executor.getSpawnActionContext(spawn).exec(spawn, createContext());
assertThat(out()).isEmpty();
assertThat(err()).isEmpty();
}
private List<SpawnResult> run(Spawn spawn) throws Exception {
- return executor.getSpawnActionContext(spawn.getMnemonic(), spawn).exec(spawn, createContext());
+ return executor.getSpawnActionContext(spawn).exec(spawn, createContext());
}
private ActionExecutionContext createContext() {