Files
commander/semaphore_test.go
2024-08-01 23:42:30 +03:00

37 lines
498 B
Go

package commander
import (
"sync/atomic"
"testing"
"time"
"github.com/stretchr/testify/require"
)
func TestNewSemaphore(t *testing.T) {
t.Parallel()
sem := NewSemaphore(2)
var locked atomic.Uint32
for i := 0; i < 3; i++ {
go func() {
sem.Acquire()
locked.Add(1)
}()
}
time.Sleep(time.Microsecond * 10)
require.Equal(t, uint32(2), locked.Load())
sem.Release()
time.Sleep(time.Microsecond)
require.Equal(t, uint32(3), locked.Load())
sem.Release()
sem.Release()
}