Files
imgproxy/semaphores/semaphores_test.go
2025-09-05 00:46:25 +06:00

51 lines
1.1 KiB
Go

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)
}