From 0a7529b02c06ac7e69dd6b1923ce76138debbf5d Mon Sep 17 00:00:00 2001 From: Romain Jobredeaux Date: Wed, 26 Oct 2022 12:56:41 -0400 Subject: [PATCH] Log whether user explicitly disabled mixed builds in Soong metrics. Test: unit tests Bug: 254649740 Change-Id: I2d4080955e10fe4b50e335c97c79dddbdd22c170 --- ui/build/config.go | 13 +++-- ui/build/config_test.go | 105 ++++++++++++++++++++++++---------------- 2 files changed, 73 insertions(+), 45 deletions(-) diff --git a/ui/build/config.go b/ui/build/config.go index cde8d5dd1..889311d19 100644 --- a/ui/build/config.go +++ b/ui/build/config.go @@ -464,10 +464,11 @@ func storeConfigMetrics(ctx Context, config Config) { func buildConfig(config Config) *smpb.BuildConfig { c := &smpb.BuildConfig{ - ForceUseGoma: proto.Bool(config.ForceUseGoma()), - UseGoma: proto.Bool(config.UseGoma()), - UseRbe: proto.Bool(config.UseRBE()), - BazelMixedBuild: proto.Bool(config.BazelBuildEnabled()), + ForceUseGoma: proto.Bool(config.ForceUseGoma()), + UseGoma: proto.Bool(config.UseGoma()), + UseRbe: proto.Bool(config.UseRBE()), + BazelMixedBuild: proto.Bool(config.BazelBuildEnabled()), + ForceDisableBazelMixedBuild: proto.Bool(config.IsBazelMixedBuildForceDisabled()), } c.Targets = append(c.Targets, config.arguments...) @@ -1452,6 +1453,10 @@ func (c *configImpl) EmptyNinjaFile() bool { return c.emptyNinjaFile } +func (c *configImpl) IsBazelMixedBuildForceDisabled() bool { + return c.Environment().IsEnvTrue("BUILD_BROKEN_DISABLE_BAZEL") +} + func GetMetricsUploader(topDir string, env *Environment) string { if p, ok := env.Get("METRICS_UPLOADER"); ok { metricsUploader := filepath.Join(topDir, p) diff --git a/ui/build/config_test.go b/ui/build/config_test.go index 9ea51101f..968544be7 100644 --- a/ui/build/config_test.go +++ b/ui/build/config_test.go @@ -28,6 +28,7 @@ import ( "android/soong/ui/logger" smpb "android/soong/ui/metrics/metrics_proto" "android/soong/ui/status" + "google.golang.org/protobuf/encoding/prototext" "google.golang.org/protobuf/proto" @@ -1015,40 +1016,55 @@ func TestBuildConfig(t *testing.T) { name: "none set", environ: Environment{}, expectedBuildConfig: &smpb.BuildConfig{ - ForceUseGoma: proto.Bool(false), - UseGoma: proto.Bool(false), - UseRbe: proto.Bool(false), - BazelMixedBuild: proto.Bool(false), + ForceUseGoma: proto.Bool(false), + UseGoma: proto.Bool(false), + UseRbe: proto.Bool(false), + BazelMixedBuild: proto.Bool(false), + ForceDisableBazelMixedBuild: proto.Bool(false), }, }, { name: "force use goma", environ: Environment{"FORCE_USE_GOMA=1"}, expectedBuildConfig: &smpb.BuildConfig{ - ForceUseGoma: proto.Bool(true), - UseGoma: proto.Bool(false), - UseRbe: proto.Bool(false), - BazelMixedBuild: proto.Bool(false), + ForceUseGoma: proto.Bool(true), + UseGoma: proto.Bool(false), + UseRbe: proto.Bool(false), + BazelMixedBuild: proto.Bool(false), + ForceDisableBazelMixedBuild: proto.Bool(false), }, }, { name: "use goma", environ: Environment{"USE_GOMA=1"}, expectedBuildConfig: &smpb.BuildConfig{ - ForceUseGoma: proto.Bool(false), - UseGoma: proto.Bool(true), - UseRbe: proto.Bool(false), - BazelMixedBuild: proto.Bool(false), + ForceUseGoma: proto.Bool(false), + UseGoma: proto.Bool(true), + UseRbe: proto.Bool(false), + BazelMixedBuild: proto.Bool(false), + ForceDisableBazelMixedBuild: proto.Bool(false), }, }, { name: "use rbe", environ: Environment{"USE_RBE=1"}, expectedBuildConfig: &smpb.BuildConfig{ - ForceUseGoma: proto.Bool(false), - UseGoma: proto.Bool(false), - UseRbe: proto.Bool(true), - BazelMixedBuild: proto.Bool(false), + ForceUseGoma: proto.Bool(false), + UseGoma: proto.Bool(false), + UseRbe: proto.Bool(true), + BazelMixedBuild: proto.Bool(false), + ForceDisableBazelMixedBuild: proto.Bool(false), + }, + }, + { + name: "disable mixed builds", + environ: Environment{"BUILD_BROKEN_DISABLE_BAZEL=1"}, + expectedBuildConfig: &smpb.BuildConfig{ + ForceUseGoma: proto.Bool(false), + UseGoma: proto.Bool(false), + UseRbe: proto.Bool(false), + BazelMixedBuild: proto.Bool(false), + ForceDisableBazelMixedBuild: proto.Bool(true), }, }, { @@ -1056,10 +1072,11 @@ func TestBuildConfig(t *testing.T) { environ: Environment{}, useBazel: true, expectedBuildConfig: &smpb.BuildConfig{ - ForceUseGoma: proto.Bool(false), - UseGoma: proto.Bool(false), - UseRbe: proto.Bool(false), - BazelMixedBuild: proto.Bool(false), + ForceUseGoma: proto.Bool(false), + UseGoma: proto.Bool(false), + UseRbe: proto.Bool(false), + BazelMixedBuild: proto.Bool(false), + ForceDisableBazelMixedBuild: proto.Bool(false), }, }, { @@ -1067,10 +1084,11 @@ func TestBuildConfig(t *testing.T) { environ: Environment{}, bazelDevMode: true, expectedBuildConfig: &smpb.BuildConfig{ - ForceUseGoma: proto.Bool(false), - UseGoma: proto.Bool(false), - UseRbe: proto.Bool(false), - BazelMixedBuild: proto.Bool(true), + ForceUseGoma: proto.Bool(false), + UseGoma: proto.Bool(false), + UseRbe: proto.Bool(false), + BazelMixedBuild: proto.Bool(true), + ForceDisableBazelMixedBuild: proto.Bool(false), }, }, { @@ -1078,10 +1096,11 @@ func TestBuildConfig(t *testing.T) { environ: Environment{}, bazelProdMode: true, expectedBuildConfig: &smpb.BuildConfig{ - ForceUseGoma: proto.Bool(false), - UseGoma: proto.Bool(false), - UseRbe: proto.Bool(false), - BazelMixedBuild: proto.Bool(true), + ForceUseGoma: proto.Bool(false), + UseGoma: proto.Bool(false), + UseRbe: proto.Bool(false), + BazelMixedBuild: proto.Bool(true), + ForceDisableBazelMixedBuild: proto.Bool(false), }, }, { @@ -1089,10 +1108,11 @@ func TestBuildConfig(t *testing.T) { environ: Environment{}, bazelStagingMode: true, expectedBuildConfig: &smpb.BuildConfig{ - ForceUseGoma: proto.Bool(false), - UseGoma: proto.Bool(false), - UseRbe: proto.Bool(false), - BazelMixedBuild: proto.Bool(true), + ForceUseGoma: proto.Bool(false), + UseGoma: proto.Bool(false), + UseRbe: proto.Bool(false), + BazelMixedBuild: proto.Bool(true), + ForceDisableBazelMixedBuild: proto.Bool(false), }, }, { @@ -1101,11 +1121,12 @@ func TestBuildConfig(t *testing.T) { useBazel: true, arguments: []string{"droid", "dist"}, expectedBuildConfig: &smpb.BuildConfig{ - ForceUseGoma: proto.Bool(false), - UseGoma: proto.Bool(false), - UseRbe: proto.Bool(false), - BazelMixedBuild: proto.Bool(false), - Targets: []string{"droid", "dist"}, + ForceUseGoma: proto.Bool(false), + UseGoma: proto.Bool(false), + UseRbe: proto.Bool(false), + BazelMixedBuild: proto.Bool(false), + Targets: []string{"droid", "dist"}, + ForceDisableBazelMixedBuild: proto.Bool(false), }, }, { @@ -1114,14 +1135,16 @@ func TestBuildConfig(t *testing.T) { "FORCE_USE_GOMA=1", "USE_GOMA=1", "USE_RBE=1", + "BUILD_BROKEN_DISABLE_BAZEL=1", }, useBazel: true, bazelDevMode: true, expectedBuildConfig: &smpb.BuildConfig{ - ForceUseGoma: proto.Bool(true), - UseGoma: proto.Bool(true), - UseRbe: proto.Bool(true), - BazelMixedBuild: proto.Bool(true), + ForceUseGoma: proto.Bool(true), + UseGoma: proto.Bool(true), + UseRbe: proto.Bool(true), + BazelMixedBuild: proto.Bool(true), + ForceDisableBazelMixedBuild: proto.Bool(true), }, }, }