Files
ctrld/cmd/cli/loop_test.go
2023-12-06 15:33:05 +07:00

39 lines
469 B
Go

package cli
import (
"sync"
"testing"
)
func Test_loopGuard(t *testing.T) {
lg := newLoopGuard()
key := "foo"
var mu sync.Mutex
i := 0
n := 1000
do := func() {
locked := lg.TryLock(key)
defer lg.Unlock(key)
if locked {
mu.Lock()
i++
mu.Unlock()
}
}
var wg sync.WaitGroup
wg.Add(n)
for i := 0; i < n; i++ {
go func() {
defer wg.Done()
do()
}()
}
wg.Wait()
if i == n {
t.Fatalf("i must not be increased %d times", n)
}
}