aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2018-05-03 12:41:33 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-03 12:44:07 -0700
commit807bdbc722c8318548a1e0952053de32f7ef96b6 (patch)
tree4f35a1c0126fc13a6bd7af227075a56f7e22d987 /src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java
parentf6fb60a1bdc007c2508c5a18f1c633bef2dab0ea (diff)
Replace Rule field in TestsInSuiteKey with a Label. In TestsInSuiteFunction,
request the Package for that Label, and in that way materialize the Rule. Rule instances (which have a reference back to their Package) should not be in SkyKeys, since they are large and slow down serialization. PiperOrigin-RevId: 195294804
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java
index 818ece3a85..3e68de0099 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java
@@ -53,8 +53,13 @@ final class TestsInSuiteFunction implements SkyFunction {
@Override
public SkyValue compute(SkyKey key, Environment env) throws InterruptedException {
TestsInSuiteKey expansion = (TestsInSuiteKey) key.argument();
- ResolvedTargets<Target> result =
- computeTestsInSuite(env, expansion.getTestSuite(), expansion.isStrict());
+ SkyKey packageKey = PackageValue.key(expansion.getTestSuiteLabel().getPackageIdentifier());
+ PackageValue pkg = (PackageValue) env.getValue(packageKey);
+ if (env.valuesMissing()) {
+ return null;
+ }
+ Rule testSuite = pkg.getPackage().getRule(expansion.getTestSuiteLabel().getName());
+ ResolvedTargets<Target> result = computeTestsInSuite(env, testSuite, expansion.isStrict());
if (env.valuesMissing()) {
return null;
}