// CheckListingWithPrecision checks the fs to see if it has the // expected contents with the given precision. func CheckListingWithPrecision(t *testing.T, f fs.Fs, items []Item, precision time.Duration) { is := NewItems(items) oldErrors := fs.Stats.GetErrors() var objs []fs.Object for i := 1; i <= 5; i++ { objs = nil for obj := range f.List() { objs = append(objs, obj) } if len(objs) == len(items) { break } t.Logf("Sleeping for 1 second for list eventual consistency: %d/5", i) time.Sleep(1 * time.Second) } for _, obj := range objs { if obj == nil { t.Errorf("Unexpected nil in List()") continue } is.Find(t, obj, precision) } is.Done(t) // Don't notice an error when listing an empty directory if len(items) == 0 && oldErrors == 0 && fs.Stats.GetErrors() == 1 { fs.Stats.ResetErrors() } }
// Checks the fs to see if it has the expected contents func CheckListingWithPrecision(t *testing.T, f fs.Fs, items []Item, precision time.Duration) { is := NewItems(items) for obj := range f.List() { if obj == nil { t.Errorf("Unexpected nil in List()") continue } is.Find(t, obj, precision) } is.Done(t) }
// Checks the fs to see if it has the expected contents func CheckListingWithPrecision(t *testing.T, f fs.Fs, items []Item, precision time.Duration) { is := NewItems(items) oldErrors := fs.Stats.GetErrors() for obj := range f.List() { if obj == nil { t.Errorf("Unexpected nil in List()") continue } is.Find(t, obj, precision) } is.Done(t) // Don't notice an error when listing an empty directory if len(items) == 0 && oldErrors == 0 && fs.Stats.GetErrors() == 1 { fs.Stats.ResetErrors() } }
// CheckListingWithPrecision checks the fs to see if it has the // expected contents with the given precision. func CheckListingWithPrecision(t *testing.T, f fs.Fs, items []Item, precision time.Duration) { is := NewItems(items) oldErrors := fs.Stats.GetErrors() var objs []fs.Object const retries = 6 sleep := time.Second / 2 for i := 1; i <= retries; i++ { objs = nil for obj := range f.List() { objs = append(objs, obj) } if len(objs) == len(items) { // Put an extra sleep in if we did any retries just to make sure it really // is consistent (here is looking at you Amazon Cloud Drive!) if i != 1 { extraSleep := 5*time.Second + sleep t.Logf("Sleeping for %v just to make sure", extraSleep) time.Sleep(extraSleep) } break } sleep *= 2 t.Logf("Sleeping for %v for list eventual consistency: %d/%d", sleep, i, retries) time.Sleep(sleep) } for _, obj := range objs { if obj == nil { t.Errorf("Unexpected nil in List()") continue } is.Find(t, obj, precision) } is.Done(t) // Don't notice an error when listing an empty directory if len(items) == 0 && oldErrors == 0 && fs.Stats.GetErrors() == 1 { fs.Stats.ResetErrors() } }