diff options
author | tomlu <tomlu@google.com> | 2017-11-29 14:01:21 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2017-11-29 14:03:30 -0800 |
commit | 3d1a194ff9e76f25f1a7242ff2d021523ba8e4a0 (patch) | |
tree | 9fec583a59b8ee6ee0f4fac513d5471956dfe1d3 /src/test/java/com/google/devtools/build/lib/analysis/util | |
parent | 8f8b8859fc7d85feee97481443fb11c0b7ae03ce (diff) |
Add ActionKeyContext to Action#getKey.
This key context can be used by actions to share partial key computations, for instance when computing MD5s for nested sets.
RELNOTES: None
PiperOrigin-RevId: 177359607
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/analysis/util')
5 files changed, 42 insertions, 6 deletions
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(), |