bbgo_origin/pkg/util/reonce_test.go

40 lines
558 B
Go
Raw Permalink Normal View History

2021-12-24 17:22:24 +00:00
package util
import (
"sync"
2021-12-24 17:22:24 +00:00
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestReonce_DoAndReset(t *testing.T) {
var cnt = 0
var reonce Reonce
var wgAll, wg sync.WaitGroup
wg.Add(1)
wgAll.Add(2)
2021-12-24 17:22:24 +00:00
go reonce.Do(func() {
t.Log("once #1")
time.Sleep(10 * time.Millisecond)
cnt++
wg.Done()
wgAll.Done()
2021-12-24 17:22:24 +00:00
})
// make sure it's locked
wg.Wait()
2021-12-24 17:22:24 +00:00
t.Logf("reset")
reonce.Reset()
go reonce.Do(func() {
t.Log("once #2")
time.Sleep(10 * time.Millisecond)
cnt++
wgAll.Done()
2021-12-24 17:22:24 +00:00
})
wgAll.Wait()
2021-12-24 17:22:24 +00:00
assert.Equal(t, 2, cnt)
}