|
|
- package sync_test
-
- import (
- "testing"
-
- "github.com/stretchr/testify/require"
-
- tmsync "github.com/tendermint/tendermint/libs/sync"
- )
-
- func TestWaker(t *testing.T) {
-
- // A new waker should block when sleeping.
- waker := tmsync.NewWaker()
-
- select {
- case <-waker.Sleep():
- require.Fail(t, "unexpected wakeup")
- default:
- }
-
- // Wakeups should not block, and should cause the next sleeper to awaken.
- waker.Wake()
-
- select {
- case <-waker.Sleep():
- default:
- require.Fail(t, "expected wakeup, but sleeping instead")
- }
-
- // Multiple wakeups should only wake a single sleeper.
- waker.Wake()
- waker.Wake()
- waker.Wake()
-
- select {
- case <-waker.Sleep():
- default:
- require.Fail(t, "expected wakeup, but sleeping instead")
- }
-
- select {
- case <-waker.Sleep():
- require.Fail(t, "unexpected wakeup")
- default:
- }
- }
|