consistent
parent
036c327db4
commit
36a458406f
101
db_test.go
101
db_test.go
|
|
@ -2,6 +2,7 @@ package storage
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"local/storage/minio"
|
||||
"local/storage/rclone"
|
||||
|
|
@ -51,10 +52,9 @@ func (mock *mock) Close() error {
|
|||
}
|
||||
|
||||
func TestImplementations(t *testing.T) {
|
||||
dir, err := ioutil.TempDir("", "storage_tests_")
|
||||
if err != nil {
|
||||
t.Fatalf("cannot create temp dir: %v", err)
|
||||
return
|
||||
dir := path.Join(t.TempDir(), "storage_tests")
|
||||
if err := os.MkdirAll(dir, os.ModePerm); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(dir)
|
||||
|
||||
|
|
@ -177,7 +177,10 @@ func TestImplementations(t *testing.T) {
|
|||
type = local
|
||||
`))
|
||||
f.Close()
|
||||
rclone, err := rclone.NewRClone(f.Name(), "local:/tmp")
|
||||
if err := os.MkdirAll(path.Join(dir, "rclone"), os.ModePerm); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
rclone, err := rclone.NewRClone(f.Name(), "local:"+path.Join(dir, "rclone"))
|
||||
if err != nil {
|
||||
t.Errorf("cannot make rclone: %v", err)
|
||||
} else {
|
||||
|
|
@ -188,49 +191,57 @@ type = local
|
|||
validValue := []byte("value")
|
||||
|
||||
for _, db := range cases {
|
||||
log.Printf("Trying %T", db)
|
||||
t.Logf(" %T: set", db)
|
||||
if err := db.Set(validKey, validValue, "ns1", "ns2"); err != nil {
|
||||
t.Errorf("%T) cannot set: %v", db, err)
|
||||
}
|
||||
t.Logf(" %T: get", db)
|
||||
if v, err := db.Get(validKey, "ns1", "ns2"); err != nil {
|
||||
t.Errorf("%T) cannot get: %v", db, err)
|
||||
} else if !bytes.Equal(v, validValue) {
|
||||
t.Errorf("%T) wrong get: %q vs %q", db, v, validValue)
|
||||
}
|
||||
t.Logf(" %T: list1", db)
|
||||
if keys, err := db.List([]string{"ns1", "ns2"}); err != nil || len(keys) < 1 {
|
||||
t.Errorf("%T) cannot List(): %v", db, err)
|
||||
} else if keys[0] != validKey {
|
||||
t.Errorf("%T) List()[0] != %s: %s: want %q, got %q", db, validKey, keys[0], validKey, keys[0])
|
||||
}
|
||||
t.Logf(" %T: list2", db)
|
||||
if keys, err := db.List([]string{"ns1", "ns2"}, validKey[:1]); err != nil || len(keys) < 1 {
|
||||
t.Errorf("%T) cannot List(prefix): %v", db, err)
|
||||
} else if keys[0] != validKey {
|
||||
t.Errorf("%T) List(prefix)[0] != %s: %s", db, validKey, keys[0])
|
||||
}
|
||||
|
||||
if dbstream, ok := db.(DBStream); ok {
|
||||
log.Printf("trying %T as DBStream", dbstream)
|
||||
raw := "raw"
|
||||
if err := dbstream.SetStream("k", strings.NewReader(raw), "ns1", "ns2"); err != nil {
|
||||
t.Errorf("%T) cannot setstream: %v", dbstream, err)
|
||||
t.Run(fmt.Sprintf("%T", db), func(t *testing.T) {
|
||||
log.Printf("Trying %T", db)
|
||||
t.Logf(" %T: set", db)
|
||||
if keys, err := db.List([]string{"ns1", "ns2"}); err != nil || len(keys) > 0 {
|
||||
t.Errorf("%T) cannot List() empty: (%T) %+v: %v", db, err, err, keys)
|
||||
}
|
||||
if r, err := dbstream.GetStream("k", "ns1", "ns2"); err != nil {
|
||||
t.Errorf("%T) cannot getstream: %v", dbstream, err)
|
||||
} else if b, err := ioutil.ReadAll(r); err != nil {
|
||||
t.Errorf("%T) cannot readall getstream: %v", dbstream, err)
|
||||
} else if string(b) != raw {
|
||||
t.Errorf("%T) wrong getstream: %v", dbstream, string(b))
|
||||
if keys, err := db.List([]string{path.Join("ns1", "ns2")}); err != nil || len(keys) > 0 {
|
||||
t.Errorf("%T) cannot List() empty w/ /: (%T) %+v: %v", db, err, err, keys)
|
||||
}
|
||||
if err := db.Set(validKey, validValue, "ns1", "ns2"); err != nil {
|
||||
t.Errorf("%T) cannot set: %v", db, err)
|
||||
}
|
||||
t.Logf(" %T: get", db)
|
||||
if v, err := db.Get(validKey, "ns1", "ns2"); err != nil {
|
||||
t.Errorf("%T) cannot get: %v", db, err)
|
||||
} else if !bytes.Equal(v, validValue) {
|
||||
t.Errorf("%T) wrong get: %q vs %q", db, v, validValue)
|
||||
}
|
||||
t.Logf(" %T: list1", db)
|
||||
if keys, err := db.List([]string{"ns1", "ns2"}); err != nil || len(keys) < 1 {
|
||||
t.Errorf("%T) cannot List(): %v", db, err)
|
||||
} else if keys[0] != validKey {
|
||||
t.Errorf("%T) List()[0] != %s: %s: want %q, got %q", db, validKey, keys[0], validKey, keys[0])
|
||||
}
|
||||
t.Logf(" %T: list2", db)
|
||||
if keys, err := db.List([]string{"ns1", "ns2"}, validKey[:1]); err != nil || len(keys) < 1 {
|
||||
t.Errorf("%T) cannot List(prefix): %v", db, err)
|
||||
} else if keys[0] != validKey {
|
||||
t.Errorf("%T) List(prefix)[0] != %s: %s", db, validKey, keys[0])
|
||||
}
|
||||
}
|
||||
|
||||
t.Logf(" %T: close", db)
|
||||
if err := db.Close(); err != nil {
|
||||
t.Errorf("cannot close %T: %v", db, err)
|
||||
}
|
||||
if dbstream, ok := db.(DBStream); ok {
|
||||
log.Printf("trying %T as DBStream", dbstream)
|
||||
raw := "raw"
|
||||
if err := dbstream.SetStream("k", strings.NewReader(raw), "ns1", "ns2"); err != nil {
|
||||
t.Errorf("%T) cannot setstream: %v", dbstream, err)
|
||||
}
|
||||
if r, err := dbstream.GetStream("k", "ns1", "ns2"); err != nil {
|
||||
t.Errorf("%T) cannot getstream: %v", dbstream, err)
|
||||
} else if b, err := ioutil.ReadAll(r); err != nil {
|
||||
t.Errorf("%T) cannot readall getstream: %v", dbstream, err)
|
||||
} else if string(b) != raw {
|
||||
t.Errorf("%T) wrong getstream: %v", dbstream, string(b))
|
||||
}
|
||||
}
|
||||
|
||||
t.Logf(" %T: close", db)
|
||||
if err := db.Close(); err != nil {
|
||||
t.Errorf("cannot close %T: %v", db, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -123,6 +123,8 @@ func (rc *RClone) List(ns []string, limits ...string) ([]string, error) {
|
|||
}
|
||||
entries, err := f.List("")
|
||||
if err != nil {
|
||||
return nil, nil
|
||||
// errs on does not exit
|
||||
return nil, err
|
||||
}
|
||||
names := make([]string, 0)
|
||||
|
|
|
|||
Loading…
Reference in New Issue