diff options
Diffstat (limited to 'src/test')
45 files changed, 391 insertions, 112 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD index b5305a2b93..48f7f27930 100644 --- a/src/test/java/com/google/devtools/build/lib/BUILD +++ b/src/test/java/com/google/devtools/build/lib/BUILD @@ -184,6 +184,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib/clock", "//src/main/java/com/google/devtools/build/lib/collect", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", + "//src/main/java/com/google/devtools/build/lib/collect/nestedset:fingerprint_cache", "//src/main/java/com/google/devtools/build/lib/collect/nestedset:serialization", "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/shell", @@ -705,6 +706,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib:build-base", "//src/main/java/com/google/devtools/build/lib:io", "//src/main/java/com/google/devtools/build/lib:packages", + "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/vfs/inmemoryfs", "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", diff --git a/src/test/java/com/google/devtools/build/lib/actions/ActionCacheCheckerTest.java b/src/test/java/com/google/devtools/build/lib/actions/ActionCacheCheckerTest.java index 4da84f8923..c6de33475e 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ActionCacheCheckerTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ActionCacheCheckerTest.java @@ -62,7 +62,9 @@ public class ActionCacheCheckerTest { ArtifactResolver artifactResolver = new FakeArtifactResolverBase(); cache = new CorruptibleCompactPersistentActionCache(scratch.resolve("/cache/test.dat"), clock); - cacheChecker = new ActionCacheChecker(cache, artifactResolver, Predicates.alwaysTrue(), null); + cacheChecker = + new ActionCacheChecker( + cache, artifactResolver, new ActionKeyContext(), Predicates.alwaysTrue(), null); } @Before @@ -167,19 +169,21 @@ public class ActionCacheCheckerTest { @Test public void testDifferentActionKey() throws Exception { - Action action = new NullAction() { - @Override - protected String computeKey() { - return "key1"; - } - }; + Action action = + new NullAction() { + @Override + protected String computeKey(ActionKeyContext actionKeyContext) { + return "key1"; + } + }; runAction(action); - action = new NullAction() { - @Override - protected String computeKey() { - return "key2"; - } - }; + action = + new NullAction() { + @Override + protected String computeKey(ActionKeyContext actionKeyContext) { + return "key2"; + } + }; runAction(action); assertStatistics( diff --git a/src/test/java/com/google/devtools/build/lib/actions/ActionLookupValueTest.java b/src/test/java/com/google/devtools/build/lib/actions/ActionLookupValueTest.java index 10126b1d5f..3bcf87b68b 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ActionLookupValueTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ActionLookupValueTest.java @@ -33,6 +33,7 @@ import org.junit.runners.JUnit4; public class ActionLookupValueTest { private FileSystem fs; + private final ActionKeyContext actionKeyContext = new ActionKeyContext(); @Before public void setUp() { @@ -45,7 +46,7 @@ public class ActionLookupValueTest { Artifact artifact = mock(Artifact.class); when(action.getOutputs()).thenReturn(ImmutableSet.of(artifact)); when(action.canRemoveAfterExecution()).thenReturn(true); - ActionLookupValue underTest = new ActionLookupValue(action, false); + ActionLookupValue underTest = new ActionLookupValue(actionKeyContext, action, false); assertThat(underTest.getGeneratingActionIndex(artifact)).isEqualTo(0); assertThat(underTest.getAction(0)).isSameAs(action); underTest.actionEvaluated(0, action); @@ -65,7 +66,7 @@ public class ActionLookupValueTest { when(persistentAction.canRemoveAfterExecution()).thenReturn(false); ActionLookupValue underTest = new ActionLookupValue( - ImmutableList.<ActionAnalysisMetadata>of(normalAction, persistentAction), true); + actionKeyContext, ImmutableList.of(normalAction, persistentAction), true); assertThat(underTest.getGeneratingActionIndex(normalArtifact)).isEqualTo(0); assertThat(underTest.getAction(0)).isSameAs(normalAction); assertThat(underTest.getGeneratingActionIndex(persistentOutput)).isEqualTo(1); diff --git a/src/test/java/com/google/devtools/build/lib/actions/ArtifactFactoryTest.java b/src/test/java/com/google/devtools/build/lib/actions/ArtifactFactoryTest.java index 1132cce8be..a3b6f6c1e2 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ArtifactFactoryTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ArtifactFactoryTest.java @@ -68,6 +68,7 @@ public class ArtifactFactoryTest { private PathFragment alienRelative; private ArtifactFactory artifactFactory; + private final ActionKeyContext actionKeyContext = new ActionKeyContext(); @Before public final void createFiles() throws Exception { @@ -194,7 +195,7 @@ public class ArtifactFactoryTest { public void testSetGeneratingActionIdempotenceNewActionGraph() throws Exception { Artifact a = artifactFactory.getDerivedArtifact(fooRelative, outRoot, NULL_ARTIFACT_OWNER); Artifact b = artifactFactory.getDerivedArtifact(barRelative, outRoot, NULL_ARTIFACT_OWNER); - MutableActionGraph actionGraph = new MapBasedActionGraph(); + MutableActionGraph actionGraph = new MapBasedActionGraph(actionKeyContext); Action originalAction = new ActionsTestUtil.NullAction(NULL_ACTION_OWNER, a); actionGraph.registerAction(originalAction); diff --git a/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java b/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java index 296703eef6..7c92958d40 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java @@ -41,6 +41,7 @@ public class ArtifactTest { private Scratch scratch; private Path execDir; private Root rootDir; + private final ActionKeyContext actionKeyContext = new ActionKeyContext(); @Before public final void setRootDir() throws Exception { @@ -169,7 +170,7 @@ public class ArtifactTest { @Test public void testAddExecPaths() throws Exception { List<String> paths = new ArrayList<>(); - MutableActionGraph actionGraph = new MapBasedActionGraph(); + MutableActionGraph actionGraph = new MapBasedActionGraph(actionKeyContext); Artifact.addExecPaths(getFooBarArtifacts(actionGraph, false), paths); assertThat(paths).containsExactly("bar1.h", "bar2.h"); } @@ -177,7 +178,7 @@ public class ArtifactTest { @Test public void testAddExpandedExecPathStrings() throws Exception { List<String> paths = new ArrayList<>(); - MutableActionGraph actionGraph = new MapBasedActionGraph(); + MutableActionGraph actionGraph = new MapBasedActionGraph(actionKeyContext); Artifact.addExpandedExecPathStrings(getFooBarArtifacts(actionGraph, true), paths, ActionInputHelper.actionGraphArtifactExpander(actionGraph)); assertThat(paths).containsExactly("bar1.h", "bar1.h", "bar2.h", "bar3.h"); @@ -186,7 +187,7 @@ public class ArtifactTest { @Test public void testAddExpandedExecPaths() throws Exception { List<PathFragment> paths = new ArrayList<>(); - MutableActionGraph actionGraph = new MapBasedActionGraph(); + MutableActionGraph actionGraph = new MapBasedActionGraph(actionKeyContext); Artifact.addExpandedExecPaths(getFooBarArtifacts(actionGraph, true), paths, ActionInputHelper.actionGraphArtifactExpander(actionGraph)); assertThat(paths).containsExactly( @@ -199,7 +200,7 @@ public class ArtifactTest { @Test public void testAddExpandedArtifacts() throws Exception { List<Artifact> expanded = new ArrayList<>(); - MutableActionGraph actionGraph = new MapBasedActionGraph(); + MutableActionGraph actionGraph = new MapBasedActionGraph(actionKeyContext); List<Artifact> original = getFooBarArtifacts(actionGraph, true); Artifact.addExpandedArtifacts(original, expanded, ActionInputHelper.actionGraphArtifactExpander(actionGraph)); @@ -219,7 +220,7 @@ public class ArtifactTest { @Test public void testAddExecPathsNewActionGraph() throws Exception { List<String> paths = new ArrayList<>(); - MutableActionGraph actionGraph = new MapBasedActionGraph(); + MutableActionGraph actionGraph = new MapBasedActionGraph(actionKeyContext); Artifact.addExecPaths(getFooBarArtifacts(actionGraph, false), paths); assertThat(paths).containsExactly("bar1.h", "bar2.h"); } @@ -227,7 +228,7 @@ public class ArtifactTest { @Test public void testAddExpandedExecPathStringsNewActionGraph() throws Exception { List<String> paths = new ArrayList<>(); - MutableActionGraph actionGraph = new MapBasedActionGraph(); + MutableActionGraph actionGraph = new MapBasedActionGraph(actionKeyContext); Artifact.addExpandedExecPathStrings(getFooBarArtifacts(actionGraph, true), paths, ActionInputHelper.actionGraphArtifactExpander(actionGraph)); assertThat(paths).containsExactly("bar1.h", "bar1.h", "bar2.h", "bar3.h"); @@ -236,7 +237,7 @@ public class ArtifactTest { @Test public void testAddExpandedExecPathsNewActionGraph() throws Exception { List<PathFragment> paths = new ArrayList<>(); - MutableActionGraph actionGraph = new MapBasedActionGraph(); + MutableActionGraph actionGraph = new MapBasedActionGraph(actionKeyContext); Artifact.addExpandedExecPaths(getFooBarArtifacts(actionGraph, true), paths, ActionInputHelper.actionGraphArtifactExpander(actionGraph)); assertThat(paths).containsExactly( @@ -250,7 +251,7 @@ public class ArtifactTest { @Test public void testAddExpandedArtifactsNewActionGraph() throws Exception { List<Artifact> expanded = new ArrayList<>(); - MutableActionGraph actionGraph = new MapBasedActionGraph(); + MutableActionGraph actionGraph = new MapBasedActionGraph(actionKeyContext); List<Artifact> original = getFooBarArtifacts(actionGraph, true); Artifact.addExpandedArtifacts(original, expanded, ActionInputHelper.actionGraphArtifactExpander(actionGraph)); diff --git a/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java index 7b73cf302f..f6f9a5233e 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java @@ -39,6 +39,7 @@ public class ExecutableSymlinkActionTest { private Root outputRoot; TestFileOutErr outErr; private Executor executor; + private final ActionKeyContext actionKeyContext = new ActionKeyContext(); @Before public final void createExecutor() throws Exception { @@ -55,7 +56,11 @@ public class ExecutableSymlinkActionTest { executor, new SingleBuildFileCache(execRoot.getPathString(), execRoot.getFileSystem()), ActionInputPrefetcher.NONE, - null, outErr, ImmutableMap.<String, String>of(), null); + actionKeyContext, + null, + outErr, + ImmutableMap.<String, String>of(), + null); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/actions/FailActionTest.java b/src/test/java/com/google/devtools/build/lib/actions/FailActionTest.java index f3395198c4..5b39c35909 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/FailActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/FailActionTest.java @@ -35,8 +35,9 @@ public class FailActionTest { private Artifact anOutput; private Collection<Artifact> outputs; private FailAction failAction; + private final ActionKeyContext actionKeyContext = new ActionKeyContext(); - protected MutableActionGraph actionGraph = new MapBasedActionGraph(); + protected MutableActionGraph actionGraph = new MapBasedActionGraph(actionKeyContext); @Before public final void setUp() throws Exception { diff --git a/src/test/java/com/google/devtools/build/lib/actions/MapBasedActionGraphTest.java b/src/test/java/com/google/devtools/build/lib/actions/MapBasedActionGraphTest.java index b3c8cb25aa..9d65341635 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/MapBasedActionGraphTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/MapBasedActionGraphTest.java @@ -37,9 +37,11 @@ import org.junit.runners.JUnit4; */ @RunWith(JUnit4.class) public class MapBasedActionGraphTest { + private final ActionKeyContext actionKeyContext = new ActionKeyContext(); + @Test public void testSmoke() throws Exception { - MutableActionGraph actionGraph = new MapBasedActionGraph(); + MutableActionGraph actionGraph = new MapBasedActionGraph(actionKeyContext); FileSystem fileSystem = new InMemoryFileSystem(BlazeClock.instance()); Path path = fileSystem.getPath("/root/foo"); Artifact output = new Artifact(path, Root.asDerivedRoot(path)); @@ -58,7 +60,7 @@ public class MapBasedActionGraphTest { @Test public void testNoActionConflictWhenUnregisteringSharedAction() throws Exception { - MutableActionGraph actionGraph = new MapBasedActionGraph(); + MutableActionGraph actionGraph = new MapBasedActionGraph(actionKeyContext); FileSystem fileSystem = new InMemoryFileSystem(BlazeClock.instance()); Path path = fileSystem.getPath("/root/foo"); Artifact output = new Artifact(path, Root.asDerivedRoot(path)); @@ -72,7 +74,7 @@ public class MapBasedActionGraphTest { } private static class ActionRegisterer extends AbstractQueueVisitor { - private final MutableActionGraph graph = new MapBasedActionGraph(); + private final MutableActionGraph graph = new MapBasedActionGraph(new ActionKeyContext()); private final Artifact output; // Just to occasionally add actions that were already present. private final Set<Action> allActions = Sets.newConcurrentHashSet(); diff --git a/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java b/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java index 2357dc28c3..947b5572a6 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java @@ -549,7 +549,7 @@ public class ResourceManagerTest { } @Override - public String getKey() { + public String getKey(ActionKeyContext actionKeyContext) { throw new IllegalStateException(); } diff --git a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java index 7b20c50e26..f344242075 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java +++ b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java @@ -34,6 +34,7 @@ import com.google.devtools.build.lib.actions.ActionGraph; import com.google.devtools.build.lib.actions.ActionInput; import com.google.devtools.build.lib.actions.ActionInputHelper; import com.google.devtools.build.lib.actions.ActionInputPrefetcher; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.ActionResult; import com.google.devtools.build.lib.actions.Artifact; @@ -103,38 +104,59 @@ public final class ActionsTestUtil { private static final Label NULL_LABEL = Label.parseAbsoluteUnchecked("//null/action:owner"); - public static ActionExecutionContext createContext(Executor executor, FileOutErr fileOutErr, - Path execRoot, MetadataHandler metadataHandler, @Nullable ActionGraph actionGraph) { + public static ActionExecutionContext createContext( + Executor executor, + ActionKeyContext actionKeyContext, + FileOutErr fileOutErr, + Path execRoot, + MetadataHandler metadataHandler, + @Nullable ActionGraph actionGraph) { return createContext( - executor, fileOutErr, execRoot, metadataHandler, ImmutableMap.<String, String>of(), + executor, + actionKeyContext, + fileOutErr, + execRoot, + metadataHandler, + ImmutableMap.of(), actionGraph); } - public static ActionExecutionContext createContext(Executor executor, FileOutErr fileOutErr, - Path execRoot, MetadataHandler metadataHandler, Map<String, String> clientEnv, + public static ActionExecutionContext createContext( + Executor executor, + ActionKeyContext actionKeyContext, + FileOutErr fileOutErr, + Path execRoot, + MetadataHandler metadataHandler, + Map<String, String> clientEnv, @Nullable ActionGraph actionGraph) { return new ActionExecutionContext( executor, new SingleBuildFileCache(execRoot.getPathString(), execRoot.getFileSystem()), ActionInputPrefetcher.NONE, + actionKeyContext, metadataHandler, fileOutErr, - ImmutableMap.<String, String>copyOf(clientEnv), + ImmutableMap.copyOf(clientEnv), actionGraph == null ? createDummyArtifactExpander() : ActionInputHelper.actionGraphArtifactExpander(actionGraph)); } - public static ActionExecutionContext createContextForInputDiscovery(Executor executor, - FileOutErr fileOutErr, Path execRoot, MetadataHandler metadataHandler, + public static ActionExecutionContext createContextForInputDiscovery( + Executor executor, + ActionKeyContext actionKeyContext, + FileOutErr fileOutErr, + Path execRoot, + MetadataHandler metadataHandler, BuildDriver buildDriver) { return ActionExecutionContext.forInputDiscovery( executor, new SingleBuildFileCache(execRoot.getPathString(), execRoot.getFileSystem()), ActionInputPrefetcher.NONE, + actionKeyContext, metadataHandler, fileOutErr, - ImmutableMap.<String, String>of(), + ImmutableMap.of(), new BlockingSkyFunctionEnvironment( buildDriver, executor == null ? null : executor.getEventHandler())); } @@ -142,8 +164,14 @@ public final class ActionsTestUtil { public static ActionExecutionContext createContext(EventHandler eventHandler) { DummyExecutor dummyExecutor = new DummyExecutor(eventHandler); return new ActionExecutionContext( - dummyExecutor, null, ActionInputPrefetcher.NONE, null, null, - ImmutableMap.<String, String>of(), createDummyArtifactExpander()); + dummyExecutor, + null, + ActionInputPrefetcher.NONE, + new ActionKeyContext(), + null, + null, + ImmutableMap.of(), + createDummyArtifactExpander()); } private static ArtifactExpander createDummyArtifactExpander() { @@ -271,7 +299,8 @@ public final class ActionsTestUtil { return ActionResult.EMPTY; } - @Override protected String computeKey() { + @Override + protected String computeKey(ActionKeyContext actionKeyContext) { return "action"; } diff --git a/src/test/java/com/google/devtools/build/lib/actions/util/TestAction.java b/src/test/java/com/google/devtools/build/lib/actions/util/TestAction.java index d8b23f1d95..82867ba905 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/util/TestAction.java +++ b/src/test/java/com/google/devtools/build/lib/actions/util/TestAction.java @@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.AbstractAction; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionExecutionException; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionResult; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.util.Fingerprint; @@ -126,7 +127,7 @@ public class TestAction extends AbstractAction { } @Override - protected String computeKey() { + protected String computeKey(ActionKeyContext actionKeyContext) { Fingerprint f = new Fingerprint(); f.addPaths(Artifact.asSortedPathFragments(getOutputs())); f.addPaths(Artifact.asSortedPathFragments(getMandatoryInputs())); diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java index b0a5585470..50307b0f28 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java @@ -595,7 +595,7 @@ public class BuildViewTest extends BuildViewTestBase { " outs=['a.out'])"); update("//pkg:a.out"); assertWithMessage("Actions should not be compatible") - .that(Actions.canBeShared(action, getGeneratingAction(outputArtifact))) + .that(Actions.canBeShared(actionKeyContext, action, getGeneratingAction(outputArtifact))) .isFalse(); } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionTestCase.java index be8da53b25..b5be2e40e5 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionTestCase.java @@ -55,8 +55,16 @@ public abstract class FileWriteActionTestCase extends BuildViewTestCase { @Before public final void createExecutorAndContext() throws Exception { executor = new TestExecutorBuilder(fileSystem, directories, binTools).build(); - context = new ActionExecutionContext(executor, null, ActionInputPrefetcher.NONE, null, - new FileOutErr(), ImmutableMap.<String, String>of(), null); + context = + new ActionExecutionContext( + executor, + null, + ActionInputPrefetcher.NONE, + actionKeyContext, + null, + new FileOutErr(), + ImmutableMap.<String, String>of(), + null); } protected abstract Action createAction( @@ -109,6 +117,7 @@ public abstract class FileWriteActionTestCase extends BuildViewTestCase { attributesToFlip.contains(KeyAttributes.DATA) ? "0" : "1", attributesToFlip.contains(KeyAttributes.MAKE_EXECUTABLE)); } - }); + }, + actionKeyContext); } } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java index 8cae4334a0..63397f9a7b 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java @@ -166,8 +166,15 @@ public class ParamFileWriteActionTest extends BuildViewTestCase { }; Executor executor = new TestExecutorBuilder(fileSystem, directories, binTools).build(); - return new ActionExecutionContext(executor, null, ActionInputPrefetcher.NONE, null, - new FileOutErr(), ImmutableMap.<String, String>of(), artifactExpander); + return new ActionExecutionContext( + executor, + null, + ActionInputPrefetcher.NONE, + actionKeyContext, + null, + new FileOutErr(), + ImmutableMap.<String, String>of(), + artifactExpander); } private enum KeyAttributes { @@ -198,6 +205,7 @@ public class ParamFileWriteActionTest extends BuildViewTestCase { commandLine, parameterFileType, charset); - }); + }, + actionKeyContext); } } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactActionTest.java index 7a9c0356aa..5465e02376 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactActionTest.java @@ -293,7 +293,8 @@ public class PopulateTreeArtifactActionTest extends BuildViewTestCase { treeArtifactToPopulate, zipper); } - }); + }, + actionKeyContext); } private PopulateTreeArtifactAction createPopulateTreeArtifactAction() throws Exception { @@ -328,6 +329,7 @@ public class PopulateTreeArtifactActionTest extends BuildViewTestCase { executor, null, ActionInputPrefetcher.NONE, + actionKeyContext, new TestMetadataHandler(storingExpandedTreeFileArtifacts), null, ImmutableMap.<String, String>of(), diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java index 0e5e33ddee..b40c0d667c 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java @@ -413,7 +413,7 @@ public class SpawnActionTest extends BuildViewTestCase { @Test public void testExtraActionInfo() throws Exception { SpawnAction action = createCopyFromWelcomeToDestination(ImmutableMap.<String, String>of()); - ExtraActionInfo info = action.getExtraActionInfo().build(); + ExtraActionInfo info = action.getExtraActionInfo(actionKeyContext).build(); assertThat(info.getMnemonic()).isEqualTo("Dummy"); SpawnInfo spawnInfo = info.getExtension(SpawnInfo.spawnInfo); @@ -450,8 +450,11 @@ public class SpawnActionTest extends BuildViewTestCase { "NONSENSE VARIABLE", "value" ); - SpawnInfo spawnInfo = createCopyFromWelcomeToDestination(env).getExtraActionInfo().build() - .getExtension(SpawnInfo.spawnInfo); + SpawnInfo spawnInfo = + createCopyFromWelcomeToDestination(env) + .getExtraActionInfo(actionKeyContext) + .build() + .getExtension(SpawnInfo.spawnInfo); assertThat(env).hasSize(spawnInfo.getVariableCount()); for (EnvironmentVariable variable : spawnInfo.getVariableList()) { assertThat(env).containsEntry(variable.getName(), variable.getValue()); @@ -534,7 +537,8 @@ public class SpawnActionTest extends BuildViewTestCase { collectingAnalysisEnvironment.registerAction(actions); return actions[0]; } - }); + }, + actionKeyContext); } @Test @@ -587,7 +591,8 @@ public class SpawnActionTest extends BuildViewTestCase { new EventBus()); Artifact artifact = getOnlyElement(getFilesToBuild(getConfiguredTarget("//a:a"))); - ExtraActionInfo.Builder extraActionInfo = getGeneratingAction(artifact).getExtraActionInfo(); + ExtraActionInfo.Builder extraActionInfo = + getGeneratingAction(artifact).getExtraActionInfo(actionKeyContext); assertThat(extraActionInfo.getAspectName()).isEqualTo("//a:def.bzl%aspect1"); assertThat(extraActionInfo.getAspectParametersMap()) .containsExactly( diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkActionTest.java index 11146634f7..d29e5337a8 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkActionTest.java @@ -80,6 +80,7 @@ public class SymlinkActionTest extends BuildViewTestCase { executor, null, ActionInputPrefetcher.NONE, + actionKeyContext, null, null, ImmutableMap.<String, String>of(), diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java index 497ed2d6b5..2528e3b6af 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java @@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionInputPrefetcher; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.Root; @@ -58,6 +59,7 @@ public class TemplateExpansionActionTest extends FoundationTestCase { private List<Substitution> substitutions; private BlazeDirectories directories; private BinTools binTools; + private final ActionKeyContext actionKeyContext = new ActionKeyContext(); @Before public final void createDirectoriesAndTools() throws Exception { @@ -118,7 +120,7 @@ public class TemplateExpansionActionTest extends FoundationTestCase { TemplateExpansionAction b = new TemplateExpansionAction(NULL_ACTION_OWNER, outputArtifact2, Template.forString(TEMPLATE), ImmutableList.of(Substitution.of("%key%", "foo")), false); - assertThat(b.computeKey()).isEqualTo(a.computeKey()); + assertThat(b.computeKey(actionKeyContext)).isEqualTo(a.computeKey(actionKeyContext)); } @Test @@ -131,7 +133,7 @@ public class TemplateExpansionActionTest extends FoundationTestCase { TemplateExpansionAction b = new TemplateExpansionAction(NULL_ACTION_OWNER, outputArtifact2, Template.forString(TEMPLATE), ImmutableList.of(Substitution.of("%key%", "foo2")), false); - assertThat(a.computeKey().equals(b.computeKey())).isFalse(); + assertThat(a.computeKey(actionKeyContext).equals(b.computeKey(actionKeyContext))).isFalse(); } @Test @@ -144,7 +146,7 @@ public class TemplateExpansionActionTest extends FoundationTestCase { TemplateExpansionAction b = new TemplateExpansionAction(NULL_ACTION_OWNER, outputArtifact2, Template.forString(TEMPLATE), ImmutableList.of(Substitution.of("%key%", "foo")), true); - assertThat(a.computeKey().equals(b.computeKey())).isFalse(); + assertThat(a.computeKey(actionKeyContext).equals(b.computeKey(actionKeyContext))).isFalse(); } @Test @@ -157,7 +159,7 @@ public class TemplateExpansionActionTest extends FoundationTestCase { TemplateExpansionAction b = new TemplateExpansionAction(NULL_ACTION_OWNER, outputArtifact2, Template.forString(TEMPLATE + " "), ImmutableList.of(Substitution.of("%key%", "foo")), false); - assertThat(a.computeKey().equals(b.computeKey())).isFalse(); + assertThat(a.computeKey(actionKeyContext).equals(b.computeKey(actionKeyContext))).isFalse(); } private TemplateExpansionAction createWithArtifact() { @@ -171,8 +173,15 @@ public class TemplateExpansionActionTest extends FoundationTestCase { } private ActionExecutionContext createContext(Executor executor) { - return new ActionExecutionContext(executor, null, ActionInputPrefetcher.NONE, null, - new FileOutErr(), ImmutableMap.<String, String>of(), null); + return new ActionExecutionContext( + executor, + null, + ActionInputPrefetcher.NONE, + actionKeyContext, + null, + new FileOutErr(), + ImmutableMap.<String, String>of(), + null); } private void executeTemplateExpansion(String expected) throws Exception { diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/ActionTester.java b/src/test/java/com/google/devtools/build/lib/analysis/util/ActionTester.java index 7935505169..71877d1a0c 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/ActionTester.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/ActionTester.java @@ -20,6 +20,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import com.google.devtools.build.lib.actions.Action; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.Actions; import java.util.BitSet; import java.util.EnumSet; @@ -63,7 +64,10 @@ public class ActionTester { * different permutations the {@link ActionCombinationFactory} should generate. */ public static <E extends Enum<E>> void runTest( - Class<E> attributeClass, ActionCombinationFactory<E> factory) throws Exception { + Class<E> attributeClass, + ActionCombinationFactory<E> factory, + ActionKeyContext actionKeyContext) + throws Exception { int attributesCount = attributeClass.getEnumConstants().length; Preconditions.checkArgument( attributesCount <= 30, @@ -76,16 +80,21 @@ public class ActionTester { // Sanity check that the count is correct. assertThat( Actions.canBeShared( - actions[0], factory.generate(makeEnumSetInitializedTo(attributeClass, count)))) + actionKeyContext, + actions[0], + factory.generate(makeEnumSetInitializedTo(attributeClass, count)))) .isTrue(); for (int i = 0; i < actions.length; i++) { assertThat( Actions.canBeShared( - actions[i], factory.generate(makeEnumSetInitializedTo(attributeClass, i)))) + actionKeyContext, + actions[i], + factory.generate(makeEnumSetInitializedTo(attributeClass, i)))) .isTrue(); for (int j = i + 1; j < actions.length; j++) { - assertWithMessage(i + " and " + j).that(Actions.canBeShared(actions[i], actions[j])) + assertWithMessage(i + " and " + j) + .that(Actions.canBeShared(actionKeyContext, actions[i], actions[j])) .isFalse(); } } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java index 0262305067..5b81290312 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java @@ -22,6 +22,7 @@ import com.google.common.eventbus.EventBus; import com.google.devtools.build.lib.actions.Action; import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionGraph; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.BuildView; @@ -127,6 +128,7 @@ public abstract class AnalysisTestCase extends FoundationTestCase { protected PackageManager packageManager; private LoadingPhaseRunner loadingPhaseRunner; private BuildView buildView; + protected final ActionKeyContext actionKeyContext = new ActionKeyContext(); // Note that these configurations are virtual (they use only VFS) private BuildConfigurationCollection masterConfig; @@ -167,6 +169,7 @@ public abstract class AnalysisTestCase extends FoundationTestCase { pkgFactory, fileSystem, directories, + actionKeyContext, workspaceStatusActionFactory, buildInfoFactories, ImmutableList.of(), diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java index b36f9243bf..cb6048b783 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java @@ -23,6 +23,7 @@ import com.google.devtools.build.lib.actions.Action; import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionExecutionException; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.ActionResult; import com.google.devtools.build.lib.actions.Artifact; @@ -189,6 +190,11 @@ public final class AnalysisTestUtil { public ImmutableSet<Artifact> getOrphanArtifacts() { return original.getOrphanArtifacts(); } + + @Override + public ActionKeyContext getActionKeyContext() { + return original.getActionKeyContext(); + } } /** A dummy WorkspaceStatusAction. */ @@ -227,7 +233,7 @@ public final class AnalysisTestUtil { } @Override - public String computeKey() { + public String computeKey(ActionKeyContext actionKeyContext) { return ""; } @@ -394,6 +400,11 @@ public final class AnalysisTestUtil { public ImmutableSet<Artifact> getOrphanArtifacts() { return ImmutableSet.<Artifact>of(); } + + @Override + public ActionKeyContext getActionKeyContext() { + return null; + } }; /** diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java index 3345d71f19..571fe2345a 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java @@ -33,6 +33,7 @@ import com.google.devtools.build.lib.actions.Action; import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionGraph; import com.google.devtools.build.lib.actions.ActionInput; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionLookupValue; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactOwner; @@ -177,6 +178,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase { protected TimestampGranularityMonitor tsgm; protected BlazeDirectories directories; + protected ActionKeyContext actionKeyContext; protected BinTools binTools; // Note that these configurations are virtual (they use only VFS) @@ -204,6 +206,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase { new ServerDirectories(outputBase, outputBase), rootDirectory, analysisMock.getProductName()); + actionKeyContext = new ActionKeyContext(); binTools = BinTools.forUnitTesting(directories, analysisMock.getEmbeddedTools()); mockToolsConfig = new MockToolsConfig(rootDirectory, false); analysisMock.setupMockClient(mockToolsConfig); @@ -213,7 +216,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase { skylarkSemanticsOptions = parseSkylarkSemanticsOptions(); workspaceStatusActionFactory = new AnalysisTestUtil.DummyWorkspaceStatusActionFactory(directories); - mutableActionGraph = new MapBasedActionGraph(); + mutableActionGraph = new MapBasedActionGraph(actionKeyContext); ruleClassProvider = getRuleClassProvider(); ImmutableList<PrecomputedValue.Injected> extraPrecomputedValues = ImmutableList.of( @@ -233,6 +236,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase { pkgFactory, fileSystem, directories, + actionKeyContext, workspaceStatusActionFactory, ruleClassProvider.getBuildInfoFactories(), ImmutableList.<DiffAwareness.Factory>of(), @@ -493,6 +497,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase { protected CachingAnalysisEnvironment getTestAnalysisEnvironment() { return new CachingAnalysisEnvironment( view.getArtifactFactory(), + actionKeyContext, ArtifactOwner.NULL_OWNER, /*isSystemEnv=*/ true, /*extendedSanityChecks*/ false, @@ -1758,6 +1763,11 @@ public abstract class BuildViewTestCase extends FoundationTestCase { public ImmutableSet<Artifact> getOrphanArtifacts() { throw new UnsupportedOperationException(); } + + @Override + public ActionKeyContext getActionKeyContext() { + return actionKeyContext; + } } protected Iterable<String> baselineCoverageArtifactBasenames(ConfiguredTarget target) diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java index 5693b37afa..0e94a10d2e 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java @@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.Iterables; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.Root; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; @@ -89,6 +90,7 @@ public abstract class ConfigurationTestCase extends FoundationTestCase { protected SequencedSkyframeExecutor skyframeExecutor; protected List<ConfigurationFragmentFactory> configurationFragmentFactories; protected ImmutableList<Class<? extends FragmentOptions>> buildOptionClasses; + protected final ActionKeyContext actionKeyContext = new ActionKeyContext(); @Before public final void initializeSkyframeExecutor() throws Exception { @@ -118,6 +120,7 @@ public abstract class ConfigurationTestCase extends FoundationTestCase { pkgFactory, fileSystem, directories, + actionKeyContext, workspaceStatusActionFactory, ruleClassProvider.getBuildInfoFactories(), ImmutableList.<DiffAwareness.Factory>of(), diff --git a/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java b/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java index b0f4f8e13a..f459808bbe 100644 --- a/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java +++ b/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTest.java @@ -64,7 +64,7 @@ public class NestedSetCodecTest { NestedSet<String> other = (NestedSet<String>) deserialized; assertThat(subject.getOrder()).isEqualTo(other.getOrder()); assertThat(subject.toSet()).isEqualTo(other.toSet()); - verifyStructure(subject.children, other.children); + verifyStructure(subject.rawChildren(), other.rawChildren()); } private static void verifyStructure(Object lhs, Object rhs) { diff --git a/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCacheTest.java b/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCacheTest.java new file mode 100644 index 0000000000..fd8cf968c1 --- /dev/null +++ b/src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetFingerprintCacheTest.java @@ -0,0 +1,86 @@ +// Copyright 2017 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.google.devtools.build.lib.collect.nestedset; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.common.collect.HashMultiset; +import com.google.common.collect.Multiset; +import com.google.devtools.build.lib.util.Fingerprint; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** Tests for {@link NestedSetFingerprintCache}. */ +@RunWith(JUnit4.class) +public class NestedSetFingerprintCacheTest { + private static class StringCache extends NestedSetFingerprintCache<String> { + private final Multiset<String> fingerprinted = HashMultiset.create(); + + @Override + protected void addItemFingerprint(Fingerprint fingerprint, String item) { + fingerprint.addString(item); + fingerprinted.add(item); + } + } + + private StringCache stringCache; + + @Before + public void setup() { + stringCache = new StringCache(); + } + + @Test + public void testBasic() { + NestedSet<String> nestedSet = NestedSetBuilder.<String>stableOrder().add("a").add("b").build(); + + // This test does reimplement the inner algorithm of the cache, but serves + // as a simple check that the basic operations do something sensible + Fingerprint fingerprint = new Fingerprint(); + fingerprint.addInt(nestedSet.getOrder().ordinal()); + Fingerprint subFingerprint = new Fingerprint(); + subFingerprint.addString("a"); + subFingerprint.addString("b"); + fingerprint.addBytes(subFingerprint.digestAndReset()); + String controlDigest = fingerprint.hexDigestAndReset(); + + Fingerprint nestedSetFingerprint = new Fingerprint(); + stringCache.addNestedSetToFingerprint(nestedSetFingerprint, nestedSet); + String nestedSetDigest = nestedSetFingerprint.hexDigestAndReset(); + + assertThat(controlDigest).isEqualTo(nestedSetDigest); + } + + @Test + public void testOnlyFingerprintedOncePerString() { + // Leaving leaf nodes with a single item will defeat this check + // The nested set builder will effectively inline single-item objects into their parent, + // meaning they will get hashed multiple times. + NestedSet<String> a = NestedSetBuilder.<String>stableOrder().add("a0").add("a1").build(); + NestedSet<String> b = NestedSetBuilder.<String>stableOrder().add("b0").add("b1").build(); + NestedSet<String> c = + NestedSetBuilder.<String>stableOrder().add("c").addTransitive(a).addTransitive(b).build(); + NestedSet<String> d = + NestedSetBuilder.<String>stableOrder().add("d").addTransitive(a).addTransitive(b).build(); + NestedSet<String> e = + NestedSetBuilder.<String>stableOrder().add("e").addTransitive(c).addTransitive(d).build(); + stringCache.addNestedSetToFingerprint(new Fingerprint(), e); + assertThat(stringCache.fingerprinted).containsExactly("a0", "a1", "b0", "b1", "c", "d", "e"); + for (Multiset.Entry<String> entry : stringCache.fingerprinted.entrySet()) { + assertThat(entry.getCount()).isEqualTo(1); + } + } +} diff --git a/src/test/java/com/google/devtools/build/lib/exec/util/FakeOwner.java b/src/test/java/com/google/devtools/build/lib/exec/util/FakeOwner.java index cf17e08f2e..37e45153c9 100644 --- a/src/test/java/com/google/devtools/build/lib/exec/util/FakeOwner.java +++ b/src/test/java/com/google/devtools/build/lib/exec/util/FakeOwner.java @@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionExecutionMetadata; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.RunfilesSupplier; @@ -117,7 +118,7 @@ public final class FakeOwner implements ActionExecutionMetadata { } @Override - public String getKey() { + public String getKey(ActionKeyContext actionKeyContext) { return "MockOwner.getKey"; } diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java index 5dbaa3b017..3f199e9fe9 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java @@ -17,6 +17,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; import com.google.devtools.build.lib.analysis.RuleDefinition; @@ -71,6 +72,7 @@ public abstract class PackageLoadingTestCase extends FoundationTestCase { protected PackageFactory packageFactory; protected SkyframeExecutor skyframeExecutor; protected BlazeDirectories directories; + protected final ActionKeyContext actionKeyContext = new ActionKeyContext(); @Before public final void initializeSkyframeExecutor() throws Exception { @@ -113,6 +115,7 @@ public abstract class PackageLoadingTestCase extends FoundationTestCase { packageFactory, fileSystem, directories, + actionKeyContext, null, /* workspaceStatusActionFactory */ ruleClassProvider.getBuildInfoFactories(), ImmutableList.<DiffAwareness.Factory>of(), diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java index 3e55ca46d6..22a55ec1ff 100644 --- a/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java +++ b/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java @@ -18,6 +18,7 @@ import static com.google.common.truth.Truth.assertThat; 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.ActionKeyContext; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; import com.google.devtools.build.lib.analysis.ServerDirectories; @@ -61,6 +62,7 @@ public class BuildFileModificationTest extends FoundationTestCase { private AnalysisMock analysisMock; private ConfiguredRuleClassProvider ruleClassProvider; private SkyframeExecutor skyframeExecutor; + private final ActionKeyContext actionKeyContext = new ActionKeyContext(); @Before public final void disableLogging() throws Exception { @@ -83,6 +85,7 @@ public class BuildFileModificationTest extends FoundationTestCase { .build(ruleClassProvider, scratch.getFileSystem()), fileSystem, directories, + actionKeyContext, null, /* workspaceStatusActionFactory */ ruleClassProvider.getBuildInfoFactories(), ImmutableList.<DiffAwareness.Factory>of(), diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java index 41f48cd38b..4aac924b00 100644 --- a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java +++ b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java @@ -21,6 +21,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.eventbus.EventBus; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ServerDirectories; import com.google.devtools.build.lib.clock.BlazeClock; @@ -452,6 +453,7 @@ public class IncrementalLoadingTest { private final List<Path> changes = new ArrayList<>(); private boolean everythingModified = false; private ModifiedFileSet modifiedFileSet; + private final ActionKeyContext actionKeyContext = new ActionKeyContext(); public PackageCacheTester(FileSystem fs, ManualClock clock) throws IOException { this.clock = clock; @@ -474,6 +476,7 @@ public class IncrementalLoadingTest { .build(loadingMock.createRuleClassProvider(), fs), fs, directories, + actionKeyContext, null, /* workspaceStatusActionFactory */ loadingMock.createRuleClassProvider().getBuildInfoFactories(), ImmutableList.of(new ManualDiffAwarenessFactory()), diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java index ad94d7b8d2..a368664094 100644 --- a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java +++ b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java @@ -24,6 +24,7 @@ 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.ActionKeyContext; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.BuildView; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; @@ -588,6 +589,7 @@ public class LoadingPhaseRunnerTest { private final List<Path> changes = new ArrayList<>(); private final LoadingPhaseRunner loadingPhaseRunner; private final BlazeDirectories directories; + private final ActionKeyContext actionKeyContext = new ActionKeyContext(); private LoadingOptions options; private final StoredEventHandler storedErrors; @@ -622,6 +624,7 @@ public class LoadingPhaseRunnerTest { pkgFactory, fs, directories, + actionKeyContext, null, /* workspaceStatusActionFactory -- not used */ ruleClassProvider.getBuildInfoFactories(), ImmutableList.<DiffAwareness.Factory>of(), diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java index d1dc5fb5ed..22f71b573b 100644 --- a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java +++ b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java @@ -19,6 +19,7 @@ import static org.junit.Assert.fail; 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.ActionKeyContext; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; import com.google.devtools.build.lib.analysis.ServerDirectories; @@ -68,6 +69,7 @@ public class PackageCacheTest extends FoundationTestCase { private AnalysisMock analysisMock; private ConfiguredRuleClassProvider ruleClassProvider; private SkyframeExecutor skyframeExecutor; + private final ActionKeyContext actionKeyContext = new ActionKeyContext(); @Before public final void initializeSkyframeExecutor() throws Exception { @@ -92,6 +94,7 @@ public class PackageCacheTest extends FoundationTestCase { packageFactoryBuilder.build(ruleClassProvider, fileSystem), fileSystem, directories, + actionKeyContext, null, /* workspaceStatusActionFactory */ ruleClassProvider.getBuildInfoFactories(), ImmutableList.<DiffAwareness.Factory>of(), diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingTest.java index e8c4115f85..9fb2cbcc1e 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingTest.java @@ -198,7 +198,9 @@ public class AndroidDataBindingTest extends AndroidBuildViewTestCase { // Regression test for b/63134122 JavaCompileInfo javaCompileInfo = - binCompileAction.getExtraActionInfo().getExtension(JavaCompileInfo.javaCompileInfo); + binCompileAction + .getExtraActionInfo(actionKeyContext) + .getExtension(JavaCompileInfo.javaCompileInfo); assertThat(javaCompileInfo.getJavacOptList()).containsAllIn(expectedJavacopts); } diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java index 2ac8d431ca..c65fe227c7 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java @@ -265,7 +265,7 @@ public class CcLibraryConfiguredTargetTest extends BuildViewTestCase { CppFileTypes.SHARED_LIBRARY)); CppLinkAction action = (CppLinkAction) getGeneratingAction(sharedObject); - ExtraActionInfo.Builder builder = action.getExtraActionInfo(); + ExtraActionInfo.Builder builder = action.getExtraActionInfo(actionKeyContext); ExtraActionInfo info = builder.build(); assertThat(info.getMnemonic()).isEqualTo("CppLink"); @@ -299,7 +299,7 @@ public class CcLibraryConfiguredTargetTest extends BuildViewTestCase { FileType.filter(getFilesToBuild(hello), CppFileTypes.SHARED_LIBRARY).iterator().next(); CppLinkAction action = (CppLinkAction) getGeneratingAction(sharedObject); - ExtraActionInfo.Builder builder = action.getExtraActionInfo(); + ExtraActionInfo.Builder builder = action.getExtraActionInfo(actionKeyContext); ExtraActionInfo info = builder.build(); assertThat(info.getMnemonic()).isEqualTo("CppLink"); diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java index f3de8b24a6..a0154f0bda 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java @@ -344,7 +344,8 @@ public class CppLinkActionTest extends BuildViewTestCase { return builder.build(); } - }); + }, + actionKeyContext); } private enum StaticKeyAttributes { @@ -395,7 +396,8 @@ public class CppLinkActionTest extends BuildViewTestCase { builder.setLibraryIdentifier("foo"); return builder.build(); } - }); + }, + actionKeyContext); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java index 038ed7a01c..c33115ecfa 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java @@ -18,6 +18,7 @@ import static com.google.common.truth.Truth.assertThat; import static com.google.devtools.build.lib.actions.util.ActionsTestUtil.NULL_ACTION_OWNER; import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.Root; import com.google.devtools.build.lib.testutil.FoundationTestCase; @@ -37,6 +38,8 @@ import org.junit.runners.JUnit4; @RunWith(JUnit4.class) public class CreateIncSymlinkActionTest extends FoundationTestCase { + private final ActionKeyContext actionKeyContext = new ActionKeyContext(); + @Test public void testDifferentOrderSameActionKey() throws Exception { Root root = Root.asDerivedRoot(rootDirectory, rootDirectory.getRelative("out")); @@ -53,7 +56,8 @@ public class CreateIncSymlinkActionTest extends FoundationTestCase { d = new Artifact(PathFragment.create("d"), root); CreateIncSymlinkAction action2 = new CreateIncSymlinkAction(NULL_ACTION_OWNER, ImmutableMap.of(c, d, a, b), root.getPath()); - assertThat(action2.computeKey()).isEqualTo(action1.computeKey()); + assertThat(action2.computeKey(actionKeyContext)) + .isEqualTo(action1.computeKey(actionKeyContext)); } @Test @@ -68,7 +72,8 @@ public class CreateIncSymlinkActionTest extends FoundationTestCase { b = new Artifact(PathFragment.create("c"), root); CreateIncSymlinkAction action2 = new CreateIncSymlinkAction(NULL_ACTION_OWNER, ImmutableMap.of(a, b), root.getPath()); - assertThat(action2.computeKey()).isNotEqualTo(action1.computeKey()); + assertThat(action2.computeKey(actionKeyContext)) + .isNotEqualTo(action1.computeKey(actionKeyContext)); } @Test @@ -83,7 +88,8 @@ public class CreateIncSymlinkActionTest extends FoundationTestCase { b = new Artifact(PathFragment.create("b"), root); CreateIncSymlinkAction action2 = new CreateIncSymlinkAction(NULL_ACTION_OWNER, ImmutableMap.of(a, b), root.getPath()); - assertThat(action2.computeKey()).isNotEqualTo(action1.computeKey()); + assertThat(action2.computeKey(actionKeyContext)) + .isNotEqualTo(action1.computeKey(actionKeyContext)); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java index 483c349ce1..7751cb1375 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java @@ -76,8 +76,16 @@ public class LtoBackendActionTest extends BuildViewTestCase { @Before public final void createExecutorAndContext() throws Exception { executor = new TestExecutorBuilder(fileSystem, directories, binTools).build(); - context = new ActionExecutionContext(executor, null, ActionInputPrefetcher.NONE, null, - new FileOutErr(), ImmutableMap.<String, String>of(), null); + context = + new ActionExecutionContext( + executor, + null, + ActionInputPrefetcher.NONE, + actionKeyContext, + null, + new FileOutErr(), + ImmutableMap.<String, String>of(), + null); } @Test @@ -203,6 +211,7 @@ public class LtoBackendActionTest extends BuildViewTestCase { collectingAnalysisEnvironment.registerAction(actions); return actions[0]; } - }); + }, + actionKeyContext); } } diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java index 978b08f5fe..07cab81ef9 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java @@ -662,7 +662,13 @@ public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest { ActionExecutionContext dummyActionExecutionContext = new ActionExecutionContext( - null, null, ActionInputPrefetcher.NONE, null, null, ImmutableMap.<String, String>of(), + null, + null, + ActionInputPrefetcher.NONE, + actionKeyContext, + null, + null, + ImmutableMap.<String, String>of(), DUMMY_ARTIFACT_EXPANDER); ByteArrayOutputStream moduleMapStream = new ByteArrayOutputStream(); ByteArrayOutputStream umbrellaHeaderStream = new ByteArrayOutputStream(); @@ -705,7 +711,13 @@ public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest { ActionExecutionContext dummyActionExecutionContext = new ActionExecutionContext( - null, null, ActionInputPrefetcher.NONE, null, null, ImmutableMap.<String, String>of(), + null, + null, + ActionInputPrefetcher.NONE, + actionKeyContext, + null, + null, + ImmutableMap.<String, String>of(), DUMMY_ARTIFACT_EXPANDER); ByteArrayOutputStream moduleMapStream = new ByteArrayOutputStream(); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java index fecdccae31..3fdb7a0184 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java @@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Action; import com.google.devtools.build.lib.actions.ActionInputHelper; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; @@ -83,7 +84,8 @@ public final class ActionTemplateExpansionFunctionTest extends FoundationTestCas .put(SkyFunctions.ARTIFACT, new DummyArtifactFunction(artifactValueMap)) .put( SkyFunctions.ACTION_TEMPLATE_EXPANSION, - new ActionTemplateExpansionFunction(Suppliers.ofInstance(false))) + new ActionTemplateExpansionFunction( + new ActionKeyContext(), Suppliers.ofInstance(false))) .build(), differencer); driver = new SequentialBuildDriver(evaluator); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java index 0ab2a6bc16..4004e85b8f 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java @@ -436,7 +436,8 @@ public class ArtifactFunctionTest extends ArtifactFunctionTestCase { differencer.inject( ImmutableMap.of( OWNER_KEY, - new ActionLookupValue(ImmutableList.<ActionAnalysisMetadata>copyOf(actions), false))); + new ActionLookupValue( + actionKeyContext, ImmutableList.<ActionAnalysisMetadata>copyOf(actions), false))); } } diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java index dd504a504b..ff83c4a4dd 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java @@ -17,6 +17,7 @@ import com.google.common.base.Suppliers; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionLookupValue.ActionLookupKey; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ServerDirectories; @@ -59,6 +60,7 @@ abstract class ArtifactFunctionTestCase { protected MemoizingEvaluator evaluator; protected Path root; protected Path middlemanPath; + protected final ActionKeyContext actionKeyContext = new ActionKeyContext(); /** * The test action execution function. The Skyframe evaluator's action execution function @@ -116,7 +118,8 @@ abstract class ArtifactFunctionTestCase { .put(SkyFunctions.EXTERNAL_PACKAGE, new ExternalPackageFunction()) .put( SkyFunctions.ACTION_TEMPLATE_EXPANSION, - new ActionTemplateExpansionFunction(Suppliers.ofInstance(false))) + new ActionTemplateExpansionFunction( + actionKeyContext, Suppliers.ofInstance(false))) .build(), differencer); driver = new SequentialBuildDriver(evaluator); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java index db441e7a11..015b1f3451 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java @@ -26,6 +26,7 @@ import com.google.devtools.build.lib.actions.AbstractAction; import com.google.devtools.build.lib.actions.Action; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionExecutionException; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionResult; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.Executor; @@ -207,7 +208,7 @@ public class SkyframeAwareActionTest extends TimestampBuilderTestCase { } @Override - protected String computeKey() { + protected String computeKey(ActionKeyContext actionKeyContext) { return getPrimaryOutput().getExecPathString() + executionCounter.get(); } } @@ -651,7 +652,7 @@ public class SkyframeAwareActionTest extends TimestampBuilderTestCase { } @Override - protected String computeKey() { + protected String computeKey(ActionKeyContext actionKeyContext) { return new Fingerprint().addInt(42).hexDigestAndReset(); } } diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java index 0969d5f933..a6b2483b73 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java @@ -34,6 +34,7 @@ import com.google.devtools.build.lib.actions.ActionExecutionException; import com.google.devtools.build.lib.actions.ActionExecutionStatusReporter; import com.google.devtools.build.lib.actions.ActionInputFileCache; import com.google.devtools.build.lib.actions.ActionInputPrefetcher; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionLogBufferPathGenerator; import com.google.devtools.build.lib.actions.ActionLookupData; import com.google.devtools.build.lib.actions.ActionLookupValue; @@ -121,6 +122,7 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { private Set<ActionAnalysisMetadata> actions; protected AtomicReference<EventBus> eventBusRef = new AtomicReference<>(); + protected final ActionKeyContext actionKeyContext = new ActionKeyContext(); @Before public final void initialize() throws Exception { @@ -129,7 +131,7 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { ResourceManager.instance().setAvailableResources(ResourceSet.createWithRamCpuIo(100, 1, 1)); actions = new HashSet<>(); actionTemplateExpansionFunction = - new ActionTemplateExpansionFunction(Suppliers.ofInstance(false)); + new ActionTemplateExpansionFunction(actionKeyContext, Suppliers.ofInstance(false)); } protected void clearActions() { @@ -180,7 +182,8 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { ActionExecutionStatusReporter statusReporter = ActionExecutionStatusReporter.create(new StoredEventHandler()); final SkyframeActionExecutor skyframeActionExecutor = - new SkyframeActionExecutor(eventBusRef, new AtomicReference<>(statusReporter)); + new SkyframeActionExecutor( + actionKeyContext, eventBusRef, new AtomicReference<>(statusReporter)); Path actionOutputBase = scratch.dir("/usr/local/google/_blaze_jrluser/FAKEMD5/action_out/"); skyframeActionExecutor.setActionLogBufferPathGenerator( @@ -238,7 +241,8 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { if (evaluator.getExistingValue(OWNER_KEY) == null) { differencer.inject( ImmutableMap.of( - OWNER_KEY, new ActionLookupValue(ImmutableList.copyOf(actions), false))); + OWNER_KEY, + new ActionLookupValue(actionKeyContext, ImmutableList.copyOf(actions), false))); } } @@ -263,7 +267,8 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { executor, keepGoing, /*explain=*/ false, - new ActionCacheChecker(actionCache, null, ALWAYS_EXECUTE_FILTER, null), + new ActionCacheChecker( + actionCache, null, actionKeyContext, ALWAYS_EXECUTE_FILTER, null), null); skyframeActionExecutor.setActionExecutionProgressReportingObjects( EMPTY_PROGRESS_SUPPLIER, EMPTY_COMPLETION_RECEIVER); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java index fac36eb3d6..6c15a1f456 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java @@ -34,6 +34,7 @@ import com.google.devtools.build.lib.actions.ActionExecutionException; import com.google.devtools.build.lib.actions.ActionInput; import com.google.devtools.build.lib.actions.ActionInputFileCache; import com.google.devtools.build.lib.actions.ActionInputHelper; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionResult; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; @@ -742,10 +743,12 @@ public class TreeArtifactBuildTest extends TimestampBuilderTestCase { Action noGenerateOutputAction = new DummyAction( ImmutableList.<Artifact>of(treeFileArtifactB), expectedOutputTreeFileArtifact2); - actionTemplateExpansionFunction = new DummyActionTemplateExpansionFunction( - ImmutableMultimap.<ActionTemplate<?>, Action>of( - actionTemplate, generateOutputAction, - actionTemplate, noGenerateOutputAction)); + actionTemplateExpansionFunction = + new DummyActionTemplateExpansionFunction( + actionKeyContext, + ImmutableMultimap.<ActionTemplate<?>, Action>of( + actionTemplate, generateOutputAction, + actionTemplate, noGenerateOutputAction)); buildArtifact(artifact2); } @@ -782,10 +785,12 @@ public class TreeArtifactBuildTest extends TimestampBuilderTestCase { ImmutableList.<Artifact>of(treeFileArtifactB), ImmutableList.<Artifact>of(expectedOutputTreeFileArtifact2)); - actionTemplateExpansionFunction = new DummyActionTemplateExpansionFunction( - ImmutableMultimap.<ActionTemplate<?>, Action>of( - actionTemplate, generateOutputAction, - actionTemplate, noGenerateOutputAction)); + actionTemplateExpansionFunction = + new DummyActionTemplateExpansionFunction( + actionKeyContext, + ImmutableMultimap.<ActionTemplate<?>, Action>of( + actionTemplate, generateOutputAction, + actionTemplate, noGenerateOutputAction)); try { buildArtifact(artifact2); @@ -826,11 +831,13 @@ public class TreeArtifactBuildTest extends TimestampBuilderTestCase { Action throwingAction = new ThrowingDummyAction( ImmutableList.<Artifact>of(treeFileArtifactB), ImmutableList.<Artifact>of(expectedOutputTreeFileArtifact2)); - - actionTemplateExpansionFunction = new DummyActionTemplateExpansionFunction( - ImmutableMultimap.<ActionTemplate<?>, Action>of( - actionTemplate, generateOutputAction, - actionTemplate, throwingAction)); + + actionTemplateExpansionFunction = + new DummyActionTemplateExpansionFunction( + actionKeyContext, + ImmutableMultimap.<ActionTemplate<?>, Action>of( + actionTemplate, generateOutputAction, + actionTemplate, throwingAction)); try { buildArtifact(artifact2); @@ -870,11 +877,13 @@ public class TreeArtifactBuildTest extends TimestampBuilderTestCase { Action anotherThrowingAction = new ThrowingDummyAction( ImmutableList.<Artifact>of(treeFileArtifactB), ImmutableList.<Artifact>of(expectedOutputTreeFileArtifact2)); - - actionTemplateExpansionFunction = new DummyActionTemplateExpansionFunction( - ImmutableMultimap.<ActionTemplate<?>, Action>of( - actionTemplate, throwingAction, - actionTemplate, anotherThrowingAction)); + + actionTemplateExpansionFunction = + new DummyActionTemplateExpansionFunction( + actionKeyContext, + ImmutableMultimap.<ActionTemplate<?>, Action>of( + actionTemplate, throwingAction, + actionTemplate, anotherThrowingAction)); try { buildArtifact(artifact2); @@ -1217,10 +1226,13 @@ public class TreeArtifactBuildTest extends TimestampBuilderTestCase { /** A dummy action template expansion function that just returns the injected actions */ private static class DummyActionTemplateExpansionFunction implements SkyFunction { + private final ActionKeyContext actionKeyContext; private final Multimap<ActionTemplate<?>, Action> actionTemplateToActionMap; DummyActionTemplateExpansionFunction( + ActionKeyContext actionKeyContext, Multimap<ActionTemplate<?>, Action> actionTemplateToActionMap) { + this.actionKeyContext = actionKeyContext; this.actionTemplateToActionMap = actionTemplateToActionMap; } @@ -1229,7 +1241,9 @@ public class TreeArtifactBuildTest extends TimestampBuilderTestCase { ActionTemplateExpansionKey key = (ActionTemplateExpansionKey) skyKey.argument(); ActionTemplate<?> actionTemplate = key.getActionTemplate(); return new ActionTemplateExpansionValue( - Preconditions.checkNotNull(actionTemplateToActionMap.get(actionTemplate)), false); + actionKeyContext, + Preconditions.checkNotNull(actionTemplateToActionMap.get(actionTemplate)), + false); } @Override diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java index 54b4e483d0..3e156beaec 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java @@ -228,7 +228,8 @@ public class TreeArtifactMetadataTest extends ArtifactFunctionTestCase { differencer.inject( ImmutableMap.of( OWNER_KEY, - new ActionLookupValue(ImmutableList.<ActionAnalysisMetadata>copyOf(actions), false))); + new ActionLookupValue( + actionKeyContext, ImmutableList.<ActionAnalysisMetadata>copyOf(actions), false))); } } 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 d2497ff313..5dc7d9bc93 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 @@ -24,6 +24,7 @@ import com.google.common.eventbus.EventBus; import com.google.devtools.build.lib.actions.ActionContext; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionInputPrefetcher; +import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.Artifact.ArtifactExpander; import com.google.devtools.build.lib.actions.ExecException; @@ -183,6 +184,7 @@ public class StandaloneSpawnStrategyTest { executor, new SingleBuildFileCache(execRoot.getPathString(), execRoot.getFileSystem()), ActionInputPrefetcher.NONE, + new ActionKeyContext(), null, outErr, ImmutableMap.<String, String>of(), |