aboutsummaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
authorqmuntal <quimmuntal@gmail.com>2025-09-10 08:23:42 +0200
committerGopher Robot <gobot@golang.org>2025-09-10 13:57:50 -0700
commitfad1dc608d178bf2527c249ded24ca22948269b8 (patch)
tree49e0eafce879f59bf4885884afdc4c5907b7fdf6 /src/runtime
parentb1f3e38e4153de19b1964068d79e7da6eac7b5d8 (diff)
downloadgo-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.go18
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[:])