feat: add diagnostics and safe reset maintenance
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
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()
|
||||
}
|
||||
Reference in New Issue
Block a user