aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java42
1 files changed, 35 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java b/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
index b7fb391c94..5b78bef4ff 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
@@ -20,29 +20,32 @@ import com.google.common.collect.Multimap;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
+import com.google.devtools.build.lib.buildeventstream.BuildEvent;
+import com.google.devtools.build.lib.buildeventstream.BuildEventId;
+import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos;
+import com.google.devtools.build.lib.buildeventstream.GenericBuildEvent;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.util.io.AnsiTerminalPrinter.Mode;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.view.test.TestStatus.BlazeTestStatus;
import com.google.devtools.build.lib.view.test.TestStatus.FailedTestCasesStatus;
import com.google.devtools.build.lib.view.test.TestStatus.TestCase;
-
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
/**
- * Test summary entry. Stores summary information for a single test rule.
- * Also used to sort summary output by status.
+ * Test summary entry. Stores summary information for a single test rule. Also used to sort summary
+ * output by status.
*
- * <p>Invariant:
- * All TestSummary mutations should be performed through the Builder.
- * No direct TestSummary methods (except the constructor) may mutate the object.
+ * <p>Invariant: All TestSummary mutations should be performed through the Builder. No direct
+ * TestSummary methods (except the constructor) may mutate the object.
*/
@VisibleForTesting // Ideally package-scoped.
-public class TestSummary implements Comparable<TestSummary> {
+public class TestSummary implements Comparable<TestSummary>, BuildEvent {
/**
* Builder class responsible for creating and altering TestSummary objects.
*/
@@ -446,4 +449,29 @@ public class TestSummary implements Comparable<TestSummary> {
? Mode.INFO
: (status == BlazeTestStatus.FLAKY ? Mode.WARNING : Mode.ERROR);
}
+
+ @Override
+ public BuildEventId getEventId() {
+ return BuildEventId.testSummary(target.getTarget().getLabel());
+ }
+
+ @Override
+ public Collection<BuildEventId> getChildrenEvents() {
+ return ImmutableList.of();
+ }
+
+ @Override
+ public BuildEventStreamProtos.BuildEvent asStreamProto() {
+ BuildEventStreamProtos.TestSummary.Builder summaryBuilder =
+ BuildEventStreamProtos.TestSummary.newBuilder().setTotalRunCount(totalRuns());
+ for (Path path : getFailedLogs()) {
+ summaryBuilder.addFailed(
+ BuildEventStreamProtos.File.newBuilder().setUri(path.toString()).build());
+ }
+ for (Path path : getPassedLogs()) {
+ summaryBuilder.addPassed(
+ BuildEventStreamProtos.File.newBuilder().setUri(path.toString()).build());
+ }
+ return GenericBuildEvent.protoChaining(this).setTestSummary(summaryBuilder.build()).build();
+ }
}