Files
proxy/internal/operationlock/lock_test.go
T

31 lines
688 B
Go

package operationlock_test
import (
"context"
"testing"
"time"
"proxyctl/internal/operationlock"
)
func TestLockSerializesIndependentInstancesAndHonorsContext(t *testing.T) {
path := t.TempDir() + "/proxyctl.lock"
first := operationlock.New(path)
second := operationlock.New(path)
unlock, err := first.Lock(context.Background())
if err != nil {
t.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Millisecond)
defer cancel()
if _, err := second.Lock(ctx); err == nil {
t.Fatal("second lock acquired while first held")
}
unlock()
unlockSecond, err := second.Lock(context.Background())
if err != nil {
t.Fatal(err)
}
unlockSecond()
}