build api metrics: add metrics reporting for unit tests

This will propagate timings for any emerge phases during tests up to the
analytics server.

BUG=None
TEST=./run_tests

Cq-Depend: chromium:1912766
Change-Id: I5a9fef310b8fd5dcf66b9b2e460a321d446ada6f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1912769
Tested-by: Will Bradley <wbbradley@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
diff --git a/api/controller/test.py b/api/controller/test.py
index 3b88757..2e8892c 100644
--- a/api/controller/test.py
+++ b/api/controller/test.py
@@ -15,6 +15,7 @@
 from chromite.api import controller
 from chromite.api import faux
 from chromite.api import validate
+from chromite.api.metrics import deserialize_metrics_log
 from chromite.api.controller import controller_util
 from chromite.api.gen.chromite.api import test_pb2
 from chromite.cbuildbot import goma_util
@@ -27,6 +28,7 @@
 from chromite.scripts import cros_set_lsb_release
 from chromite.service import test
 from chromite.utils import key_value_store
+from chromite.utils import metrics
 
 
 @faux.all_empty
@@ -60,6 +62,7 @@
 @validate.require('build_target.name', 'result_path')
 @validate.exists('result_path')
 @validate.validation_complete
+@metrics.collect_metrics
 def BuildTargetUnitTest(input_proto, output_proto, _config):
   """Run a build target's ebuild unit tests."""
   # Required args.
@@ -98,6 +101,7 @@
   tarball = test.BuildTargetUnitTestTarball(chroot, sysroot, result_path)
   if tarball:
     output_proto.tarball_path = tarball
+  deserialize_metrics_log(output_proto.events, prefix=build_target.name)
 
 
 @faux.all_empty