diff options
author | cpeyser <cpeyser@google.com> | 2018-05-03 12:41:33 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-05-03 12:44:07 -0700 |
commit | 807bdbc722c8318548a1e0952053de32f7ef96b6 (patch) | |
tree | 4f35a1c0126fc13a6bd7af227075a56f7e22d987 /src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteFunction.java | |
parent | f6fb60a1bdc007c2508c5a18f1c633bef2dab0ea (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.java | 9 |
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; } |