feat: polish & windviz & deploy
This commit is contained in:
parent
81b8e763bd
commit
465ad00f7b
78 changed files with 20622 additions and 2154 deletions
|
|
@ -1,11 +1,64 @@
|
|||
package datasets
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestLocalStoreLockSerializes(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
store, _ := NewLocalStore(dir, "gfs-test")
|
||||
ctx := context.Background()
|
||||
|
||||
release, err := store.Lock(ctx)
|
||||
if err != nil {
|
||||
t.Fatalf("first Lock: %v", err)
|
||||
}
|
||||
|
||||
// A second acquisition must block until the first releases.
|
||||
got := make(chan struct{})
|
||||
go func() {
|
||||
r2, err := store.Lock(ctx)
|
||||
if err == nil {
|
||||
r2()
|
||||
}
|
||||
close(got)
|
||||
}()
|
||||
|
||||
select {
|
||||
case <-got:
|
||||
t.Fatal("second Lock acquired while first was held")
|
||||
case <-time.After(100 * time.Millisecond):
|
||||
// expected: still blocked
|
||||
}
|
||||
release()
|
||||
select {
|
||||
case <-got:
|
||||
// expected: acquired after release
|
||||
case <-time.After(2 * time.Second):
|
||||
t.Fatal("second Lock did not acquire after release")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLocalStoreLockContextCancel(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
store, _ := NewLocalStore(dir, "gfs-test")
|
||||
|
||||
release, err := store.Lock(context.Background())
|
||||
if err != nil {
|
||||
t.Fatalf("Lock: %v", err)
|
||||
}
|
||||
defer release()
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
cancel()
|
||||
if _, err := store.Lock(ctx); err == nil {
|
||||
t.Error("expected Lock to fail on cancelled context while held elsewhere")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLocalStoreBeginWriteResume(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
store, err := NewLocalStore(dir, "gfs-test")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue