mirror of
https://gitee.com/milvus-io/milvus.git
synced 2024-12-01 03:18:29 +08:00
0c39e0370c
Signed-off-by: sunby <bingyi.sun@zilliz.com> Co-authored-by: sunby <bingyi.sun@zilliz.com>
59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
package datanode
|
|
|
|
import (
|
|
"sync"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestMergedTimeTicker(t *testing.T) {
|
|
var ticks []uint64
|
|
var mut sync.Mutex
|
|
|
|
mt := newMergedTimeTickerSender(func(ts Timestamp, _ []int64) error {
|
|
mut.Lock()
|
|
defer mut.Unlock()
|
|
ticks = append(ticks, ts)
|
|
return nil
|
|
})
|
|
|
|
for i := 1; i < 100; i++ {
|
|
time.Sleep(time.Millisecond * 10)
|
|
mt.bufferTs(uint64(i), nil)
|
|
}
|
|
mt.close()
|
|
mut.Lock()
|
|
assert.EqualValues(t, 99, ticks[len(ticks)-1])
|
|
assert.Less(t, len(ticks), 20)
|
|
mut.Unlock()
|
|
}
|
|
|
|
func TestMergedTimeTicker_close10000(t *testing.T) {
|
|
var wg sync.WaitGroup
|
|
batchSize := 10000
|
|
wg.Add(batchSize)
|
|
for i := 0; i < batchSize; i++ {
|
|
mt := newMergedTimeTickerSender(func(ts Timestamp, _ []int64) error {
|
|
return nil
|
|
})
|
|
go func(mt *mergedTimeTickerSender) {
|
|
defer wg.Done()
|
|
time.Sleep(10 * time.Millisecond)
|
|
mt.close()
|
|
}(mt)
|
|
}
|
|
tm := time.NewTimer(10 * time.Second)
|
|
done := make(chan struct{})
|
|
go func() {
|
|
wg.Wait()
|
|
close(done)
|
|
}()
|
|
select {
|
|
case <-tm.C:
|
|
t.Fatal("wait all timer close, timeout")
|
|
case <-done:
|
|
}
|
|
}
|