aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2018-07-04 08:55:42 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-04 08:57:40 -0700
commit2348a75882bda4ed8b983fd4f8af2c45fa292e10 (patch)
tree50e6b82eb7c4d7ba1556a7696e266b630082e87f /src/main/java/com/google
parent9b6208c6d74a5d485bed43f4a214f331e32d8ef6 (diff)
Include more information about build events' referenced local files.
Instead of just a path, events now include information about the type of file (output, source file, stdout/stderr, test logs, etc.). This information can be used by the uploaders to determine a) whether to upload, b) what kind of lease to give the files. RELNOTES: None PiperOrigin-RevId: 203285549
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ActionExecutedEvent.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEvent.java61
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploader.java28
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventstream/transports/FileTransport.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/TestAttempt.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/NamedArtifactGroup.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java16
11 files changed, 144 insertions, 70 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutedEvent.java b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutedEvent.java
index a4fa28be5e..372c5598ec 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutedEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutedEvent.java
@@ -17,8 +17,8 @@ package com.google.devtools.build.lib.actions;
import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.buildeventstream.BuildEvent;
+import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile.LocalFileType;
import com.google.devtools.build.lib.buildeventstream.BuildEventContext;
import com.google.devtools.build.lib.buildeventstream.BuildEventId;
import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos;
@@ -118,18 +118,18 @@ public class ActionExecutedEvent implements BuildEventWithConfiguration, Progres
}
@Override
- public ImmutableSet<Path> referencedLocalFiles() {
- ImmutableSet.Builder<Path> artifacts = ImmutableSet.builder();
+ public Collection<LocalFile> referencedLocalFiles() {
+ ImmutableList.Builder<LocalFile> localFiles = ImmutableList.builder();
if (stdout != null) {
- artifacts.add(stdout);
+ localFiles.add(new LocalFile(stdout, LocalFileType.STDOUT));
}
if (stderr != null) {
- artifacts.add(stderr);
+ localFiles.add(new LocalFile(stderr, LocalFileType.STDERR));
}
if (exception == null) {
- artifacts.add(action.getPrimaryOutput().getPath());
+ localFiles.add(new LocalFile(action.getPrimaryOutput().getPath(), LocalFileType.OUTPUT));
}
- return artifacts.build();
+ return localFiles.build();
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
index adb71f4f9d..4ae435e091 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
@@ -29,6 +29,7 @@ import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
import com.google.devtools.build.lib.analysis.test.TestProvider;
import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
import com.google.devtools.build.lib.buildeventstream.BuildEvent;
+import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile.LocalFileType;
import com.google.devtools.build.lib.buildeventstream.BuildEventContext;
import com.google.devtools.build.lib.buildeventstream.BuildEventId;
import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos;
@@ -278,12 +279,15 @@ public final class TargetCompleteEvent
}
@Override
- public ImmutableSet<Path> referencedLocalFiles() {
- ImmutableSet.Builder<Path> builder = ImmutableSet.builder();
+ public Collection<LocalFile> referencedLocalFiles() {
+ ImmutableList.Builder<LocalFile> builder = ImmutableList.builder();
for (ArtifactsInOutputGroup group : outputs) {
if (group.areImportant()) {
for (Artifact artifact : group.getArtifacts()) {
- builder.add(artifact.getPath());
+ builder.add(
+ new LocalFile(
+ artifact.getPath(),
+ artifact.isSourceArtifact() ? LocalFileType.SOURCE : LocalFileType.OUTPUT));
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java
index f5afa63a22..cb02ae3693 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java
@@ -27,6 +27,7 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableMap;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
@@ -35,6 +36,7 @@ import com.google.devtools.build.lib.buildeventservice.client.BuildEventServiceC
import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
import com.google.devtools.build.lib.buildeventstream.BuildCompletingEvent;
import com.google.devtools.build.lib.buildeventstream.BuildEvent;
+import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile;
import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader;
import com.google.devtools.build.lib.buildeventstream.BuildEventContext;
import com.google.devtools.build.lib.buildeventstream.BuildEventProtocolOptions;
@@ -50,6 +52,7 @@ import com.google.devtools.build.lib.util.AbruptExitException;
import com.google.devtools.build.lib.util.ExitCode;
import com.google.devtools.build.lib.util.JavaSleeper;
import com.google.devtools.build.lib.util.Sleeper;
+import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.v1.BuildStatus.Result;
import com.google.devtools.build.v1.PublishBuildToolEventStreamRequest;
import com.google.devtools.build.v1.PublishBuildToolEventStreamResponse;
@@ -57,6 +60,7 @@ import com.google.devtools.build.v1.PublishLifecycleEventRequest;
import com.google.protobuf.Any;
import io.grpc.Status;
import java.time.Duration;
+import java.util.Collection;
import java.util.Deque;
import java.util.Set;
import java.util.concurrent.BlockingDeque;
@@ -310,8 +314,13 @@ public class BuildEventServiceTransport implements BuildEventTransport {
}
}
- ListenableFuture<PathConverter> upload =
- artifactUploader.upload(event.referencedLocalFiles());
+ Collection<LocalFile> localFiles = event.referencedLocalFiles();
+ ImmutableMap.Builder<Path, LocalFile> localFileMap =
+ ImmutableMap.builderWithExpectedSize(localFiles.size());
+ for (LocalFile localFile : localFiles) {
+ localFileMap.put(localFile.path, localFile);
+ }
+ ListenableFuture<PathConverter> upload = artifactUploader.upload(localFileMap.build());
InternalOrderedBuildEvent buildEvent = new DefaultInternalOrderedBuildEvent(event, namer,
upload, besProtoUtil.nextSequenceNumber());
sendOrderedBuildEvent(buildEvent);
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEvent.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEvent.java
index 6d6900687c..cee573cae2 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEvent.java
@@ -14,10 +14,11 @@
package com.google.devtools.build.lib.buildeventstream;
-import com.google.common.collect.ImmutableSet;
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.vfs.Path;
-import java.util.Set;
+import java.util.Collection;
/**
* Interface for objects that can be posted on the public event stream.
@@ -28,6 +29,52 @@ import java.util.Set;
public interface BuildEvent extends ChainableEvent, ExtendedEventHandler.Postable {
/**
+ * A local file that is referenced by the build event. These can be uploaded to a separate backend
+ * storage.
+ */
+ final class LocalFile {
+
+ /**
+ * The type of the local file. This is used by uploaders to determine how long to store the
+ * associated files for.
+ */
+ public enum LocalFileType {
+ SOURCE,
+ OUTPUT,
+ SUCCESSFUL_TEST_OUTPUT,
+ FAILED_TEST_OUTPUT,
+ STDOUT,
+ STDERR,
+ LOG,
+ }
+
+ public final Path path;
+ public final LocalFileType type;
+
+ public LocalFile(Path path, LocalFileType type) {
+ this.path = path;
+ this.type = type;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ LocalFile localFile = (LocalFile) o;
+ return Objects.equal(path, localFile.path) && type == localFile.type;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(path, type);
+ }
+ }
+
+ /**
* Returns a list of files that are referenced in the protobuf representation returned by {@link
* #asStreamProto(BuildEventContext)}.
*
@@ -35,13 +82,11 @@ public interface BuildEvent extends ChainableEvent, ExtendedEventHandler.Postabl
* only returns files directly referenced in the protobuf returned by {@link
* #asStreamProto(BuildEventContext)}.
*
- * <p>Note the consistency requirement - you must not attempt to pass Path objects to the
- * {@link PathConverter} unless you have returned the Path object here.
+ * <p>Note the consistency requirement - you must not attempt to pass Path objects to the {@link
+ * PathConverter} unless you have returned a corresponding {@link LocalFile} object here.
*/
- // TODO(ulfjack): Consider moving the upload call to the BuildEventContext and returning a map
- // from Path to URI, rather than a callback.
- default Set<Path> referencedLocalFiles() {
- return ImmutableSet.of();
+ default Collection<LocalFile> referencedLocalFiles() {
+ return ImmutableList.of();
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploader.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploader.java
index 5c1fe9c5b2..3f536325db 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploader.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploader.java
@@ -15,30 +15,32 @@ package com.google.devtools.build.lib.buildeventstream;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile;
import com.google.devtools.build.lib.buildeventstream.PathConverter.FileUriPathConverter;
import com.google.devtools.build.lib.vfs.Path;
-import java.util.Set;
+import java.util.Map;
/** Uploads artifacts referenced by the Build Event Protocol (BEP). */
public interface BuildEventArtifactUploader {
- BuildEventArtifactUploader LOCAL_FILES_UPLOADER = new BuildEventArtifactUploader() {
- private final ListenableFuture<PathConverter> completedPathConverter =
- Futures.immediateFuture(new FileUriPathConverter());
+ BuildEventArtifactUploader LOCAL_FILES_UPLOADER =
+ new BuildEventArtifactUploader() {
+ private final ListenableFuture<PathConverter> completedPathConverter =
+ Futures.immediateFuture(new FileUriPathConverter());
- @Override
- public ListenableFuture<PathConverter> upload(Set<Path> files) {
- return completedPathConverter;
- }
- };
+ @Override
+ public ListenableFuture<PathConverter> upload(Map<Path, LocalFile> files) {
+ return completedPathConverter;
+ }
+ };
/**
- * Asynchronously uploads a set of files referenced by the protobuf representation of a
- * {@link BuildEvent}. This method is expected to return quickly.
+ * Asynchronously uploads a set of files referenced by the protobuf representation of a {@link
+ * BuildEvent}. This method is expected to return quickly.
*
* <p>This method must not throw any exceptions.
- *
+ *
* <p>Returns a future to a {@link PathConverter} that must provide a name for each uploaded file
* as it should appear in the BEP.
*/
- ListenableFuture<PathConverter> upload(Set<Path> files);
+ ListenableFuture<PathConverter> upload(Map<Path, LocalFile> files);
}
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java
index c4eee48b28..8ac55d6db2 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java
@@ -14,7 +14,7 @@
package com.google.devtools.build.lib.buildeventstream;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile.LocalFileType;
import com.google.devtools.build.lib.util.Pair;
import com.google.devtools.build.lib.vfs.Path;
import com.google.protobuf.ByteString;
@@ -38,16 +38,16 @@ public class BuildToolLogs implements BuildEventWithOrderConstraint {
@Override
public Collection<BuildEventId> getChildrenEvents() {
- return ImmutableList.<BuildEventId>of();
+ return ImmutableList.of();
}
@Override
- public ImmutableSet<Path> referencedLocalFiles() {
- ImmutableSet.Builder<Path> artifacts = ImmutableSet.builder();
+ public Collection<LocalFile> referencedLocalFiles() {
+ ImmutableList.Builder<LocalFile> localFiles = ImmutableList.builder();
for (Pair<String, Path> logFile : logFiles) {
- artifacts.add(logFile.getSecond());
+ localFiles.add(new LocalFile(logFile.getSecond(), LocalFileType.LOG));
}
- return artifacts.build();
+ return localFiles.build();
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/FileTransport.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/FileTransport.java
index c193ed094b..cce4f2d213 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/FileTransport.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/FileTransport.java
@@ -19,12 +19,14 @@ import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function;
import com.google.common.base.Throwables;
+import com.google.common.collect.ImmutableMap;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
import com.google.devtools.build.lib.buildeventstream.BuildEvent;
+import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile;
import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader;
import com.google.devtools.build.lib.buildeventstream.BuildEventContext;
import com.google.devtools.build.lib.buildeventstream.BuildEventProtocolOptions;
@@ -37,7 +39,7 @@ import com.google.devtools.build.lib.util.io.AsynchronousFileOutputStream;
import com.google.devtools.build.lib.vfs.Path;
import com.google.protobuf.Message;
import java.io.IOException;
-import java.util.Set;
+import java.util.Collection;
import java.util.function.Consumer;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -147,10 +149,14 @@ abstract class FileTransport implements BuildEventTransport {
* Returns a {@link PathConverter} for the uploaded files, or {@code null} when the uploaded
* failed.
*/
- private ListenableFuture<PathConverter> uploadReferencedFiles(Set<Path> artifacts) {
- checkNotNull(artifacts);
-
- ListenableFuture<PathConverter> upload = uploader.upload(artifacts);
+ private ListenableFuture<PathConverter> uploadReferencedFiles(Collection<LocalFile> localFiles) {
+ checkNotNull(localFiles);
+ ImmutableMap.Builder<Path, LocalFile> localFileMap =
+ ImmutableMap.builderWithExpectedSize(localFiles.size());
+ for (LocalFile localFile : localFiles) {
+ localFileMap.put(localFile.path, localFile);
+ }
+ ListenableFuture<PathConverter> upload = uploader.upload(localFileMap.build());
Futures.addCallback(
upload,
new FutureCallback<PathConverter>() {
diff --git a/src/main/java/com/google/devtools/build/lib/exec/TestAttempt.java b/src/main/java/com/google/devtools/build/lib/exec/TestAttempt.java
index 5d2c94a540..ea90ce7863 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/TestAttempt.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/TestAttempt.java
@@ -17,9 +17,9 @@ package com.google.devtools.build.lib.exec;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.test.TestRunnerAction;
+import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile.LocalFileType;
import com.google.devtools.build.lib.buildeventstream.BuildEventContext;
import com.google.devtools.build.lib.buildeventstream.BuildEventId;
import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos;
@@ -189,12 +189,16 @@ public class TestAttempt implements BuildEventWithOrderConstraint {
}
@Override
- public ImmutableSet<Path> referencedLocalFiles() {
- ImmutableSet.Builder<Path> artifacts = ImmutableSet.builder();
+ public ImmutableList<LocalFile> referencedLocalFiles() {
+ LocalFileType localFileType =
+ status == TestStatus.PASSED
+ ? LocalFileType.SUCCESSFUL_TEST_OUTPUT
+ : LocalFileType.FAILED_TEST_OUTPUT;
+ ImmutableList.Builder<LocalFile> localFiles = ImmutableList.builder();
for (Pair<String, Path> file : files) {
- artifacts.add(file.getSecond());
+ localFiles.add(new LocalFile(file.getSecond(), localFileType));
}
- return artifacts.build();
+ return localFiles.build();
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java
index 7cd35bfb34..3a726bf6ca 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java
@@ -17,12 +17,10 @@ package com.google.devtools.build.lib.remote;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningScheduledExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.devtools.build.lib.authandtls.AuthAndTLSOptions;
import com.google.devtools.build.lib.authandtls.GoogleAuthUtils;
-import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader;
import com.google.devtools.build.lib.buildeventstream.PathConverter;
import com.google.devtools.build.lib.buildtool.BuildRequest;
import com.google.devtools.build.lib.events.Event;
@@ -45,7 +43,6 @@ import com.google.devtools.remoteexecution.v1test.Digest;
import io.grpc.Channel;
import io.grpc.ClientInterceptors;
import java.io.IOException;
-import java.util.Set;
import java.util.concurrent.Executors;
import java.util.logging.Logger;
@@ -101,13 +98,12 @@ public final class RemoteModule extends BlazeModule {
@Override
public void serverInit(OptionsProvider startupOptions, ServerBuilder builder) {
- builder.addBuildEventArtifactUploader(new BuildEventArtifactUploader() {
- @Override
- public ListenableFuture<PathConverter> upload(Set<Path> files) {
- // TODO(ulfjack): Actually hook up upload here.
- return Futures.immediateFuture(converter);
- }
- }, "remote");
+ builder.addBuildEventArtifactUploader(
+ files -> {
+ // TODO(ulfjack): Actually hook up upload here.
+ return Futures.immediateFuture(converter);
+ },
+ "remote");
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/NamedArtifactGroup.java b/src/main/java/com/google/devtools/build/lib/runtime/NamedArtifactGroup.java
index 431b4276ad..0160345b3d 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/NamedArtifactGroup.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/NamedArtifactGroup.java
@@ -14,18 +14,19 @@
package com.google.devtools.build.lib.runtime;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.EventReportingArtifacts;
import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
import com.google.devtools.build.lib.buildeventstream.BuildEvent;
+import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile.LocalFileType;
import com.google.devtools.build.lib.buildeventstream.BuildEventContext;
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.buildeventstream.PathConverter;
import com.google.devtools.build.lib.collect.nestedset.NestedSetView;
-import com.google.devtools.build.lib.vfs.Path;
import java.util.Collection;
/**
@@ -49,18 +50,21 @@ class NamedArtifactGroup implements BuildEvent {
@Override
public Collection<BuildEventId> getChildrenEvents() {
- return ImmutableSet.<BuildEventId>of();
+ return ImmutableSet.of();
}
@Override
- public ImmutableSet<Path> referencedLocalFiles() {
+ public Collection<LocalFile> referencedLocalFiles() {
// This has to be consistent with the code below.
- ImmutableSet.Builder<Path> artifacts = ImmutableSet.builder();
+ ImmutableList.Builder<LocalFile> artifacts = ImmutableList.builder();
for (Artifact artifact : view.directs()) {
if (artifact.isMiddlemanArtifact()) {
continue;
}
- artifacts.add(artifact.getPath());
+ artifacts.add(
+ new LocalFile(
+ artifact.getPath(),
+ artifact.isSourceArtifact() ? LocalFileType.SOURCE : LocalFileType.OUTPUT));
}
return artifacts.build();
}
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 4c8d46825f..098e17ac22 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
@@ -18,12 +18,12 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ComparisonChain;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;
import com.google.common.collect.MultimapBuilder;
import com.google.devtools.build.lib.analysis.AliasProvider;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile.LocalFileType;
import com.google.devtools.build.lib.buildeventstream.BuildEventContext;
import com.google.devtools.build.lib.buildeventstream.BuildEventId;
import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos;
@@ -491,11 +491,15 @@ public class TestSummary implements Comparable<TestSummary>, BuildEventWithOrder
}
@Override
- public ImmutableSet<Path> referencedLocalFiles() {
- ImmutableSet.Builder<Path> artifacts = ImmutableSet.builder();
- artifacts.addAll(getFailedLogs());
- artifacts.addAll(getPassedLogs());
- return artifacts.build();
+ public ImmutableList<LocalFile> referencedLocalFiles() {
+ ImmutableList.Builder<LocalFile> localFiles = ImmutableList.builder();
+ for (Path path : getFailedLogs()) {
+ localFiles.add(new LocalFile(path, LocalFileType.FAILED_TEST_OUTPUT));
+ }
+ for (Path path : getPassedLogs()) {
+ localFiles.add(new LocalFile(path, LocalFileType.SUCCESSFUL_TEST_OUTPUT));
+ }
+ return localFiles.build();
}
@Override