diff options
| author | qmuntal <quimmuntal@gmail.com> | 2025-09-10 08:23:42 +0200 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2025-09-10 13:57:50 -0700 |
| commit | fad1dc608d178bf2527c249ded24ca22948269b8 (patch) | |
| tree | 49e0eafce879f59bf4885884afdc4c5907b7fdf6 /src/runtime | |
| parent | b1f3e38e4153de19b1964068d79e7da6eac7b5d8 (diff) | |
| download | go-fad1dc608d178bf2527c249ded24ca22948269b8.tar.xz | |
runtime: don't artificially limit TestReadMetricsSched
TestReadMetricsSched/running can take some time to enter in steady state
on busy systems. We currently only allow 1 second for that, we should
let it run unlimitedly until success or the test time's out.
Fixes #75049
Change-Id: I452059e1837caf12a2d2d9cae1f70a0ef2d4f518
Reviewed-on: https://go-review.googlesource.com/c/go/+/702295
Auto-Submit: Damien Neil <dneil@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Diffstat (limited to 'src/runtime')
| -rw-r--r-- | src/runtime/metrics_test.go | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/runtime/metrics_test.go b/src/runtime/metrics_test.go index f565d8a59f..3989b79293 100644 --- a/src/runtime/metrics_test.go +++ b/src/runtime/metrics_test.go @@ -1632,15 +1632,13 @@ func TestReadMetricsSched(t *testing.T) { checkEq := func(t *testing.T, s *metrics.Sample, value uint64) { check(t, s, value, value) } - spinUntil := func(f func() bool, timeout time.Duration) bool { - start := time.Now() - for time.Since(start) < timeout { + spinUntil := func(f func() bool) bool { + for { if f() { return true } - time.Sleep(time.Millisecond) + time.Sleep(50 * time.Millisecond) } - return false } // Check base values. @@ -1693,12 +1691,12 @@ func TestReadMetricsSched(t *testing.T) { t.Run("running", func(t *testing.T) { defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(count + 4)) // It can take a little bit for the scheduler to - // distribute the goroutines to Ps, so retry for a - // while. + // distribute the goroutines to Ps, so retry until + // we see the count we expect or the test times out. spinUntil(func() bool { metrics.Read(s[:]) return s[running].Value.Uint64() >= count - }, time.Second) + }) logMetrics(t, s[:]) check(t, &s[running], count, count+4) check(t, &s[threads], count, count+4+threadsSlack) @@ -1761,7 +1759,7 @@ func TestReadMetricsSched(t *testing.T) { spinUntil(func() bool { metrics.Read(s[:]) return s[notInGo].Value.Uint64() >= count - }, time.Second) + }) metrics.Read(s[:]) logMetrics(t, s[:]) @@ -1783,7 +1781,7 @@ func TestReadMetricsSched(t *testing.T) { spinUntil(func() bool { metrics.Read(s[:]) return s[waiting].Value.Uint64() >= waitingCount - }, time.Second) + }) metrics.Read(s[:]) logMetrics(t, s[:]) |
