aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/analysis/util
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2017-11-29 14:01:21 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-11-29 14:03:30 -0800
commit3d1a194ff9e76f25f1a7242ff2d021523ba8e4a0 (patch)
tree9fec583a59b8ee6ee0f4fac513d5471956dfe1d3 /src/test/java/com/google/devtools/build/lib/analysis/util
parent8f8b8859fc7d85feee97481443fb11c0b7ae03ce (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')
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/ActionTester.java17
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java13
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java12
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java3
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(),