Collect build metrics just prior to BuildCompleteEvent.

RELNOTES: None
PiperOrigin-RevId: 287189221
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildPrecompleteEvent.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildPrecompleteEvent.java
new file mode 100644
index 0000000..b325ed9
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildPrecompleteEvent.java
@@ -0,0 +1,20 @@
+// Copyright 2019 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.buildtool;
+
+/**
+ * This event is fired from BuildTool#stopRequest() just before {@link
+ * com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent}.
+ */
+public final class BuildPrecompleteEvent {}
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 771d89a..c667362 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
@@ -380,6 +380,8 @@
     // The stop time has to be captured before we send the BuildCompleteEvent.
     result.setStopTime(runtime.getClock().currentTimeMillis());
     result.setWasSuspended(stopSuspendCount > startSuspendCount);
+
+    env.getEventBus().post(new BuildPrecompleteEvent());
     env.getEventBus()
         .post(
             new BuildCompleteEvent(
diff --git a/src/main/java/com/google/devtools/build/lib/metrics/MetricsCollector.java b/src/main/java/com/google/devtools/build/lib/metrics/MetricsCollector.java
index 0604397..c80bea7 100644
--- a/src/main/java/com/google/devtools/build/lib/metrics/MetricsCollector.java
+++ b/src/main/java/com/google/devtools/build/lib/metrics/MetricsCollector.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics;
 import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics;
 import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics;
-import com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent;
+import com.google.devtools.build.lib.buildtool.BuildPrecompleteEvent;
 import com.google.devtools.build.lib.metrics.MetricsModule.Options;
 import com.google.devtools.build.lib.runtime.CommandEnvironment;
 import java.lang.management.ManagementFactory;
@@ -67,7 +67,7 @@
   }
 
   @Subscribe
-  public void onBuildComplete(BuildCompleteEvent event) {
+  public void onBuildComplete(BuildPrecompleteEvent event) {
     env.getEventBus().post(new BuildMetricsEvent(createBuildMetrics()));
   }