Model the TopLevelArtifactContext as an argument to the CompletionFunction rather than a PRECOMPUTED value.

Having a stale TopLevelArtifactContext leads to invalidation of all the top level target nodes, causing time wasted due to a lot of cache hits for a null build.

--
MOS_MIGRATED_REVID=127585059
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionFunction.java
index 13a2d95..cdb22dd 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionFunction.java
@@ -16,6 +16,7 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.LabelAndConfiguration;
+import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.rules.test.TestProvider;
 import com.google.devtools.build.skyframe.SkyFunction;
@@ -36,8 +37,9 @@
   public SkyValue compute(SkyKey skyKey, Environment env) {
     TestCompletionValue.TestCompletionKey key =
         (TestCompletionValue.TestCompletionKey) skyKey.argument();
-    LabelAndConfiguration lac = key.getLabelAndConfiguration();
-    if (env.getValue(TargetCompletionValue.key(lac)) == null) {
+    LabelAndConfiguration lac = key.labelAndConfiguration();
+    TopLevelArtifactContext ctx = key.topLevelArtifactContext();
+    if (env.getValue(TargetCompletionValue.key(lac, ctx)) == null) {
       return null;
     }
 
@@ -48,7 +50,7 @@
     }
 
     ConfiguredTarget ct = ctValue.getConfiguredTarget();
-    if (key.isExclusiveTesting()) {
+    if (key.exclusiveTesting()) {
       // Request test artifacts iteratively if testing exclusively.
       for (Artifact testArtifact : TestProvider.getTestStatusArtifacts(ct)) {
         if (env.getValue(ArtifactValue.key(testArtifact, /*isMandatory=*/true)) == null) {