2
2
mirror of https://github.com/octoleo/restic.git synced 2024-11-26 14:56:29 +00:00

backend: Add test for List()

This commit is contained in:
Alexander Neumann 2017-09-17 11:09:09 +02:00
parent 40edf00182
commit f61dab1774

View File

@ -240,6 +240,53 @@ func (s *Suite) TestLoad(t *testing.T) {
test.OK(t, b.Remove(context.TODO(), handle)) test.OK(t, b.Remove(context.TODO(), handle))
} }
// TestList makes sure that the backend can list more than a thousand files.
func (s *Suite) TestList(t *testing.T) {
seedRand(t)
b := s.open(t)
defer s.close(t, b)
const numTestFiles = 1233
list1 := restic.NewIDSet()
for i := 0; i < numTestFiles; i++ {
data := []byte(fmt.Sprintf("random test blob %v", i))
id := restic.Hash(data)
h := restic.Handle{Type: restic.DataFile, Name: id.String()}
err := b.Save(context.TODO(), h, bytes.NewReader(data))
if err != nil {
t.Fatal(err)
}
list1.Insert(id)
}
t.Logf("wrote %v files", len(list1))
list2 := restic.NewIDSet()
for name := range b.List(context.TODO(), restic.DataFile) {
id, err := restic.ParseID(name)
if err != nil {
t.Fatal(err)
}
list2.Insert(id)
}
t.Logf("loaded %v IDs from backend", len(list2))
if !list1.Equals(list2) {
t.Errorf("lists are not equal, list1 %d entries, list2 %d entries", len(list1), len(list2))
}
for id := range list1 {
h := restic.Handle{Type: restic.DataFile, Name: id.String()}
err := s.delayedRemove(t, b, h)
if err != nil {
t.Fatal(err)
}
}
}
type errorCloser struct { type errorCloser struct {
io.Reader io.Reader
l int l int