sweet: require heap profiles to be available in cockroach benchmark Currently the cockroachdb benchmark is failing in TestSweetEndToEnd because CPU profiling fails (and thus PGO-based builds fail). Fix this by requiring that some profile be obtainable for each instance before starting the benchmark properly. I suspect there is an internal race, wherein even if the server is up and running by some metric, CPU profiles aren't yet ready. For #56958. Change-Id: I4c907b4394f249f3f1cac6768e641fafda20f511 Reviewed-on: https://go-review.googlesource.com/c/benchmarks/+/614536 Auto-Submit: Michael Knyszek <mknyszek@google.com> Reviewed-by: Michael Pratt <mpratt@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/sweet/benchmarks/cockroachdb/main.go b/sweet/benchmarks/cockroachdb/main.go index 0d0979c..ea620e2 100644 --- a/sweet/benchmarks/cockroachdb/main.go +++ b/sweet/benchmarks/cockroachdb/main.go
@@ -13,6 +13,7 @@ "flag" "fmt" "log" + "net/http" "os" "os/exec" "path/filepath" @@ -255,6 +256,15 @@ if err := cmd.Run(); err != nil { return err } + // Check to see if profiling works. We don't care what the data is, we just want to + // make sure that it doesn't fail. We've unfortunately seen this fail before. + // See #56958. + endpoint := fmt.Sprintf("http://%s:%d/%s", cfg.host, i.httpPort, diagnostics.MemProfile.HTTPEndpoint()) + resp, err := http.Get(endpoint) + if err != nil { + return err + } + resp.Body.Close() return nil }