aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/buildtool
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-03-27 12:40:58 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-27 12:42:33 -0700
commitc9dcf83ccdeced9a68ab1d5719e51c51e9881fd2 (patch)
tree30dbdf8200a63e6f78f8a6633e148fedb08ba850 /src/main/java/com/google/devtools/build/lib/buildtool
parentf39f893363eb9f69262d0f6ce981a7995b1f2cf5 (diff)
Thread configuration map through TestFilteringCompleteEvent. This isn't the most elegant solution, but I don't have a better idea.
PiperOrigin-RevId: 190656869
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/buildtool')
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java32
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java14
2 files changed, 43 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
index 00138b3125..ed9024a4d0 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
@@ -18,6 +18,7 @@ import com.google.common.base.Preconditions;
import com.google.common.base.Stopwatch;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.BuildFailedException;
import com.google.devtools.build.lib.actions.TestExecException;
import com.google.devtools.build.lib.analysis.AnalysisPhaseCompleteEvent;
@@ -66,15 +67,19 @@ import com.google.devtools.build.lib.profiler.ProfilePhase;
import com.google.devtools.build.lib.profiler.Profiler;
import com.google.devtools.build.lib.runtime.BlazeRuntime;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
import com.google.devtools.build.lib.util.AbruptExitException;
import com.google.devtools.build.lib.util.ExitCode;
import com.google.devtools.build.lib.util.RegexFilter;
import com.google.devtools.common.options.OptionsParsingException;
import java.util.Collection;
+import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import java.util.regex.Pattern;
+import java.util.stream.Stream;
/**
* Provides the bulk of the implementation of the 'blaze build' command.
@@ -489,8 +494,31 @@ public class BuildTool {
env.getEventBus().post(new AnalysisPhaseCompleteEvent(analysisResult.getTargetsToBuild(),
view.getTargetsVisited(), timer.stop().elapsed(TimeUnit.MILLISECONDS),
view.getAndClearPkgManagerStatistics()));
- env.getEventBus().post(new TestFilteringCompleteEvent(analysisResult.getTargetsToBuild(),
- analysisResult.getTargetsToTest()));
+ ImmutableSet<BuildConfigurationValue.Key> configurationKeys =
+ Stream.concat(
+ analysisResult
+ .getTargetsToBuild()
+ .stream()
+ .map(ConfiguredTarget::getConfigurationKey)
+ .distinct(),
+ analysisResult.getTargetsToTest() == null
+ ? Stream.empty()
+ : analysisResult
+ .getTargetsToTest()
+ .stream()
+ .map(ConfiguredTarget::getConfigurationKey)
+ .distinct())
+ .filter(Objects::nonNull)
+ .distinct()
+ .collect(ImmutableSet.toImmutableSet());
+ Map<BuildConfigurationValue.Key, BuildConfiguration> configurationMap =
+ env.getSkyframeExecutor().getConfigurations(env.getReporter(), configurationKeys);
+ env.getEventBus()
+ .post(
+ new TestFilteringCompleteEvent(
+ analysisResult.getTargetsToBuild(),
+ analysisResult.getTargetsToTest(),
+ configurationMap));
// Check licenses.
// We check licenses if the first target configuration has license checking enabled. Right now,
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java
index b205763cf7..d8e8876493 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java
@@ -17,8 +17,11 @@ package com.google.devtools.build.lib.buildtool.buildevent;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
+import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.test.TestProvider;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
import java.util.Collection;
+import java.util.Map;
import javax.annotation.concurrent.Immutable;
/**
@@ -31,17 +34,22 @@ import javax.annotation.concurrent.Immutable;
public class TestFilteringCompleteEvent {
private final Collection<ConfiguredTarget> targets;
private final Collection<ConfiguredTarget> testTargets;
+ private final Map<BuildConfigurationValue.Key, BuildConfiguration> configurationMap;
/**
* Construct the event.
+ *
* @param targets The set of active targets that remain.
* @param testTargets The collection of tests to be run. May be null.
+ * @param configurationMap A map from configuration keys of all targets to the configurations.
*/
public TestFilteringCompleteEvent(
Collection<? extends ConfiguredTarget> targets,
- Collection<? extends ConfiguredTarget> testTargets) {
+ Collection<? extends ConfiguredTarget> testTargets,
+ Map<BuildConfigurationValue.Key, BuildConfiguration> configurationMap) {
this.targets = ImmutableList.copyOf(targets);
this.testTargets = testTargets == null ? null : ImmutableList.copyOf(testTargets);
+ this.configurationMap = configurationMap;
if (testTargets == null) {
return;
}
@@ -65,4 +73,8 @@ public class TestFilteringCompleteEvent {
public Collection<ConfiguredTarget> getTestTargets() {
return testTargets;
}
+
+ public BuildConfiguration getConfigurationForTarget(ConfiguredTarget target) {
+ return Preconditions.checkNotNull(configurationMap.get(target.getConfigurationKey()));
+ }
}