forked from TrueCloudLab/restic
fuse: test that the same fs.Node is used for the same file
This commit is contained in:
parent
0e9716a6e6
commit
8aebea7ba2
1 changed files with 28 additions and 0 deletions
|
@ -217,6 +217,34 @@ func testTopUIDGID(t *testing.T, cfg Config, repo restic.Repository, uid, gid ui
|
|||
rtest.Equals(t, uint32(0), attr.Gid)
|
||||
}
|
||||
|
||||
// The Lookup method must return the same Node object unless it was forgotten in the meantime
|
||||
func testStableLookup(t *testing.T, node fs.Node, path string) fs.Node {
|
||||
t.Helper()
|
||||
result, err := node.(fs.NodeStringLookuper).Lookup(context.TODO(), path)
|
||||
rtest.OK(t, err)
|
||||
result2, err := node.(fs.NodeStringLookuper).Lookup(context.TODO(), path)
|
||||
rtest.OK(t, err)
|
||||
rtest.Assert(t, result == result2, "%v are not the same object", path)
|
||||
|
||||
result2.(fs.NodeForgetter).Forget()
|
||||
result2, err = node.(fs.NodeStringLookuper).Lookup(context.TODO(), path)
|
||||
rtest.OK(t, err)
|
||||
rtest.Assert(t, result != result2, "object for %v should change after forget", path)
|
||||
return result
|
||||
}
|
||||
|
||||
func TestStableNodeObjects(t *testing.T) {
|
||||
repo := repository.TestRepository(t)
|
||||
restic.TestCreateSnapshot(t, repo, time.Unix(1460289341, 207401672), 2)
|
||||
root := NewRoot(repo, Config{})
|
||||
|
||||
idsdir := testStableLookup(t, root, "ids")
|
||||
snapID := loadFirstSnapshot(t, repo).ID().Str()
|
||||
snapshotdir := testStableLookup(t, idsdir, snapID)
|
||||
dir := testStableLookup(t, snapshotdir, "dir-0")
|
||||
testStableLookup(t, dir, "file-2")
|
||||
}
|
||||
|
||||
// Test reporting of fuse.Attr.Blocks in multiples of 512.
|
||||
func TestBlocks(t *testing.T) {
|
||||
root := &Root{}
|
||||
|
|
Loading…
Reference in a new issue