cmd/bench: add flag overrides for all environment variables
This change adds a flag for the experiment and baseline GOROOTs, as well
as a flag for the branch. This both adds documentation as to where
cmd/bench gets these values from, and allows users running this command
manually to override them without modifying their environment.
Change-Id: Iba9e3bc70687989fe6fc40e3a810b21aa5091dfe
Reviewed-on: https://go-review.googlesource.com/c/benchmarks/+/385735
Reviewed-by: Michael Pratt <mpratt@google.com>
Trust: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/cmd/bench/main.go b/cmd/bench/main.go
index 82460b5..0b8e216 100644
--- a/cmd/bench/main.go
+++ b/cmd/bench/main.go
@@ -21,7 +21,12 @@
"golang.org/x/benchmarks/sweet/common"
)
-var wait = flag.Bool("wait", true, "wait for system idle before starting benchmarking")
+var (
+ wait = flag.Bool("wait", true, "wait for system idle before starting benchmarking")
+ gorootExperiment = flag.String("goroot", "", "GOROOT to test (default $GOROOT or 'go env GOROOT')")
+ gorootBaseline = flag.String("goroot-baseline", "", "baseline GOROOT to test against (optional) (default $BENCH_BASELINE_GOROOT)")
+ goBranch = flag.String("go-branch", "", "git branch of the commits we're testing against (default $BENCH_BRANCH or unknown)")
+)
func determineGOROOT() (string, error) {
g, ok := os.LookupEnv("GOROOT")
@@ -90,24 +95,34 @@
}
// Find the toolchain under test.
- gorootExperiment, err := determineGOROOT()
- if err != nil {
- log.Fatalf("Unable to determine GOROOT: %v", err)
+ gorootExperiment := *gorootExperiment
+ if gorootExperiment == "" {
+ var err error
+ gorootExperiment, err = determineGOROOT()
+ if err != nil {
+ log.Fatalf("Unable to determine GOROOT: %v", err)
+ }
}
toolchains := []*toolchain{toolchainFromGOROOT("experiment", gorootExperiment)}
// Find the baseline toolchain, if applicable.
- gorootBaseline := os.Getenv("BENCH_BASELINE_GOROOT")
+ gorootBaseline := *gorootBaseline
+ if gorootBaseline == "" {
+ gorootBaseline = os.Getenv("BENCH_BASELINE_GOROOT")
+ }
if gorootBaseline != "" {
toolchains = append(toolchains, toolchainFromGOROOT("baseline", gorootBaseline))
}
// Try to identify the Go branch. If we can't, just make sure we say so explicitly.
- branch := os.Getenv("BENCH_BRANCH")
- if branch == "" {
- branch = "unknown"
+ goBranch := *goBranch
+ if goBranch == "" {
+ goBranch = os.Getenv("BENCH_BRANCH")
}
- fmt.Printf("branch: %s\n", branch)
+ if goBranch == "" {
+ goBranch = "unknown"
+ }
+ fmt.Printf("branch: %s\n", goBranch)
// Run benchmarks against the toolchains.
if err := run(toolchains); err != nil {