github.com/lingyao2333/mo-zero@v1.4.1/core/queue/multipusher_test.go (about) 1 package queue 2 3 import ( 4 "fmt" 5 "math" 6 "strconv" 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestMultiQueuePusher(t *testing.T) { 13 const numPushers = 100 14 var pushers []Pusher 15 var mockedPushers []*mockedPusher 16 for i := 0; i < numPushers; i++ { 17 p := &mockedPusher{ 18 name: "pusher:" + strconv.Itoa(i), 19 } 20 pushers = append(pushers, p) 21 mockedPushers = append(mockedPushers, p) 22 } 23 24 pusher := NewMultiPusher(pushers) 25 assert.True(t, len(pusher.Name()) > 0) 26 27 for i := 0; i < 1000; i++ { 28 _ = pusher.Push("item") 29 } 30 31 var counts []int 32 for _, p := range mockedPushers { 33 counts = append(counts, p.count) 34 } 35 mean := calcMean(counts) 36 variance := calcVariance(mean, counts) 37 assert.True(t, math.Abs(mean-1000*(1-failProba)) < 10) 38 assert.True(t, variance < 100, fmt.Sprintf("too big variance - %.2f", variance)) 39 }