Merge "Include bazel-status of build in metrics"
This commit is contained in:
@@ -345,12 +345,7 @@ func storeConfigMetrics(ctx Context, config Config) {
|
||||
return
|
||||
}
|
||||
|
||||
b := &smpb.BuildConfig{
|
||||
ForceUseGoma: proto.Bool(config.ForceUseGoma()),
|
||||
UseGoma: proto.Bool(config.UseGoma()),
|
||||
UseRbe: proto.Bool(config.UseRBE()),
|
||||
}
|
||||
ctx.Metrics.BuildConfig(b)
|
||||
ctx.Metrics.BuildConfig(buildConfig(config))
|
||||
|
||||
s := &smpb.SystemResourceInfo{
|
||||
TotalPhysicalMemory: proto.Uint64(config.TotalRAM()),
|
||||
@@ -359,6 +354,16 @@ func storeConfigMetrics(ctx Context, config Config) {
|
||||
ctx.Metrics.SystemResourceInfo(s)
|
||||
}
|
||||
|
||||
func buildConfig(config Config) *smpb.BuildConfig {
|
||||
return &smpb.BuildConfig{
|
||||
ForceUseGoma: proto.Bool(config.ForceUseGoma()),
|
||||
UseGoma: proto.Bool(config.UseGoma()),
|
||||
UseRbe: proto.Bool(config.UseRBE()),
|
||||
BazelAsNinja: proto.Bool(config.UseBazel()),
|
||||
BazelMixedBuild: proto.Bool(config.bazelBuildMode() == mixedBuild),
|
||||
}
|
||||
}
|
||||
|
||||
// getConfigArgs processes the command arguments based on the build action and creates a set of new
|
||||
// arguments to be accepted by Config.
|
||||
func getConfigArgs(action BuildAction, dir string, ctx Context, args []string) []string {
|
||||
|
||||
@@ -26,7 +26,10 @@ import (
|
||||
"testing"
|
||||
|
||||
"android/soong/ui/logger"
|
||||
smpb "android/soong/ui/metrics/metrics_proto"
|
||||
"android/soong/ui/status"
|
||||
|
||||
"github.com/golang/protobuf/proto"
|
||||
)
|
||||
|
||||
func testContext() Context {
|
||||
@@ -995,3 +998,111 @@ func TestGetConfigArgsBuildModulesInDirectories(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildConfig(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
environ Environment
|
||||
useBazel bool
|
||||
expectedBuildConfig *smpb.BuildConfig
|
||||
}{
|
||||
{
|
||||
name: "none set",
|
||||
environ: Environment{},
|
||||
expectedBuildConfig: &smpb.BuildConfig{
|
||||
ForceUseGoma: proto.Bool(false),
|
||||
UseGoma: proto.Bool(false),
|
||||
UseRbe: proto.Bool(false),
|
||||
BazelAsNinja: proto.Bool(false),
|
||||
BazelMixedBuild: 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),
|
||||
BazelAsNinja: proto.Bool(false),
|
||||
BazelMixedBuild: 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),
|
||||
BazelAsNinja: proto.Bool(false),
|
||||
BazelMixedBuild: 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),
|
||||
BazelAsNinja: proto.Bool(false),
|
||||
BazelMixedBuild: proto.Bool(false),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "use bazel as ninja",
|
||||
environ: Environment{},
|
||||
useBazel: true,
|
||||
expectedBuildConfig: &smpb.BuildConfig{
|
||||
ForceUseGoma: proto.Bool(false),
|
||||
UseGoma: proto.Bool(false),
|
||||
UseRbe: proto.Bool(false),
|
||||
BazelAsNinja: proto.Bool(true),
|
||||
BazelMixedBuild: proto.Bool(false),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "bazel mixed build",
|
||||
environ: Environment{"USE_BAZEL_ANALYSIS=1"},
|
||||
expectedBuildConfig: &smpb.BuildConfig{
|
||||
ForceUseGoma: proto.Bool(false),
|
||||
UseGoma: proto.Bool(false),
|
||||
UseRbe: proto.Bool(false),
|
||||
BazelAsNinja: proto.Bool(false),
|
||||
BazelMixedBuild: proto.Bool(true),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "all set",
|
||||
environ: Environment{
|
||||
"FORCE_USE_GOMA=1",
|
||||
"USE_GOMA=1",
|
||||
"USE_RBE=1",
|
||||
"USE_BAZEL_ANALYSIS=1",
|
||||
},
|
||||
useBazel: true,
|
||||
expectedBuildConfig: &smpb.BuildConfig{
|
||||
ForceUseGoma: proto.Bool(true),
|
||||
UseGoma: proto.Bool(true),
|
||||
UseRbe: proto.Bool(true),
|
||||
BazelAsNinja: proto.Bool(true),
|
||||
BazelMixedBuild: proto.Bool(true),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
c := &configImpl{
|
||||
environ: &tc.environ,
|
||||
useBazel: tc.useBazel,
|
||||
}
|
||||
config := Config{c}
|
||||
actualBuildConfig := buildConfig(config)
|
||||
if expected := tc.expectedBuildConfig; !proto.Equal(expected, actualBuildConfig) {
|
||||
t.Errorf("Expected build config != actual build config: %#v != %#v", *expected, *actualBuildConfig)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user