mirror of
https://github.com/rclone/rclone.git
synced 2025-08-16 08:38:11 +02:00
vfs: make integration TestDirEntryModTimeInvalidation test more reliable
Before this change it was not taking the Precision of the remote into account.
This commit is contained in:
@ -669,21 +669,22 @@ func TestDirEntryModTimeInvalidation(t *testing.T) {
|
|||||||
t.Skip("dirent modtime is unreliable on Windows filesystems")
|
t.Skip("dirent modtime is unreliable on Windows filesystems")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Needs to be less than 2x the wait time below, othewrwise the entry
|
|
||||||
// gets cleared out before it had a chance to be updated.
|
|
||||||
vfs.Opt.DirCacheTime = fs.Duration(50 * time.Millisecond)
|
|
||||||
|
|
||||||
r.WriteObject(context.Background(), "dir/file1", "file1 contents", t1)
|
r.WriteObject(context.Background(), "dir/file1", "file1 contents", t1)
|
||||||
|
|
||||||
|
// Read the modtime of the directory fresh
|
||||||
|
vfs.FlushDirCache()
|
||||||
node, err := vfs.Stat("dir")
|
node, err := vfs.Stat("dir")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
modTime1 := node.(*Dir).DirEntry().ModTime(context.Background())
|
modTime1 := node.(*Dir).DirEntry().ModTime(context.Background())
|
||||||
|
|
||||||
// Wait some time, then write another file which must update ModTime of
|
// Wait some time (we wait for Precision+10%), then write another file
|
||||||
// the directory.
|
// which should update the ModTime of the directory.
|
||||||
time.Sleep(75 * time.Millisecond)
|
prec := (11 * vfs.f.Precision()) / 10
|
||||||
|
time.Sleep(max(100*time.Millisecond, prec))
|
||||||
r.WriteObject(context.Background(), "dir/file2", "file2 contents", t2)
|
r.WriteObject(context.Background(), "dir/file2", "file2 contents", t2)
|
||||||
|
|
||||||
|
// Read the modtime of the directory fresh again - it should have changed
|
||||||
|
vfs.FlushDirCache()
|
||||||
node2, err := vfs.Stat("dir")
|
node2, err := vfs.Stat("dir")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
modTime2 := node2.(*Dir).DirEntry().ModTime(context.Background())
|
modTime2 := node2.(*Dir).DirEntry().ModTime(context.Background())
|
||||||
|
Reference in New Issue
Block a user