You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-zero/core/syncx/barrier_test.go

57 lines
897 B
Go

4 years ago
package syncx
import (
"sync"
4 years ago
"testing"
"github.com/stretchr/testify/assert"
)
func TestBarrier_Guard(t *testing.T) {
const total = 10000
var barrier Barrier
var count int
var wg sync.WaitGroup
wg.Add(total)
4 years ago
for i := 0; i < total; i++ {
go barrier.Guard(func() {
4 years ago
count++
wg.Done()
4 years ago
})
}
wg.Wait()
4 years ago
assert.Equal(t, total, count)
}
func TestBarrierPtr_Guard(t *testing.T) {
const total = 10000
barrier := new(Barrier)
var count int
wg := new(sync.WaitGroup)
wg.Add(total)
4 years ago
for i := 0; i < total; i++ {
go barrier.Guard(func() {
4 years ago
count++
wg.Done()
4 years ago
})
}
wg.Wait()
4 years ago
assert.Equal(t, total, count)
}
func TestGuard(t *testing.T) {
const total = 10000
var count int
var lock sync.Mutex
wg := new(sync.WaitGroup)
wg.Add(total)
for i := 0; i < total; i++ {
go Guard(&lock, func() {
count++
wg.Done()
})
}
wg.Wait()
assert.Equal(t, total, count)
}