Files
the-other-dude/winbox-worker/internal/session/pool_test.go

49 lines
1010 B
Go

package session
import "testing"
func TestPoolAllocateAndRelease(t *testing.T) {
p := NewPool(100, 105)
allocated := make([]int, 0, 6)
for i := 0; i < 6; i++ {
n, err := p.Allocate()
if err != nil {
t.Fatalf("allocate %d: %v", i, err)
}
allocated = append(allocated, n)
}
_, err := p.Allocate()
if err == nil {
t.Fatal("expected error on exhausted pool")
}
p.Release(allocated[0])
n, err := p.Allocate()
if err != nil {
t.Fatalf("re-allocate: %v", err)
}
if n != allocated[0] {
t.Fatalf("expected %d, got %d", allocated[0], n)
}
}
func TestPoolAvailable(t *testing.T) {
p := NewPool(100, 102)
if p.Available() != 3 {
t.Fatalf("expected 3 available, got %d", p.Available())
}
p.Allocate()
if p.Available() != 2 {
t.Fatalf("expected 2 available, got %d", p.Available())
}
}
func TestPoolResetAll(t *testing.T) {
p := NewPool(100, 102)
p.Allocate()
p.Allocate()
p.ResetAll()
if p.Available() != 3 {
t.Fatalf("expected 3 after reset, got %d", p.Available())
}
}