diff options
Diffstat (limited to 'src')
17 files changed, 54 insertions, 21 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java index 0f646f71ed..e68da96086 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java @@ -30,12 +30,14 @@ import java.util.logging.Logger; /** Common utilities for dealing with paths outside the package roots. */ public class ExternalFilesHelper { + private static final boolean IN_INTEGRATION_TEST = System.getenv("BAZEL_SHELL_TEST") != null; + private static final Logger logger = Logger.getLogger(ExternalFilesHelper.class.getName()); - private static final int MAX_NUM_EXTERNAL_FILES_TO_LOG = 100; private final AtomicReference<PathPackageLocator> pkgLocator; private final ExternalFileAction externalFileAction; private final BlazeDirectories directories; + private final int maxNumExternalFilesToLog; private final AtomicInteger numExternalFilesLogged = new AtomicInteger(0); // These variables are set to true from multiple threads, but only read in the main thread. @@ -43,15 +45,43 @@ public class ExternalFilesHelper { private boolean anyOutputFilesSeen = false; private boolean anyNonOutputExternalFilesSeen = false; - public ExternalFilesHelper( + private ExternalFilesHelper( AtomicReference<PathPackageLocator> pkgLocator, ExternalFileAction externalFileAction, - BlazeDirectories directories) { + BlazeDirectories directories, + int maxNumExternalFilesToLog) { this.pkgLocator = pkgLocator; this.externalFileAction = externalFileAction; this.directories = directories; + this.maxNumExternalFilesToLog = maxNumExternalFilesToLog; + } + + public static ExternalFilesHelper create( + AtomicReference<PathPackageLocator> pkgLocator, + ExternalFileAction externalFileAction, + BlazeDirectories directories) { + return IN_INTEGRATION_TEST + ? createForTesting(pkgLocator, externalFileAction, directories) + : new ExternalFilesHelper( + pkgLocator, + externalFileAction, + directories, + /*maxNumExternalFilesToLog=*/ 100); } + public static ExternalFilesHelper createForTesting( + AtomicReference<PathPackageLocator> pkgLocator, + ExternalFileAction externalFileAction, + BlazeDirectories directories) { + return new ExternalFilesHelper( + pkgLocator, + externalFileAction, + directories, + // These log lines are mostly spam during unit and integration tests. + /*maxNumExternalFilesToLog=*/ 0); + } + + /** * The action to take when an external path is encountered. See {@link FileType} for the * definition of "external". @@ -137,7 +167,8 @@ public class ExternalFilesHelper { } ExternalFilesHelper cloneWithFreshExternalFilesKnowledge() { - return new ExternalFilesHelper(pkgLocator, externalFileAction, directories); + return new ExternalFilesHelper( + pkgLocator, externalFileAction, directories, maxNumExternalFilesToLog); } FileType getAndNoteFileType(RootedPath rootedPath) { @@ -186,7 +217,7 @@ public class ExternalFilesHelper { throw new NonexistentImmutableExternalFileException(); } if (fileType == FileType.EXTERNAL - && numExternalFilesLogged.incrementAndGet() < MAX_NUM_EXTERNAL_FILES_TO_LOG) { + && numExternalFilesLogged.incrementAndGet() < maxNumExternalFilesToLog) { logger.info("Encountered an external path " + rootedPath); } return; diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index ed4bfc510e..0b65ba7e3f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -341,7 +341,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { this, (ConfiguredRuleClassProvider) ruleClassProvider); this.artifactFactory.set(skyframeBuildView.getArtifactFactory()); - this.externalFilesHelper = new ExternalFilesHelper( + this.externalFilesHelper = ExternalFilesHelper.create( pkgLocator, this.externalFileAction, directories); this.crossRepositoryLabelViolationStrategy = crossRepositoryLabelViolationStrategy; this.buildFilesByPriority = buildFilesByPriority; diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java index a079b3fca4..850687dcc1 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java @@ -228,7 +228,7 @@ public abstract class AbstractPackageLoader implements PackageLoader { this.skyframeThreads = builder.skyframeThreads; this.directories = builder.directories; - this.externalFilesHelper = new ExternalFilesHelper( + this.externalFilesHelper = ExternalFilesHelper.create( pkgLocatorRef, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories); diff --git a/src/main/java/com/google/devtools/build/lib/util/io/TimestampGranularityMonitor.java b/src/main/java/com/google/devtools/build/lib/util/io/TimestampGranularityMonitor.java index dee3fb6ee7..12cb4897f9 100644 --- a/src/main/java/com/google/devtools/build/lib/util/io/TimestampGranularityMonitor.java +++ b/src/main/java/com/google/devtools/build/lib/util/io/TimestampGranularityMonitor.java @@ -126,11 +126,11 @@ public class TimestampGranularityMonitor { */ @ThreadSafe public void notifyDependenceOnFileTime(PathFragment path, long ctimeMillis) { - if (ctimeMillis == this.commandStartTimeMillis) { + if (!this.waitAMillisecond && ctimeMillis == this.commandStartTimeMillis) { logger.info("Will have to wait for a millisecond on completion because of " + path); this.waitAMillisecond = true; } - if (ctimeMillis == this.commandStartTimeMillisRounded) { + if (!this.waitASecond && ctimeMillis == this.commandStartTimeMillisRounded) { logger.info("Will have to wait for a second on completion because of " + path); this.waitASecond = true; } diff --git a/src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java b/src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java index c64fbd06e7..02df4c6621 100644 --- a/src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java +++ b/src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java @@ -97,7 +97,7 @@ public class ExternalPackageUtilTest extends BuildViewTestCase { rootDirectory, analysisMock.getProductName()); ExternalFilesHelper externalFilesHelper = - new ExternalFilesHelper( + ExternalFilesHelper.createForTesting( pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories); diff --git a/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java b/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java index 4cc07e2513..0547078341 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java @@ -85,7 +85,7 @@ public class RepositoryDelegatorTest extends FoundationTestCase { root, ImmutableList.of(Root.fromPath(root)), BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY)); - ExternalFilesHelper externalFilesHelper = new ExternalFilesHelper( + ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting( pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories); 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 202050604b..036becfdf0 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 @@ -78,7 +78,7 @@ abstract class ArtifactFunctionTestCase { BazelSkyframeExecutorConstants.BUILD_FILES_BY_PRIORITY)); BlazeDirectories directories = new BlazeDirectories(new ServerDirectories(root, root), root, TestConstants.PRODUCT_NAME); - ExternalFilesHelper externalFilesHelper = new ExternalFilesHelper( + ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting( pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java index fe2b28c74a..b6933600d0 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java @@ -87,7 +87,7 @@ public class ContainingPackageLookupFunctionTest extends FoundationTestCase { rootDirectory, analysisMock.getProductName()); ExternalFilesHelper externalFilesHelper = - new ExternalFilesHelper( + ExternalFilesHelper.createForTesting( pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java index 268a9f3c9c..c78eab0e2c 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java @@ -133,7 +133,7 @@ public class FileFunctionTest { pkgRoot.asPath(), TestConstants.PRODUCT_NAME); ExternalFilesHelper externalFilesHelper = - new ExternalFilesHelper(pkgLocatorRef, externalFileAction, directories); + ExternalFilesHelper.createForTesting(pkgLocatorRef, externalFileAction, directories); differencer = new SequencedRecordingDifferencer(); MemoizingEvaluator evaluator = new InMemoryMemoizingEvaluator( diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunctionTest.java index 20fadeef1e..6fb3cd8f7a 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunctionTest.java @@ -90,7 +90,7 @@ public final class FilesetEntryFunctionTest extends FoundationTestCase { AtomicReference<ImmutableSet<PackageIdentifier>> deletedPackages = new AtomicReference<>(ImmutableSet.<PackageIdentifier>of()); ExternalFilesHelper externalFilesHelper = - new ExternalFilesHelper( + ExternalFilesHelper.createForTesting( pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, new BlazeDirectories( diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java index 648e038f11..af372aea05 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java @@ -110,7 +110,7 @@ public class FilesystemValueCheckerTest { BlazeDirectories directories = new BlazeDirectories( new ServerDirectories(pkgRoot, pkgRoot), pkgRoot, TestConstants.PRODUCT_NAME); - ExternalFilesHelper externalFilesHelper = new ExternalFilesHelper( + ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting( pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories); skyFunctions.put(SkyFunctions.FILE_STATE, new FileStateFunction( new AtomicReference<TimestampGranularityMonitor>(), externalFilesHelper)); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/GlobFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/GlobFunctionTest.java index ed8a74d761..546ef61bc2 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/GlobFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/GlobFunctionTest.java @@ -134,7 +134,7 @@ public abstract class GlobFunctionTest { BlazeDirectories directories = new BlazeDirectories(new ServerDirectories(root, root), root, TestConstants.PRODUCT_NAME); ExternalFilesHelper externalFilesHelper = - new ExternalFilesHelper( + ExternalFilesHelper.createForTesting( pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java index 244505872a..e2c8bb566d 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java @@ -78,7 +78,7 @@ public class LocalRepositoryLookupFunctionTest extends FoundationTestCase { new ServerDirectories(rootDirectory, outputBase), rootDirectory, analysisMock.getProductName()); - ExternalFilesHelper externalFilesHelper = new ExternalFilesHelper( + ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting( pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories); Map<SkyFunctionName, SkyFunction> skyFunctions = new HashMap<>(); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java index 6f34ab6fdb..cccb3ab81d 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java @@ -103,7 +103,7 @@ public abstract class PackageLookupFunctionTest extends FoundationTestCase { new ServerDirectories(rootDirectory, outputBase), rootDirectory, analysisMock.getProductName()); - ExternalFilesHelper externalFilesHelper = new ExternalFilesHelper( + ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting( pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories); Map<SkyFunctionName, SkyFunction> skyFunctions = new HashMap<>(); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java index 25b510e18e..ce40ea777f 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java @@ -104,7 +104,7 @@ public final class RecursiveFilesystemTraversalFunctionTest extends FoundationTe new ServerDirectories(rootDirectory, outputBase), rootDirectory, analysisMock.getProductName()); - ExternalFilesHelper externalFilesHelper = new ExternalFilesHelper( + ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting( pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories); ConfiguredRuleClassProvider ruleClassProvider = analysisMock.createRuleClassProvider(); 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 ce60452770..278f1d01af 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 @@ -170,7 +170,7 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { new ServerDirectories(rootDirectory, outputBase), rootDirectory, TestConstants.PRODUCT_NAME); - ExternalFilesHelper externalFilesHelper = new ExternalFilesHelper( + ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting( pkgLocator, ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories); diff --git a/src/test/shell/unittest.bash b/src/test/shell/unittest.bash index b51c2aa99a..2609fa8cb2 100644 --- a/src/test/shell/unittest.bash +++ b/src/test/shell/unittest.bash @@ -82,6 +82,8 @@ DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +export BAZEL_SHELL_TEST=1 + #### Configuration variables (may be overridden by testenv.sh or the suite): # This function may be called by testenv.sh or a test suite to enable errexit |