Skip to content

Commit

Permalink
Inform ImportantOutputHandler of the combined coverage report.
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 657272287
Change-Id: If3686dc3d464d2f7e0d1243b55f51a77b4855cd3
  • Loading branch information
justinhorvitz authored and copybara-github committed Jul 29, 2024
1 parent a5509ef commit 9656bdb
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/actions:artifact_owner",
"//src/main/java/com/google/devtools/build/lib/actions:artifacts",
"//src/main/java/com/google/devtools/build/lib/actions:execution_requirements",
"//src/main/java/com/google/devtools/build/lib/actions:important_output_handler",
"//src/main/java/com/google/devtools/build/lib/actions:localhost_capacity",
"//src/main/java/com/google/devtools/build/lib/analysis:actions/compression",
"//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
Expand All @@ -33,7 +34,9 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/events",
"//src/main/java/com/google/devtools/build/lib/exec:spawn_strategy_resolver",
"//src/main/java/com/google/devtools/build/lib/profiler:google-auto-profiler-utils",
"//src/main/java/com/google/devtools/build/lib/util",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
"//src/main/java/com/google/devtools/common/options",
"//third_party:auto_value",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,11 @@
import com.google.devtools.build.lib.actions.ArtifactOwner;
import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.actions.BaseSpawn;
import com.google.devtools.build.lib.actions.EnvironmentalExecException;
import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.actions.ExecutionRequirements;
import com.google.devtools.build.lib.actions.ImportantOutputHandler;
import com.google.devtools.build.lib.actions.ImportantOutputHandler.ImportantOutputException;
import com.google.devtools.build.lib.actions.NotifyOnActionCacheHit;
import com.google.devtools.build.lib.actions.ResourceSet;
import com.google.devtools.build.lib.actions.Spawn;
Expand All @@ -55,7 +58,9 @@
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.exec.SpawnStrategyResolver;
import com.google.devtools.build.lib.profiler.GoogleAutoProfilerUtils;
import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.ArrayList;
import java.util.Collection;
Expand Down Expand Up @@ -118,24 +123,40 @@ private static final class CoverageReportAction extends AbstractAction
}

@Override
public ActionResult execute(ActionExecutionContext actionExecutionContext)
public ActionResult execute(ActionExecutionContext ctx)
throws ActionExecutionException, InterruptedException {
ImmutableMap<String, String> executionInfo =
remotable ? ImmutableMap.of() : ImmutableMap.of(ExecutionRequirements.NO_REMOTE, "");
Spawn spawn = new BaseSpawn(command, ImmutableMap.of(), executionInfo, this, LOCAL_RESOURCES);
try {
ImmutableMap<String, String> executionInfo =
remotable ? ImmutableMap.of() : ImmutableMap.of(ExecutionRequirements.NO_REMOTE, "");
Spawn spawn =
new BaseSpawn(command, ImmutableMap.of(), executionInfo, this, LOCAL_RESOURCES);
ImmutableList<SpawnResult> spawnResults =
actionExecutionContext
.getContext(SpawnStrategyResolver.class)
.exec(spawn, actionExecutionContext);
actionExecutionContext.getEventHandler().handle(Event.info(locationMessage));
ctx.getContext(SpawnStrategyResolver.class).exec(spawn, ctx);
informImportantOutputHandler(ctx);
ctx.getEventHandler().handle(Event.info(locationMessage));
return ActionResult.create(spawnResults);
} catch (ExecException e) {
throw ActionExecutionException.fromExecException(e, this);
}
}

private void informImportantOutputHandler(ActionExecutionContext ctx)
throws EnvironmentalExecException, InterruptedException {
var importantOutputHandler = ctx.getContext(ImportantOutputHandler.class);
if (importantOutputHandler == null) {
return;
}

Path coverageReportOutput = ctx.getPathResolver().toPath(getPrimaryOutput());
try (var ignored =
GoogleAutoProfilerUtils.logged(
"Informing important output handler of coverage report",
ImportantOutputHandler.LOG_THRESHOLD)) {
importantOutputHandler.processTestOutputs(ImmutableList.of(coverageReportOutput));
} catch (ImportantOutputException e) {
throw new EnvironmentalExecException(e, e.getFailureDetail());
}
}

@Override
public String getMnemonic() {
return "CoverageReport";
Expand Down

0 comments on commit 9656bdb

Please sign in to comment.