NoCachingTest.StatStat

geesefs-0-30-9
Aaron Jacobs 2015-03-17 13:55:04 +11:00
parent f1914f74b2
commit 6490602460
1 changed files with 52 additions and 6 deletions

View File

@ -20,6 +20,7 @@ import (
"os" "os"
"path" "path"
"strings" "strings"
"syscall"
"testing" "testing"
"time" "time"
@ -36,8 +37,10 @@ func TestHelloFS(t *testing.T) { RunTests(t) }
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
type CachingFSTest struct { type CachingFSTest struct {
dir string dir string
mfs *fuse.MountedFileSystem fs cachingfs.CachingFS
mfs *fuse.MountedFileSystem
initialMtime time.Time
} }
var _ TearDownInterface = &CachingFSTest{} var _ TearDownInterface = &CachingFSTest{}
@ -51,16 +54,20 @@ func (t *CachingFSTest) setUp(
t.dir, err = ioutil.TempDir("", "caching_fs_test") t.dir, err = ioutil.TempDir("", "caching_fs_test")
AssertEq(nil, err) AssertEq(nil, err)
// Create a file system. // Create the file system.
fs, err := cachingfs.NewCachingFS(lookupEntryTimeout, getattrTimeout) t.fs, err = cachingfs.NewCachingFS(lookupEntryTimeout, getattrTimeout)
AssertEq(nil, err) AssertEq(nil, err)
// Mount it. // Mount it.
t.mfs, err = fuse.Mount(t.dir, fs) t.mfs, err = fuse.Mount(t.dir, t.fs)
AssertEq(nil, err) AssertEq(nil, err)
err = t.mfs.WaitForReady(context.Background()) err = t.mfs.WaitForReady(context.Background())
AssertEq(nil, err) 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() { 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 // Basics
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
@ -137,7 +148,9 @@ func (t *BasicsTest) StatFoo() {
ExpectEq("foo", fi.Name()) ExpectEq("foo", fi.Name())
ExpectEq(cachingfs.FooSize, fi.Size()) ExpectEq(cachingfs.FooSize, fi.Size())
ExpectEq(0777, fi.Mode()) ExpectEq(0777, fi.Mode())
ExpectEq(t.initialMtime, fi.ModTime())
ExpectFalse(fi.IsDir()) ExpectFalse(fi.IsDir())
ExpectEq(t.fs.FooID(), getInodeID(fi))
} }
func (t *BasicsTest) StatDir() { func (t *BasicsTest) StatDir() {
@ -146,7 +159,9 @@ func (t *BasicsTest) StatDir() {
ExpectEq("dir", fi.Name()) ExpectEq("dir", fi.Name())
ExpectEq(os.ModeDir|0777, fi.Mode()) ExpectEq(os.ModeDir|0777, fi.Mode())
ExpectEq(t.initialMtime, fi.ModTime())
ExpectTrue(fi.IsDir()) ExpectTrue(fi.IsDir())
ExpectEq(t.fs.DirID(), getInodeID(fi))
} }
func (t *BasicsTest) StatBar() { func (t *BasicsTest) StatBar() {
@ -156,7 +171,9 @@ func (t *BasicsTest) StatBar() {
ExpectEq("bar", fi.Name()) ExpectEq("bar", fi.Name())
ExpectEq(cachingfs.BarSize, fi.Size()) ExpectEq(cachingfs.BarSize, fi.Size())
ExpectEq(0777, fi.Mode()) ExpectEq(0777, fi.Mode())
ExpectEq(t.initialMtime, fi.ModTime())
ExpectFalse(fi.IsDir()) ExpectFalse(fi.IsDir())
ExpectEq(t.fs.BarID(), getInodeID(fi))
} }
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
@ -181,7 +198,36 @@ func (t *NoCachingTest) SetUp(ti *TestInfo) {
} }
func (t *NoCachingTest) StatStat() { 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() { func (t *NoCachingTest) StatRenumberStat() {