From 64906024604ba8d6e7d01e90430d6607c8a55e8a Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Tue, 17 Mar 2015 13:55:04 +1100 Subject: [PATCH] NoCachingTest.StatStat --- samples/cachingfs/caching_fs_test.go | 58 +++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 6 deletions(-) diff --git a/samples/cachingfs/caching_fs_test.go b/samples/cachingfs/caching_fs_test.go index 6c2a308..1e40904 100644 --- a/samples/cachingfs/caching_fs_test.go +++ b/samples/cachingfs/caching_fs_test.go @@ -20,6 +20,7 @@ import ( "os" "path" "strings" + "syscall" "testing" "time" @@ -36,8 +37,10 @@ func TestHelloFS(t *testing.T) { RunTests(t) } //////////////////////////////////////////////////////////////////////// type CachingFSTest struct { - dir string - mfs *fuse.MountedFileSystem + dir string + fs cachingfs.CachingFS + mfs *fuse.MountedFileSystem + initialMtime time.Time } var _ TearDownInterface = &CachingFSTest{} @@ -51,16 +54,20 @@ func (t *CachingFSTest) setUp( t.dir, err = ioutil.TempDir("", "caching_fs_test") AssertEq(nil, err) - // Create a file system. - fs, err := cachingfs.NewCachingFS(lookupEntryTimeout, getattrTimeout) + // Create the file system. + t.fs, err = cachingfs.NewCachingFS(lookupEntryTimeout, getattrTimeout) AssertEq(nil, err) // Mount it. - t.mfs, err = fuse.Mount(t.dir, fs) + t.mfs, err = fuse.Mount(t.dir, t.fs) AssertEq(nil, err) err = t.mfs.WaitForReady(context.Background()) AssertEq(nil, err) + + // Set up the mtime. + t.initialMtime = time.Date(2012, 8, 15, 22, 56, 0, 0, time.Local) + t.fs.SetMtime(t.initialMtime) } func (t *CachingFSTest) TearDown() { @@ -92,6 +99,10 @@ func (t *CachingFSTest) TearDown() { } } +func getInodeID(fi os.FileInfo) uint64 { + return fi.Sys().(*syscall.Stat_t).Ino +} + //////////////////////////////////////////////////////////////////////// // Basics //////////////////////////////////////////////////////////////////////// @@ -137,7 +148,9 @@ func (t *BasicsTest) StatFoo() { ExpectEq("foo", fi.Name()) ExpectEq(cachingfs.FooSize, fi.Size()) ExpectEq(0777, fi.Mode()) + ExpectEq(t.initialMtime, fi.ModTime()) ExpectFalse(fi.IsDir()) + ExpectEq(t.fs.FooID(), getInodeID(fi)) } func (t *BasicsTest) StatDir() { @@ -146,7 +159,9 @@ func (t *BasicsTest) StatDir() { ExpectEq("dir", fi.Name()) ExpectEq(os.ModeDir|0777, fi.Mode()) + ExpectEq(t.initialMtime, fi.ModTime()) ExpectTrue(fi.IsDir()) + ExpectEq(t.fs.DirID(), getInodeID(fi)) } func (t *BasicsTest) StatBar() { @@ -156,7 +171,9 @@ func (t *BasicsTest) StatBar() { ExpectEq("bar", fi.Name()) ExpectEq(cachingfs.BarSize, fi.Size()) ExpectEq(0777, fi.Mode()) + ExpectEq(t.initialMtime, fi.ModTime()) ExpectFalse(fi.IsDir()) + ExpectEq(t.fs.BarID(), getInodeID(fi)) } //////////////////////////////////////////////////////////////////////// @@ -181,7 +198,36 @@ func (t *NoCachingTest) SetUp(ti *TestInfo) { } func (t *NoCachingTest) StatStat() { - AssertTrue(false, "TODO") + var err error + + // Stat everything. + fooBefore, err := os.Stat(path.Join(t.dir, "foo")) + AssertEq(nil, err) + + dirBefore, err := os.Stat(path.Join(t.dir, "dir")) + AssertEq(nil, err) + + barBefore, err := os.Stat(path.Join(t.dir, "bar")) + AssertEq(nil, err) + + // Stat again. + fooAfter, err := os.Stat(path.Join(t.dir, "foo")) + AssertEq(nil, err) + + dirAfter, err := os.Stat(path.Join(t.dir, "dir")) + AssertEq(nil, err) + + barAfter, err := os.Stat(path.Join(t.dir, "bar")) + AssertEq(nil, err) + + // Make sure everything matches. + ExpectEq(fooBefore.ModTime(), fooAfter.ModTime()) + ExpectEq(dirBefore.ModTime(), dirAfter.ModTime()) + ExpectEq(barBefore.ModTime(), barAfter.ModTime()) + + ExpectEq(getInodeID(fooBefore), getInodeID(fooAfter)) + ExpectEq(getInodeID(dirBefore), getInodeID(dirAfter)) + ExpectEq(getInodeID(barBefore), getInodeID(barAfter)) } func (t *NoCachingTest) StatRenumberStat() {