36 lines
673 B
Go
36 lines
673 B
Go
package agent
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
func TestUploadLockSerializesIndependentSpools(t *testing.T) {
|
|
root := t.TempDir()
|
|
first, err := NewSpool(root, nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
second, err := NewSpool(root, nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
lock, err := first.LockUpload("upload-a")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := second.LockUpload("upload-a"); !errors.Is(err, ErrUploadBusy) {
|
|
t.Fatalf("parallel writer accepted: %v", err)
|
|
}
|
|
if err := lock.Close(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
next, err := second.LockUpload("upload-a")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := next.Close(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|