From 9c4936405ed2aba6b2ecdb78b168a8a478686b20 Mon Sep 17 00:00:00 2001 From: Anas Sulaiman Date: Wed, 18 Oct 2023 16:34:37 +0000 Subject: [PATCH] support toggling compare mode for rbe actions This allows me to set metalava actions to run remotely (already toggleable) with local comparison (this CL). Change-Id: I66b006d5ee11b3192ef81a2e5cefc07e9f3d10a2 --- java/droidstubs.go | 5 +++++ remoteexec/remoteexec.go | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/java/droidstubs.go b/java/droidstubs.go index 8039d0515..a7e8eb659 100644 --- a/java/droidstubs.go +++ b/java/droidstubs.go @@ -19,6 +19,7 @@ import ( "path/filepath" "regexp" "sort" + "strconv" "strings" "github.com/google/blueprint/proptools" @@ -497,6 +498,7 @@ func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersi if metalavaUseRbe(ctx) { rule.Remoteable(android.RemoteRuleSupports{RBE: true}) execStrategy := ctx.Config().GetenvWithDefault("RBE_METALAVA_EXEC_STRATEGY", remoteexec.LocalExecStrategy) + compare, _ := strconv.ParseBool(ctx.Config().GetenvWithDefault("RBE_METALAVA_COMPARE", "false")) labels := map[string]string{"type": "tool", "name": "metalava"} // TODO: metalava pool rejects these jobs pool := ctx.Config().GetenvWithDefault("RBE_METALAVA_POOL", "java16") @@ -505,6 +507,9 @@ func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersi ExecStrategy: execStrategy, ToolchainInputs: []string{config.JavaCmd(ctx).String()}, Platform: map[string]string{remoteexec.PoolKey: pool}, + Compare: compare, + NumLocalRuns: 1, + NumRemoteRuns: 1, }) } diff --git a/remoteexec/remoteexec.go b/remoteexec/remoteexec.go index 9e7a0f1e3..150d62c04 100644 --- a/remoteexec/remoteexec.go +++ b/remoteexec/remoteexec.go @@ -15,6 +15,7 @@ package remoteexec import ( + "fmt" "sort" "strings" ) @@ -84,6 +85,12 @@ type REParams struct { // EnvironmentVariables is a list of environment variables whose values should be passed through // to the remote execution. EnvironmentVariables []string + // Boolean indicating whether to compare chosen exec strategy with local execution. + Compare bool + // Number of times the action should be rerun locally. + NumLocalRuns int + // Number of times the action should be rerun remotely. + NumRemoteRuns int } func init() { @@ -135,6 +142,10 @@ func (r *REParams) wrapperArgs() string { } args += " --exec_strategy=" + strategy + if r.Compare && r.NumLocalRuns >= 0 && r.NumRemoteRuns >= 0 { + args += fmt.Sprintf(" --compare=true --num_local_reruns=%d --num_remote_reruns=%d", r.NumLocalRuns, r.NumRemoteRuns) + } + if len(r.Inputs) > 0 { args += " --inputs=" + strings.Join(r.Inputs, ",") }