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, ",") }