Generate build timing metrics to proto format file
Test: Dumped the text formated based metrics file to out dir,
and checked the file.
Bug: b/63815990
Change-Id: Iff476f72a0be74eb53b6b26ef468d11c0f24a404
diff --git a/cmd/soong_ui/main.go b/cmd/soong_ui/main.go
index b603571..2bd0cf4 100644
--- a/cmd/soong_ui/main.go
+++ b/cmd/soong_ui/main.go
@@ -26,6 +26,7 @@
"android/soong/ui/build"
"android/soong/ui/logger"
+ "android/soong/ui/metrics"
"android/soong/ui/status"
"android/soong/ui/terminal"
"android/soong/ui/tracer"
@@ -73,6 +74,8 @@
trace := tracer.New(log)
defer trace.Close()
+ met := metrics.New()
+
stat := &status.Status{}
defer stat.Finish()
stat.AddOutput(terminal.NewStatusOutput(writer, os.Getenv("NINJA_STATUS")))
@@ -87,6 +90,7 @@
buildCtx := build.Context{ContextImpl: &build.ContextImpl{
Context: ctx,
Logger: log,
+ Metrics: met,
Tracer: trace,
Writer: writer,
Status: stat,
@@ -100,6 +104,9 @@
build.SetupOutDir(buildCtx, config)
+ metricsPath := filepath.Join(config.OutDir(), "build_metrics")
+ defer met.Dump(metricsPath)
+
logsDir := config.OutDir()
if config.Dist() {
logsDir = filepath.Join(config.DistDir(), "logs")
@@ -116,7 +123,7 @@
if start_time, err := strconv.ParseUint(start, 10, 64); err == nil {
log.Verbosef("Took %dms to start up.",
time.Since(time.Unix(0, int64(start_time))).Nanoseconds()/time.Millisecond.Nanoseconds())
- buildCtx.CompleteTrace("startup", start_time, uint64(time.Now().UnixNano()))
+ buildCtx.CompleteTrace(metrics.RunSetupTool, "startup", start_time, uint64(time.Now().UnixNano()))
}
}