aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ExternalFilesHelper.java41
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/util/io/TimestampGranularityMonitor.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/repository/ExternalPackageUtilTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/FilesetEntryFunctionTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/GlobFunctionTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java2
-rw-r--r--src/test/shell/unittest.bash2
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