diff options
author | Klaus Aehlig <aehlig@google.com> | 2016-09-13 16:46:10 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-09-14 09:35:04 +0000 |
commit | 6f33a1c54e517d7343c36d0479713655a19f3224 (patch) | |
tree | 3e4920aa44a9ad54a06d2b6a574127fee8829e7b /src/test/java/com/google | |
parent | 4d94984c61892749315a6c98a3b1facf84762653 (diff) |
Track client environment in Skyframe
...to determine which actions have to be recomputed based on changes
to the client environment. Note that this change does it the simple way
and reconsideres all actions on a changed client environment, while still
only reexecuting those, where the part that was inherited from the environment
actually did change.
--
Change-Id: Ie1116d094642165e5e959447a6fcf49d19b37d6e
Reviewed-on: https://bazel-review.googlesource.com/#/c/5431
MOS_MIGRATED_REVID=133010705
Diffstat (limited to 'src/test/java/com/google')
13 files changed, 86 insertions, 51 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCacheTest.java b/src/test/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCacheTest.java index 41dfd5d4b3..479e152c17 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCacheTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/cache/CompactPersistentActionCacheTest.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.testutil.Scratch; import com.google.devtools.build.lib.util.Clock; import com.google.devtools.build.lib.vfs.Path; @@ -163,7 +164,8 @@ public class CompactPersistentActionCacheTest { // Mutations may result in IllegalStateException. @Test public void testEntryToStringIsIdempotent() throws Exception { - ActionCache.Entry entry = new ActionCache.Entry("actionKey", false); + ActionCache.Entry entry = + new ActionCache.Entry("actionKey", ImmutableMap.<String, String>of(), false); entry.toString(); entry.addFile(new PathFragment("foo/bar"), Metadata.CONSTANT_METADATA); entry.toString(); @@ -217,7 +219,8 @@ public class CompactPersistentActionCacheTest { } private void putKey(String key, ActionCache ac, boolean discoversInputs) { - ActionCache.Entry entry = new ActionCache.Entry(key, discoversInputs); + ActionCache.Entry entry = + new ActionCache.Entry(key, ImmutableMap.<String, String>of(), discoversInputs); entry.getFileDigest(); ac.put(key, entry); } 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 e7d0655360..3cb49517e3 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 @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.analysis.util; import com.google.common.base.Predicates; 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.common.eventbus.EventBus; @@ -182,6 +183,7 @@ public abstract class AnalysisTestCase extends FoundationTestCase { ruleClassProvider.getDefaultsPackageContent( analysisMock.getInvocationPolicyEnforcer().getInvocationPolicy()), UUID.randomUUID(), + ImmutableMap.of(), new TimestampGranularityMonitor(BlazeClock.instance())); packageManager = skyframeExecutor.getPackageManager(); loadingPhaseRunner = skyframeExecutor.getLoadingPhaseRunner( @@ -285,6 +287,7 @@ public abstract class AnalysisTestCase extends FoundationTestCase { ruleClassProvider.getDefaultsPackageContent( analysisMock.getInvocationPolicyEnforcer().getInvocationPolicy()), UUID.randomUUID(), + ImmutableMap.of(), new TimestampGranularityMonitor(BlazeClock.instance())); skyframeExecutor.invalidateFilesUnderPathForTesting(reporter, ModifiedFileSet.EVERYTHING_MODIFIED, rootDirectory); 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 aac6fe6014..7da4ca5398 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 @@ -227,8 +227,13 @@ public abstract class BuildViewTestCase extends FoundationTestCase { analysisMock.getProductName()); skyframeExecutor.preparePackageLoading( new PathPackageLocator(outputBase, ImmutableList.of(rootDirectory)), - ConstantRuleVisibility.PUBLIC, true, 7, "", - UUID.randomUUID(), tsgm); + ConstantRuleVisibility.PUBLIC, + true, + 7, + "", + UUID.randomUUID(), + ImmutableMap.of(), + tsgm); useConfiguration(); setUpSkyframe(); // Also initializes ResourceManager. @@ -310,10 +315,15 @@ public abstract class BuildViewTestCase extends FoundationTestCase { private void setUpSkyframe() { PathPackageLocator pkgLocator = PathPackageLocator.create( outputBase, packageCacheOptions.packagePath, reporter, rootDirectory, rootDirectory); - skyframeExecutor.preparePackageLoading(pkgLocator, - packageCacheOptions.defaultVisibility, true, - 7, ruleClassProvider.getDefaultsPackageContent(optionsParser), - UUID.randomUUID(), tsgm); + skyframeExecutor.preparePackageLoading( + pkgLocator, + packageCacheOptions.defaultVisibility, + true, + 7, + ruleClassProvider.getDefaultsPackageContent(optionsParser), + UUID.randomUUID(), + ImmutableMap.<String, String>of(), + tsgm); skyframeExecutor.setDeletedPackages(ImmutableSet.copyOf(packageCacheOptions.getDeletedPackages())); } 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 af92ecfa76..b5ecba0643 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 @@ -17,6 +17,7 @@ import static org.junit.Assert.fail; import com.google.common.base.Predicates; 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.Root; @@ -122,6 +123,7 @@ public abstract class ConfigurationTestCase extends FoundationTestCase { ruleClassProvider.getDefaultsPackageContent( analysisMock.getInvocationPolicyEnforcer().getInvocationPolicy()), UUID.randomUUID(), + ImmutableMap.of(), new TimestampGranularityMonitor(BlazeClock.instance())); mockToolsConfig = new MockToolsConfig(rootDirectory); 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 8b8d039055..6b1eebbc4a 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 @@ -49,15 +49,13 @@ import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.common.options.OptionsParser; - -import org.junit.Before; - import java.io.IOException; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.UUID; +import org.junit.Before; /** * This is a specialization of {@link FoundationTestCase} that's useful for @@ -131,7 +129,8 @@ public abstract class PackageLoadingTestCase extends FoundationTestCase { skyframeExecutor.preparePackageLoading( new PathPackageLocator(outputBase, ImmutableList.of(rootDirectory)), defaultVisibility, true, GLOBBING_THREADS, defaultsPackageContents, - UUID.randomUUID(), new TimestampGranularityMonitor(BlazeClock.instance())); + UUID.randomUUID(), ImmutableMap.of(), + new TimestampGranularityMonitor(BlazeClock.instance())); } private void setUpSkyframe(PackageCacheOptions packageCacheOptions) { @@ -144,8 +143,10 @@ public abstract class PackageLoadingTestCase extends FoundationTestCase { GLOBBING_THREADS, loadingMock.getDefaultsPackageContent(), UUID.randomUUID(), + ImmutableMap.of(), new TimestampGranularityMonitor(BlazeClock.instance())); - skyframeExecutor.setDeletedPackages(ImmutableSet.copyOf(packageCacheOptions.getDeletedPackages())); + skyframeExecutor.setDeletedPackages( + ImmutableSet.copyOf(packageCacheOptions.getDeletedPackages())); } private PackageCacheOptions parsePackageCacheOptions(String... options) throws Exception { 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 3a2798f240..3069a1d12c 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 @@ -55,20 +55,17 @@ import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionName; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.UUID; - import javax.annotation.Nullable; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; /** * Tests for incremental loading; these cover both normal operation and diff awareness, for which a @@ -488,7 +485,8 @@ public class IncrementalLoadingTest { skyframeExecutor.preparePackageLoading( new PathPackageLocator(outputBase, ImmutableList.of(workspace)), ConstantRuleVisibility.PUBLIC, true, 7, "", - UUID.randomUUID(), new TimestampGranularityMonitor(BlazeClock.instance())); + UUID.randomUUID(), ImmutableMap.of(), + new TimestampGranularityMonitor(BlazeClock.instance())); } Path addFile(String fileName, String... content) throws IOException { @@ -567,7 +565,8 @@ public class IncrementalLoadingTest { skyframeExecutor.preparePackageLoading( new PathPackageLocator(outputBase, ImmutableList.of(workspace)), ConstantRuleVisibility.PUBLIC, true, 7, "", - UUID.randomUUID(), new TimestampGranularityMonitor(BlazeClock.instance())); + UUID.randomUUID(), ImmutableMap.of(), + new TimestampGranularityMonitor(BlazeClock.instance())); skyframeExecutor.invalidateFilesUnderPathForTesting( new Reporter(), modifiedFileSet, workspace); ((SequencedSkyframeExecutor) skyframeExecutor).handleDiffs(new Reporter()); 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 afa781ae84..ceb26a1da3 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 @@ -26,6 +26,7 @@ import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.eventbus.EventBus; @@ -620,9 +621,10 @@ public class LoadingPhaseRunnerTest { 7, analysisMock.getDefaultsPackageContent(), UUID.randomUUID(), + ImmutableMap.of(), new TimestampGranularityMonitor(clock)); - loadingPhaseRunner = skyframeExecutor.getLoadingPhaseRunner( - pkgFactory.getRuleClassNames(), useNewImpl); + loadingPhaseRunner = + skyframeExecutor.getLoadingPhaseRunner(pkgFactory.getRuleClassNames(), useNewImpl); this.options = Options.getDefaults(LoadingOptions.class); } 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 9afcce146f..5735458b10 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 @@ -24,6 +24,7 @@ import static org.junit.Assert.fail; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; @@ -55,17 +56,15 @@ import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.common.options.OptionsParser; import com.google.devtools.common.options.OptionsParsingException; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - import java.io.IOException; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.UUID; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; /** * Tests for package loading. @@ -112,8 +111,10 @@ public class PackageCacheTest extends FoundationTestCase { 7, analysisMock.getDefaultsPackageContent(), UUID.randomUUID(), + ImmutableMap.of(), new TimestampGranularityMonitor(BlazeClock.instance())); - skyframeExecutor.setDeletedPackages(ImmutableSet.copyOf(packageCacheOptions.getDeletedPackages())); + skyframeExecutor.setDeletedPackages( + ImmutableSet.copyOf(packageCacheOptions.getDeletedPackages())); } private PackageCacheOptions parsePackageCacheOptions(String... options) throws Exception { diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java index 2aec5947e9..f6ee2ee57a 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java @@ -71,10 +71,16 @@ public class PackageFunctionTest extends BuildViewTestCase { private CustomInMemoryFs fs = new CustomInMemoryFs(new ManualClock()); private void preparePackageLoading(Path... roots) { - getSkyframeExecutor().preparePackageLoading( - new PathPackageLocator(outputBase, ImmutableList.copyOf(roots)), - ConstantRuleVisibility.PUBLIC, true, - 7, "", UUID.randomUUID(), new TimestampGranularityMonitor(BlazeClock.instance())); + getSkyframeExecutor() + .preparePackageLoading( + new PathPackageLocator(outputBase, ImmutableList.copyOf(roots)), + ConstantRuleVisibility.PUBLIC, + true, + 7, + "", + UUID.randomUUID(), + ImmutableMap.<String, String>of(), + new TimestampGranularityMonitor(BlazeClock.instance())); } @Override @@ -435,10 +441,16 @@ public class PackageFunctionTest extends BuildViewTestCase { Label.parseAbsoluteUnchecked("//foo:b.txt")) .inOrder(); getSkyframeExecutor().resetEvaluator(); - getSkyframeExecutor().preparePackageLoading( - new PathPackageLocator(outputBase, ImmutableList.of(rootDirectory)), - ConstantRuleVisibility.PUBLIC, true, 7, "", - UUID.randomUUID(), tsgm); + getSkyframeExecutor() + .preparePackageLoading( + new PathPackageLocator(outputBase, ImmutableList.<Path>of(rootDirectory)), + ConstantRuleVisibility.PUBLIC, + true, + 7, + "", + UUID.randomUUID(), + ImmutableMap.of(), + tsgm); value = validPackage(skyKey); assertThat( (Iterable<Label>) diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTest.java index b5a9494758..902c62f5a1 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTest.java @@ -18,6 +18,7 @@ import static org.junit.Assert.assertTrue; 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.cmdline.Label; import com.google.devtools.build.lib.events.Event; @@ -33,14 +34,12 @@ import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.ModifiedFileSet; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - import java.io.IOException; import java.util.Collection; import java.util.UUID; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; @RunWith(JUnit4.class) public class SkyframeLabelVisitorTest extends SkyframeLabelVisitorTestCase { @@ -410,6 +409,7 @@ public class SkyframeLabelVisitorTest extends SkyframeLabelVisitorTestCase { 7, loadingMock.getDefaultsPackageContent(), UUID.randomUUID(), + ImmutableMap.of(), new TimestampGranularityMonitor(BlazeClock.instance())); this.visitor = getSkyframeExecutor().pkgLoader(); scratch.file("pkg/BUILD", "sh_library(name = 'x', deps = ['z'])", "sh_library(name = 'z')"); @@ -454,6 +454,7 @@ public class SkyframeLabelVisitorTest extends SkyframeLabelVisitorTestCase { 7, loadingMock.getDefaultsPackageContent(), UUID.randomUUID(), + ImmutableMap.of(), new TimestampGranularityMonitor(BlazeClock.instance())); this.visitor = getSkyframeExecutor().pkgLoader(); scratch.file("a/BUILD", "subinclude('//b:c/d/foo')"); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkFileContentHashTests.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkFileContentHashTests.java index 089d6a4834..23f7171bf7 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkFileContentHashTests.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkFileContentHashTests.java @@ -17,6 +17,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.packages.ConstantRuleVisibility; @@ -28,15 +29,13 @@ import com.google.devtools.build.lib.util.BlazeClock; import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; import com.google.devtools.build.skyframe.EvaluationResult; import com.google.devtools.build.skyframe.SkyKey; - +import java.util.Collection; +import java.util.UUID; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import java.util.Collection; -import java.util.UUID; - /** * Tests for the hash code calculated for Skylark RuleClasses based on the transitive closure * of the imports of their respective definition SkylarkEnvironments. @@ -164,6 +163,7 @@ public class SkylarkFileContentHashTests extends BuildViewTestCase { 7, "", UUID.randomUUID(), + ImmutableMap.of(), new TimestampGranularityMonitor(BlazeClock.instance())); SkyKey pkgLookupKey = PackageValue.key(PackageIdentifier.parse("@//" + pkg)); EvaluationResult<PackageValue> result = diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunctionTest.java index 838302ff57..78100f728e 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunctionTest.java @@ -19,6 +19,7 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.ConstantRuleVisibility; @@ -30,14 +31,12 @@ import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.skyframe.ErrorInfo; import com.google.devtools.build.skyframe.EvaluationResult; import com.google.devtools.build.skyframe.SkyKey; - +import java.util.UUID; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import java.util.UUID; - /** * Tests for SkylarkImportLookupFunction. */ @@ -55,6 +54,7 @@ public class SkylarkImportLookupFunctionTest extends BuildViewTestCase { 7, "", UUID.randomUUID(), + ImmutableMap.of(), new TimestampGranularityMonitor(BlazeClock.instance())); } 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 0a2c7ddf06..a8ffdfea20 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 @@ -195,6 +195,7 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { evaluationProgressReceiver); final SequentialBuildDriver driver = new SequentialBuildDriver(evaluator); PrecomputedValue.BUILD_ID.set(differencer, UUID.randomUUID()); + PrecomputedValue.CLIENT_ENV.set(differencer, ImmutableMap.<String, String>of()); PrecomputedValue.PATH_PACKAGE_LOCATOR.set(differencer, pkgLocator.get()); return new Builder() { |