1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package semaphores
- import (
- "testing"
- "github.com/stretchr/testify/require"
- )
- func TestSemaphoresQueueDisabled(t *testing.T) {
- s, err := New(&Config{RequestsQueueSize: 0, Workers: 1})
- require.NoError(t, err)
- // Queue acquire should always work when disabled
- release, err := s.AcquireQueue()
- require.NoError(t, err)
- release() // Should not panic
- procRelease, err := s.AcquireProcessing(t.Context())
- require.NoError(t, err)
- procRelease()
- }
- func TestSemaphoresQueueEnabled(t *testing.T) {
- s, err := New(&Config{RequestsQueueSize: 1, Workers: 1})
- require.NoError(t, err)
- // Should be able to acquire up to queue size + workers
- release1, err := s.AcquireQueue()
- require.NoError(t, err)
- release2, err := s.AcquireQueue()
- require.NoError(t, err)
- // Third should fail (exceeds capacity)
- _, err = s.AcquireQueue()
- require.Error(t, err)
- // Release and try again
- release1()
- release3, err := s.AcquireQueue()
- require.NoError(t, err)
- release2()
- release3()
- }
- func TestSemaphoresInvalidConfig(t *testing.T) {
- _, err := New(&Config{RequestsQueueSize: 0, Workers: 0})
- require.Error(t, err)
- }
|