diff options
Diffstat (limited to 'src/main/java/com')
7 files changed, 81 insertions, 167 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/NoBuildRequestFinishedEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/NoBuildRequestFinishedEvent.java index 27ee93a363..f1294f2c47 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/NoBuildRequestFinishedEvent.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/NoBuildRequestFinishedEvent.java @@ -14,47 +14,12 @@ package com.google.devtools.build.lib.analysis; -import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.buildeventstream.BuildEvent; -import com.google.devtools.build.lib.buildeventstream.BuildEventConverters; -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.BuildCompletingEvent; import com.google.devtools.build.lib.util.ExitCode; -import java.util.Collection; /** {@link BuildEvent} indicating that a request that does not involve building as finished. */ -public final class NoBuildRequestFinishedEvent implements BuildEvent { - private final ExitCode exitCode; - private final long finishTimeMillis; - +public final class NoBuildRequestFinishedEvent extends BuildCompletingEvent { public NoBuildRequestFinishedEvent(ExitCode exitCode, long finishTimeMillis) { - this.exitCode = exitCode; - this.finishTimeMillis = finishTimeMillis; - } - - @Override - public Collection<BuildEventId> getChildrenEvents() { - return ImmutableList.<BuildEventId>of(); - } - - @Override - public BuildEventId getEventId() { - return BuildEventId.buildFinished(); - } - - @Override - public BuildEventStreamProtos.BuildEvent asStreamProto(BuildEventConverters converters) { - return GenericBuildEvent.protoChaining(this) - .setFinished( - BuildEventStreamProtos.BuildFinished.newBuilder() - .setExitCode( - BuildEventStreamProtos.BuildFinished.ExitCode.newBuilder() - .setName(exitCode.name()) - .setCode(exitCode.getNumericExitCode()) - .build()) - .setFinishTimeMillis(finishTimeMillis) - .build()) - .build(); + super(exitCode, finishTimeMillis); } } diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BUILD b/src/main/java/com/google/devtools/build/lib/buildeventstream/BUILD index 7fb0c27dc3..f56bd27c58 100644 --- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BUILD +++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BUILD @@ -12,6 +12,7 @@ java_library( srcs = glob(["*.java"]), deps = [ "//src/main/java/com/google/devtools/build/lib:events", + "//src/main/java/com/google/devtools/build/lib:util", "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto", "//src/main/java/com/google/devtools/build/lib/causes", "//src/main/java/com/google/devtools/build/lib/cmdline", diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildCompletingEvent.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildCompletingEvent.java new file mode 100644 index 0000000000..a1b5b284d3 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildCompletingEvent.java @@ -0,0 +1,66 @@ +// Copyright 2014 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.buildeventstream; + +import com.google.common.collect.ImmutableList; +import com.google.devtools.build.lib.util.ExitCode; +import java.util.Collection; + +/** + * Class all events completing a build inherit from. + * + * <p>This class is abstract as for each particular event a specialized class should be used. + * However, subclasses do not have to implement anything. + */ +public abstract class BuildCompletingEvent implements BuildEvent { + private final ExitCode exitCode; + private final long finishTimeMillis; + + public BuildCompletingEvent(ExitCode exitCode, long finishTimeMillis) { + this.exitCode = exitCode; + this.finishTimeMillis = finishTimeMillis; + } + + public ExitCode getExitCode() { + return exitCode; + } + + @Override + public BuildEventId getEventId() { + return BuildEventId.buildFinished(); + } + + @Override + public Collection<BuildEventId> getChildrenEvents() { + return ImmutableList.of(); + } + + @Override + public BuildEventStreamProtos.BuildEvent asStreamProto(BuildEventConverters converters) { + BuildEventStreamProtos.BuildFinished.ExitCode protoExitCode = + BuildEventStreamProtos.BuildFinished.ExitCode.newBuilder() + .setName(exitCode.name()) + .setCode(exitCode.getNumericExitCode()) + .build(); + + BuildEventStreamProtos.BuildFinished finished = + BuildEventStreamProtos.BuildFinished.newBuilder() + .setOverallSuccess(ExitCode.SUCCESS.equals(exitCode)) + .setExitCode(protoExitCode) + .setFinishTimeMillis(finishTimeMillis) + .build(); + return GenericBuildEvent.protoChaining(this).setFinished(finished).build(); + } +} diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/BuildCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/BuildCompleteEvent.java index 45b4ed54d7..d1c2cb79d4 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/BuildCompleteEvent.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/BuildCompleteEvent.java @@ -16,28 +16,22 @@ package com.google.devtools.build.lib.buildtool.buildevent; import static com.google.devtools.build.lib.util.Preconditions.checkNotNull; -import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.buildeventstream.BuildEvent; -import com.google.devtools.build.lib.buildeventstream.BuildEventConverters; -import com.google.devtools.build.lib.buildeventstream.BuildEventId; -import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos; -import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished; -import com.google.devtools.build.lib.buildeventstream.GenericBuildEvent; +import com.google.devtools.build.lib.buildeventstream.BuildCompletingEvent; import com.google.devtools.build.lib.buildtool.BuildResult; -import java.util.Collection; /** * This event is fired from BuildTool#stopRequest(). * * <p>This class also implements the {@link BuildFinished} event of the build event protocol (BEP). */ -public final class BuildCompleteEvent implements BuildEvent { +public final class BuildCompleteEvent extends BuildCompletingEvent { private final BuildResult result; /** * Construct the BuildCompleteEvent. */ public BuildCompleteEvent(BuildResult result) { + super(result.getExitCondition(), result.getStopTime()); this.result = checkNotNull(result); } @@ -47,31 +41,4 @@ public final class BuildCompleteEvent implements BuildEvent { public BuildResult getResult() { return result; } - - @Override - public BuildEventId getEventId() { - return BuildEventId.buildFinished(); - } - - @Override - public Collection<BuildEventId> getChildrenEvents() { - return ImmutableList.of(); - } - - @Override - public BuildEventStreamProtos.BuildEvent asStreamProto(BuildEventConverters converters) { - BuildEventStreamProtos.BuildFinished.ExitCode exitCode = - BuildFinished.ExitCode.newBuilder() - .setName(result.getExitCondition().name()) - .setCode(result.getExitCondition().getNumericExitCode()) - .build(); - - BuildFinished finished = - BuildFinished.newBuilder() - .setOverallSuccess(result.getSuccess()) - .setExitCode(exitCode) - .setFinishTimeMillis(result.getStopTime()) - .build(); - return GenericBuildEvent.protoChaining(this).setFinished(finished).build(); - } } diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestingCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestingCompleteEvent.java index a150de5694..282715b015 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestingCompleteEvent.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestingCompleteEvent.java @@ -14,16 +14,8 @@ package com.google.devtools.build.lib.buildtool.buildevent; -import static com.google.devtools.build.lib.util.Preconditions.checkNotNull; - -import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.buildeventstream.BuildEvent; -import com.google.devtools.build.lib.buildeventstream.BuildEventConverters; -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.BuildCompletingEvent; import com.google.devtools.build.lib.util.ExitCode; -import java.util.Collection; /** * Event triggered after testing has completed. @@ -31,11 +23,7 @@ import java.util.Collection; * <p>This event is used by the BEP to construct the {@link BuildEventStreamProtos.BuildFinished} * event when the test command is used. */ -public class TestingCompleteEvent implements BuildEvent { - - private final ExitCode exitCode; - private final long finishTimeMillis; - +public class TestingCompleteEvent extends BuildCompletingEvent { /** * Creates a new {@link TestingCompleteEvent}. * @@ -43,34 +31,6 @@ public class TestingCompleteEvent implements BuildEvent { * @param finishTimeMillis the finish time in milliseconds since the epoch. */ public TestingCompleteEvent(ExitCode exitCode, long finishTimeMillis) { - this.exitCode = checkNotNull(exitCode); - this.finishTimeMillis = finishTimeMillis; - } - - @Override - public BuildEventId getEventId() { - return BuildEventId.buildFinished(); - } - - @Override - public Collection<BuildEventId> getChildrenEvents() { - return ImmutableList.of(); - } - - @Override - public BuildEventStreamProtos.BuildEvent asStreamProto(BuildEventConverters converters) { - BuildEventStreamProtos.BuildFinished.ExitCode protoExitCode = - BuildEventStreamProtos.BuildFinished.ExitCode.newBuilder() - .setName(exitCode.name()) - .setCode(exitCode.getNumericExitCode()) - .build(); - - BuildEventStreamProtos.BuildFinished finished = - BuildEventStreamProtos.BuildFinished.newBuilder() - .setOverallSuccess(ExitCode.SUCCESS.equals(exitCode)) - .setExitCode(protoExitCode) - .setFinishTimeMillis(finishTimeMillis) - .build(); - return GenericBuildEvent.protoChaining(this).setFinished(finished).build(); + super(exitCode, finishTimeMillis); } } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BuildEventStreamer.java b/src/main/java/com/google/devtools/build/lib/runtime/BuildEventStreamer.java index 7b4ac281d6..3353d577e8 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/BuildEventStreamer.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/BuildEventStreamer.java @@ -31,11 +31,11 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.EventReportingArtifacts; import com.google.devtools.build.lib.analysis.BuildInfoEvent; import com.google.devtools.build.lib.analysis.NoBuildEvent; -import com.google.devtools.build.lib.analysis.NoBuildRequestFinishedEvent; import com.google.devtools.build.lib.analysis.extra.ExtraAction; import com.google.devtools.build.lib.buildeventstream.AbortedEvent; import com.google.devtools.build.lib.buildeventstream.AnnounceBuildEventTransportsEvent; 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.BuildEventId; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason; @@ -51,13 +51,11 @@ import com.google.devtools.build.lib.buildtool.BuildRequest; import com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent; import com.google.devtools.build.lib.buildtool.buildevent.BuildInterruptedEvent; import com.google.devtools.build.lib.buildtool.buildevent.BuildStartingEvent; -import com.google.devtools.build.lib.buildtool.buildevent.TestingCompleteEvent; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetView; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.events.Reporter; -import com.google.devtools.build.lib.runtime.commands.NoTestsFound; import com.google.devtools.build.lib.util.Pair; import java.util.ArrayList; import java.util.Collection; @@ -414,10 +412,7 @@ public class BuildEventStreamer implements EventHandler { buildEvent(freedEvent); } - if (event instanceof BuildCompleteEvent - || event instanceof TestingCompleteEvent - || event instanceof NoBuildRequestFinishedEvent - || event instanceof NoTestsFound) { + if (event instanceof BuildCompletingEvent) { buildComplete(); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/NoTestsFound.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/NoTestsFound.java index d21ce069fb..8c2179032b 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/NoTestsFound.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/NoTestsFound.java @@ -14,53 +14,13 @@ package com.google.devtools.build.lib.runtime.commands; -import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.buildeventstream.BuildEvent; -import com.google.devtools.build.lib.buildeventstream.BuildEventConverters; -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.BuildCompletingEvent; import com.google.devtools.build.lib.util.ExitCode; -import java.util.Collection; /** This event is posted by the {@link TestCommand} if no tests were found. */ -public class NoTestsFound implements BuildEvent { - private final ExitCode exitCode; - private final long finishTimeMillis; +public class NoTestsFound extends BuildCompletingEvent { public NoTestsFound(ExitCode exitCode, long finishTimeMillis) { - this.exitCode = exitCode; - this.finishTimeMillis = finishTimeMillis; - } - - public ExitCode getExitCode() { - return exitCode; - } - - @Override - public BuildEventId getEventId() { - return BuildEventId.buildFinished(); - } - - @Override - public Collection<BuildEventId> getChildrenEvents() { - return ImmutableList.of(); - } - - @Override - public BuildEventStreamProtos.BuildEvent asStreamProto(BuildEventConverters converters) { - BuildEventStreamProtos.BuildFinished.ExitCode protoExitCode = - BuildEventStreamProtos.BuildFinished.ExitCode.newBuilder() - .setName(exitCode.name()) - .setCode(exitCode.getNumericExitCode()) - .build(); - - BuildEventStreamProtos.BuildFinished finished = - BuildEventStreamProtos.BuildFinished.newBuilder() - .setOverallSuccess(ExitCode.SUCCESS.equals(exitCode)) - .setExitCode(protoExitCode) - .setFinishTimeMillis(finishTimeMillis) - .build(); - return GenericBuildEvent.protoChaining(this).setFinished(finished).build(); + super(exitCode, finishTimeMillis); } } |