Pass only the top-level artifacts to `ExecutorLifecycleListener` and make the computation more efficient.
Delete the now unused `ArtifactsToOwnerLabels`.
PiperOrigin-RevId: 372152937
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/ArtifactsToOwnerLabelsTest.java b/src/test/java/com/google/devtools/build/lib/analysis/ArtifactsToOwnerLabelsTest.java
deleted file mode 100644
index 6f3bebc..0000000
--- a/src/test/java/com/google/devtools/build/lib/analysis/ArtifactsToOwnerLabelsTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2018 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.analysis;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.cmdline.Label;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-import org.mockito.Mockito;
-
-/** Tests for {@link ArtifactsToOwnerLabels}. */
-@RunWith(JUnit4.class)
-public class ArtifactsToOwnerLabelsTest {
- @Test
- public void smoke() {
- Artifact label1Artifact = Mockito.mock(Artifact.class);
- Label label1 = Label.parseAbsoluteUnchecked("//label:one");
- Mockito.when(label1Artifact.getOwnerLabel()).thenReturn(label1);
- ArtifactsToOwnerLabels underTest =
- new ArtifactsToOwnerLabels.Builder().addArtifact(label1Artifact).build();
- assertThat(underTest.getOwners(label1Artifact)).containsExactly(label1);
- underTest = new ArtifactsToOwnerLabels.Builder().addArtifact(label1Artifact, label1).build();
- assertThat(underTest.getOwners(label1Artifact)).containsExactly(label1);
- underTest =
- new ArtifactsToOwnerLabels.Builder()
- .addArtifact(label1Artifact)
- .addArtifact(label1Artifact, label1)
- .build();
- assertThat(underTest.getOwners(label1Artifact)).containsExactly(label1);
- underTest =
- new ArtifactsToOwnerLabels.Builder()
- .addArtifact(label1Artifact, label1)
- .addArtifact(label1Artifact)
- .build();
- assertThat(underTest.getOwners(label1Artifact)).containsExactly(label1);
- Label label2 = Label.parseAbsoluteUnchecked("//label:two");
- underTest =
- new ArtifactsToOwnerLabels.Builder()
- .addArtifact(label1Artifact, label2)
- .addArtifact(label1Artifact)
- .build();
- assertThat(underTest.getOwners(label1Artifact)).containsExactly(label1, label2);
- underTest =
- new ArtifactsToOwnerLabels.Builder()
- .addArtifact(label1Artifact)
- .addArtifact(label1Artifact, label2)
- .build();
- assertThat(underTest.getOwners(label1Artifact)).containsExactly(label1, label2);
- }
-}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
index deaf363..a1f9d2a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
@@ -64,7 +64,7 @@
public class AspectTest extends AnalysisTestCase {
private void pkg(String name, String... contents) throws Exception {
- scratch.file("" + name + "/BUILD", contents);
+ scratch.file(name + "/BUILD", contents);
}
@Test
@@ -628,7 +628,7 @@
// Get owners of all extra-action artifacts.
List<Label> extraArtifactOwners = new ArrayList<>();
- for (Artifact artifact : analysisResult.getTopLevelArtifactsToOwnerLabels().getArtifacts()) {
+ for (Artifact artifact : analysisResult.getArtifactsToBuild()) {
if (artifact.getRootRelativePathString().endsWith(".xa")) {
extraArtifactOwners.add(artifact.getOwnerLabel());
}
@@ -642,7 +642,7 @@
// Get owners of all extra-action artifacts.
List<Label> extraArtifactOwners = new ArrayList<>();
- for (Artifact artifact : analysisResult.getTopLevelArtifactsToOwnerLabels().getArtifacts()) {
+ for (Artifact artifact : analysisResult.getArtifactsToBuild()) {
if (artifact.getRootRelativePathString().endsWith(".xa")) {
extraArtifactOwners.add(artifact.getOwnerLabel());
}
@@ -841,9 +841,7 @@
@Test
public void aspectApplyingToFiles() throws Exception {
AspectApplyingToFiles aspectApplyingToFiles = new AspectApplyingToFiles();
- setRulesAndAspectsAvailableInTests(
- ImmutableList.<NativeAspectClass>of(aspectApplyingToFiles),
- ImmutableList.<RuleDefinition>of());
+ setRulesAndAspectsAvailableInTests(ImmutableList.of(aspectApplyingToFiles), ImmutableList.of());
pkg(
"a",
"java_binary(name = 'x', main_class = 'x.FooBar', srcs = ['x.java'])"
@@ -861,9 +859,7 @@
@Test
public void aspectApplyingToSourceFilesIgnored() throws Exception {
AspectApplyingToFiles aspectApplyingToFiles = new AspectApplyingToFiles();
- setRulesAndAspectsAvailableInTests(
- ImmutableList.<NativeAspectClass>of(aspectApplyingToFiles),
- ImmutableList.<RuleDefinition>of());
+ setRulesAndAspectsAvailableInTests(ImmutableList.of(aspectApplyingToFiles), ImmutableList.of());
pkg(
"a",
"java_binary(name = 'x', main_class = 'x.FooBar', srcs = ['x.java'])"
@@ -879,9 +875,7 @@
@Test
public void duplicateAspectsDeduped() throws Exception {
AspectApplyingToFiles aspectApplyingToFiles = new AspectApplyingToFiles();
- setRulesAndAspectsAvailableInTests(
- ImmutableList.<NativeAspectClass>of(aspectApplyingToFiles),
- ImmutableList.<RuleDefinition>of());
+ setRulesAndAspectsAvailableInTests(ImmutableList.of(aspectApplyingToFiles), ImmutableList.of());
pkg("a", "java_binary(name = 'x', main_class = 'x.FooBar', srcs = ['x.java'])");
AnalysisResult analysisResult =
update(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/BUILD
index b287c02..1bfe049 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BUILD
@@ -55,7 +55,6 @@
"//src/main/java/com/google/devtools/build/lib/analysis:actions/template",
"//src/main/java/com/google/devtools/build/lib/analysis:actions/template_expansion_action",
"//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
- "//src/main/java/com/google/devtools/build/lib/analysis:artifacts_to_owner_labels",
"//src/main/java/com/google/devtools/build/lib/analysis:aspect_aware_attribute_mapper",
"//src/main/java/com/google/devtools/build/lib/analysis:aspect_collection",
"//src/main/java/com/google/devtools/build/lib/analysis:blaze_directories",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
index 77bd10bd..3692817 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
@@ -1300,7 +1300,7 @@
AnalysisResult analysisResult = update("//x:a");
List<String> owners = new ArrayList<>();
- for (Artifact artifact : analysisResult.getTopLevelArtifactsToOwnerLabels().getArtifacts()) {
+ for (Artifact artifact : analysisResult.getArtifactsToBuild()) {
if ("xa".equals(artifact.getExtension())) {
owners.add(artifact.getOwnerLabel().toString());
}
diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/BUILD b/src/test/java/com/google/devtools/build/lib/buildtool/BUILD
index 7dd46cf..1c14e9b 100644
--- a/src/test/java/com/google/devtools/build/lib/buildtool/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/buildtool/BUILD
@@ -145,7 +145,7 @@
deps = [
"//src/main/java/com/google/devtools/build/lib:runtime",
"//src/main/java/com/google/devtools/build/lib/actions",
- "//src/main/java/com/google/devtools/build/lib/analysis:artifacts_to_owner_labels",
+ "//src/main/java/com/google/devtools/build/lib/actions:artifacts",
"//src/main/java/com/google/devtools/build/lib/exec:executor_builder",
"//src/main/java/com/google/devtools/build/lib/exec:executor_lifecycle_listener",
"//src/main/java/com/google/devtools/build/lib/util:abrupt_exit_exception",
diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/ContextProviderInitializationTest.java b/src/test/java/com/google/devtools/build/lib/buildtool/ContextProviderInitializationTest.java
index 383314e..83c6f8c 100644
--- a/src/test/java/com/google/devtools/build/lib/buildtool/ContextProviderInitializationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/buildtool/ContextProviderInitializationTest.java
@@ -15,10 +15,10 @@
import static org.junit.Assert.assertThrows;
-import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.ActionGraph;
-import com.google.devtools.build.lib.analysis.ArtifactsToOwnerLabels;
+import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.buildtool.util.BuildIntegrationTestCase;
import com.google.devtools.build.lib.exec.ExecutorBuilder;
import com.google.devtools.build.lib.exec.ExecutorLifecycleListener;
@@ -30,10 +30,12 @@
import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
import com.google.devtools.build.lib.util.AbruptExitException;
import com.google.devtools.build.lib.util.DetailedExitCode;
+import java.util.function.Supplier;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+
/**
* Test to make sure that context provider initialization failure is handled correctly.
*/
@@ -51,8 +53,7 @@
@Override
public void executionPhaseStarting(
- ActionGraph actionGraph,
- Supplier<ArtifactsToOwnerLabels> topLevelArtifactsToAccountingGroups)
+ ActionGraph actionGraph, Supplier<ImmutableSet<Artifact>> topLevelArtifacts)
throws AbruptExitException {
throw new AbruptExitException(
DetailedExitCode.of(
@@ -75,7 +76,7 @@
}
@Test
- public void testContextProviderInitializationFailure() throws Exception {
+ public void testContextProviderInitializationFailure() {
assertThrows(AbruptExitException.class, () -> runtimeWrapper.executeBuild(ImmutableList.of()));
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkDefinedAspectsTest.java b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkDefinedAspectsTest.java
index 7476aad..92800ae 100644
--- a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkDefinedAspectsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkDefinedAspectsTest.java
@@ -166,7 +166,7 @@
assertThat(configuredAspect.get(barKey).getProvider().getKey()).isEqualTo(barKey);
}
- private Iterable<String> getAspectDescriptions(AnalysisResult analysisResult) {
+ private static Iterable<String> getAspectDescriptions(AnalysisResult analysisResult) {
return Iterables.transform(
analysisResult.getAspectsMap().keySet(),
aspectKey ->
@@ -214,7 +214,7 @@
.containsExactly("@local//:aspect.bzl%MyAspect(//test:xxx)");
}
- private Iterable<String> getLabelsToBuild(AnalysisResult analysisResult) {
+ private static Iterable<String> getLabelsToBuild(AnalysisResult analysisResult) {
return Iterables.transform(
analysisResult.getTargetsToBuild(),
configuredTarget -> configuredTarget.getLabel().toString());
@@ -1219,7 +1219,7 @@
reporter.removeHandler(failFastHandler);
try {
- AnalysisResult result = update(ImmutableList.<String>of(), "//test:xxx");
+ AnalysisResult result = update(ImmutableList.of(), "//test:xxx");
assertThat(keepGoing()).isTrue();
assertThat(result.hasError()).isTrue();
} catch (Exception e) {
@@ -1252,7 +1252,7 @@
reporter.removeHandler(failFastHandler);
try {
- AnalysisResult result = update(ImmutableList.<String>of(), "//test:xxx");
+ AnalysisResult result = update(ImmutableList.of(), "//test:xxx");
assertThat(keepGoing()).isTrue();
assertThat(result.hasError()).isTrue();
} catch (Exception e) {
@@ -1287,7 +1287,7 @@
reporter.removeHandler(failFastHandler);
try {
- AnalysisResult result = update(ImmutableList.<String>of(), "//test:xxx");
+ AnalysisResult result = update(ImmutableList.of(), "//test:xxx");
assertThat(keepGoing()).isTrue();
assertThat(result.hasError()).isTrue();
} catch (Exception e) {
@@ -1319,7 +1319,7 @@
reporter.removeHandler(failFastHandler);
try {
- AnalysisResult result = update(ImmutableList.<String>of(), "//test:xxx");
+ AnalysisResult result = update(ImmutableList.of(), "//test:xxx");
assertThat(keepGoing()).isTrue();
assertThat(result.hasError()).isTrue();
} catch (Exception e) {
@@ -1357,7 +1357,7 @@
reporter.removeHandler(failFastHandler);
try {
- AnalysisResult result = update(ImmutableList.<String>of(), "//test:xxx");
+ AnalysisResult result = update(ImmutableList.of(), "//test:xxx");
assertThat(keepGoing()).isTrue();
assertThat(result.hasError()).isTrue();
} catch (Exception e) {
@@ -1390,7 +1390,7 @@
"load('//test:aspect.bzl', 'my_rule')",
"my_rule(name = 'xxx', my_attr = 'aaa')");
- AnalysisResult result = update(ImmutableList.<String>of(), "//test:xxx");
+ AnalysisResult result = update(ImmutableList.of(), "//test:xxx");
assertThat(result.hasError()).isFalse();
}
@@ -1413,7 +1413,7 @@
")");
scratch.file("test/BUILD", "load('//test:aspect.bzl', 'my_rule')", "my_rule(name = 'xxx')");
- AnalysisResult result = update(ImmutableList.<String>of(), "//test:xxx");
+ AnalysisResult result = update(ImmutableList.of(), "//test:xxx");
assertThat(result.hasError()).isFalse();
}
@@ -1466,7 +1466,7 @@
")");
scratch.file("test/BUILD", "load('//test:aspect.bzl', 'my_rule')", "my_rule(name = 'xxx')");
- AnalysisResult result = update(ImmutableList.<String>of(), "//test:xxx");
+ AnalysisResult result = update(ImmutableList.of(), "//test:xxx");
assertThat(result.hasError()).isFalse();
}
@@ -1494,7 +1494,7 @@
"load('//test:aspect.bzl', 'my_rule')",
"my_rule(name = 'xxx', my_attr = 'b')");
- AnalysisResult result = update(ImmutableList.<String>of(), "//test:xxx");
+ AnalysisResult result = update(ImmutableList.of(), "//test:xxx");
assertThat(result.hasError()).isFalse();
}
@@ -1519,35 +1519,35 @@
"foo/BUILD",
"load(':extension.bzl', 'my_rule')",
"my_rule(name = 'main', exe1 = ':tool.sh', exe2 = ':tool.sh')");
- AnalysisResult analysisResultOfRule = update(ImmutableList.<String>of(), "//foo:main");
+ AnalysisResult analysisResultOfRule = update(ImmutableList.of(), "//foo:main");
assertThat(analysisResultOfRule.hasError()).isFalse();
AnalysisResult analysisResultOfAspect =
- update(ImmutableList.<String>of("/foo/extension.bzl%my_aspect"), "//foo:main");
+ update(ImmutableList.of("/foo/extension.bzl%my_aspect"), "//foo:main");
assertThat(analysisResultOfAspect.hasError()).isFalse();
}
@Test
public void aspectFragmentAccessSuccess() throws Exception {
- getConfiguredTargetForAspectFragment(
+ analyzeConfiguredTargetForAspectFragment(
"ctx.fragments.java.strict_java_deps", "'java'", "", "", "");
assertNoEvents();
}
@Test
public void aspectHostFragmentAccessSuccess() throws Exception {
- getConfiguredTargetForAspectFragment(
+ analyzeConfiguredTargetForAspectFragment(
"ctx.host_fragments.java.strict_java_deps", "", "'java'", "", "");
assertNoEvents();
}
@Test
- public void aspectFragmentAccessError() throws Exception {
+ public void aspectFragmentAccessError() {
reporter.removeHandler(failFastHandler);
assertThrows(
ViewCreationFailedException.class,
() ->
- getConfiguredTargetForAspectFragment(
+ analyzeConfiguredTargetForAspectFragment(
"ctx.fragments.java.strict_java_deps", "'cpp'", "'java'", "'java'", ""));
assertContainsEvent(
"//test:aspect.bzl%MyAspect aspect on my_rule has to declare 'java' as a "
@@ -1557,12 +1557,12 @@
}
@Test
- public void aspectHostFragmentAccessError() throws Exception {
+ public void aspectHostFragmentAccessError() {
reporter.removeHandler(failFastHandler);
assertThrows(
ViewCreationFailedException.class,
() ->
- getConfiguredTargetForAspectFragment(
+ analyzeConfiguredTargetForAspectFragment(
"ctx.host_fragments.java.java_strict_deps", "'java'", "'cpp'", "", "'java'"));
assertContainsEvent(
"//test:aspect.bzl%MyAspect aspect on my_rule has to declare 'java' as a "
@@ -1571,7 +1571,7 @@
+ "(for example: host_fragments = [\"java\"])");
}
- private ConfiguredTarget getConfiguredTargetForAspectFragment(
+ private void analyzeConfiguredTargetForAspectFragment(
String fullFieldName,
String fragments,
String hostFragments,
@@ -1624,7 +1624,7 @@
.build());
}
- return getConfiguredTarget("//test:xxx");
+ assertThat(getConfiguredTarget("//test:xxx")).isNotNull();
}
@Test
@@ -1646,14 +1646,14 @@
}
private void buildTargetAndCheckRuleInfo(String... expectedLabels) throws Exception {
- AnalysisResult result = update(ImmutableList.<String>of(), "//test:r2");
+ AnalysisResult result = update(ImmutableList.of(), "//test:r2");
ConfiguredTarget configuredTarget = result.getTargetsToBuild().iterator().next();
Depset ruleInfoValue = (Depset) configuredTarget.get("rule_info");
assertThat(ruleInfoValue.getSet(String.class).toList())
.containsExactlyElementsIn(expectedLabels);
}
- private String[] aspectBzlFile(String attrAspects) {
+ private static String[] aspectBzlFile(String attrAspects) {
return new String[] {
"def _repro_aspect_impl(target, ctx):",
" s = depset([str(target.label)], transitive =",
@@ -1718,7 +1718,7 @@
"rule_bin_out(name = 'rbin')",
"rule_gen_out(name = 'rgen')",
"main_rule(name = 'main', deps = [':rbin', ':rgen'])");
- AnalysisResult analysisResult = update(ImmutableList.<String>of(), "//foo:main");
+ AnalysisResult analysisResult = update(ImmutableList.of(), "//foo:main");
ConfiguredTarget target = analysisResult.getTargetsToBuild().iterator().next();
NestedSet<Artifact> aspectFiles = ((Depset) target.get("aspect_files")).getSet(Artifact.class);
assertThat(Iterables.transform(aspectFiles.toList(), Artifact::getFilename))
@@ -1823,11 +1823,8 @@
"java_library(name = 'xxx')");
useConfiguration("--experimental_action_listener=//test:al");
AnalysisResult analysisResult =
- update(ImmutableList.<String>of("test/aspect.bzl%my_aspect"), "//test:xxx");
- assertThat(
- Iterables.transform(
- analysisResult.getTopLevelArtifactsToOwnerLabels().getArtifacts(),
- Artifact::getFilename))
+ update(ImmutableList.of("test/aspect.bzl%my_aspect"), "//test:xxx");
+ assertThat(Iterables.transform(analysisResult.getArtifactsToBuild(), Artifact::getFilename))
.contains("file.xa");
}
@@ -1950,7 +1947,7 @@
"r2(name = 'r2', dep = ':r1')");
AnalysisResult analysisResult = update("//test:r2");
ConfiguredTarget target = Iterables.getOnlyElement(analysisResult.getTargetsToBuild());
- Sequence<?> result = (Sequence) target.get("result");
+ Sequence<?> result = (Sequence<?>) target.get("result");
// "yes" means that aspect a2 sees a1's providers.
assertThat(result)
@@ -2014,7 +2011,7 @@
"rcollect(name = 'rcollect', deps = [':r1', ':r2'])");
AnalysisResult analysisResult = update("//test:rcollect");
ConfiguredTarget target = Iterables.getOnlyElement(analysisResult.getTargetsToBuild());
- Sequence<?> result = (Sequence) target.get("result");
+ Sequence<?> result = (Sequence<?>) target.get("result");
assertThat(result)
.containsExactly(
"//test:r0[\"//test:aspect.bzl%a1\", \"//test:aspect.bzl%a3\"]=a1p",
@@ -2064,7 +2061,7 @@
"r2(name = 'r2', dep = ':r1')");
AnalysisResult analysisResult = update("//test:r2");
ConfiguredTarget target = Iterables.getOnlyElement(analysisResult.getTargetsToBuild());
- Sequence<?> result = (Sequence) target.get("result");
+ Sequence<?> result = (Sequence<?>) target.get("result");
// "yes" means that aspect a2 sees a1's providers.
assertThat(result)
.containsExactly(