mirror of
https://github.com/golang/go.git
synced 2026-02-06 19:05:05 +03:00
testing/synctest: add Sleep
Add a convenience function which combines time.Sleep and synctest.Wait. Fixes #77169 Change-Id: I2ff105105e95cfd8e5b4f72ccacf7afa59efb6bd Reviewed-on: https://go-review.googlesource.com/c/go/+/740066 Reviewed-by: Alan Donovan <adonovan@google.com> Auto-Submit: Damien Neil <dneil@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
committed by
Gopher Robot
parent
62d08234b7
commit
8ac41b52c4
1
api/next/77169.txt
Normal file
1
api/next/77169.txt
Normal file
@@ -0,0 +1 @@
|
||||
pkg testing/synctest, func Sleep(time.Duration) #77169
|
||||
1
doc/next/6-stdlib/99-minor/testing/synctest/77169.md
Normal file
1
doc/next/6-stdlib/99-minor/testing/synctest/77169.md
Normal file
@@ -0,0 +1 @@
|
||||
The new [Sleep] helper function combines [time.Sleep] and [testing/synctest.Wait].
|
||||
@@ -268,6 +268,7 @@ package synctest
|
||||
import (
|
||||
"internal/synctest"
|
||||
"testing"
|
||||
"time"
|
||||
_ "unsafe" // for linkname
|
||||
)
|
||||
|
||||
@@ -309,3 +310,23 @@ func testingSynctestTest(t *testing.T, f func(*testing.T)) bool
|
||||
func Wait() {
|
||||
synctest.Wait()
|
||||
}
|
||||
|
||||
// Sleep blocks until the current bubble's clock has advanced
|
||||
// by the duration of d and every goroutine within the current bubble,
|
||||
// other than the current goroutine, is durably blocked.
|
||||
//
|
||||
// This is exactly equivalent to
|
||||
//
|
||||
// time.Sleep(d)
|
||||
// synctest.Wait()
|
||||
//
|
||||
// In tests, this is often preferable to calling only [time.Sleep].
|
||||
// If the test itself and another goroutine running the system under test
|
||||
// sleeps for the exact same amount of time, it's unpredictable which
|
||||
// of the two goroutines will run first. The test itself usually wants
|
||||
// to wait for the system under test to "settle" after sleeping.
|
||||
// This is what Sleep accomplishes.
|
||||
func Sleep(d time.Duration) {
|
||||
time.Sleep(d)
|
||||
Wait()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user