Added EntryCachingTest.
parent
b1ad507c85
commit
ac34f0f721
|
@ -271,3 +271,102 @@ func (t *NoCachingTest) StatRenumberMtimeStat() {
|
|||
ExpectThat(dirAfter.ModTime(), timeutil.TimeEq(newMtime))
|
||||
ExpectThat(barAfter.ModTime(), timeutil.TimeEq(newMtime))
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// Entry caching
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
type EntryCachingTest struct {
|
||||
cachingFSTest
|
||||
lookupEntryTimeout time.Duration
|
||||
}
|
||||
|
||||
var _ SetUpInterface = &EntryCachingTest{}
|
||||
|
||||
func init() { RegisterTestSuite(&EntryCachingTest{}) }
|
||||
|
||||
func (t *EntryCachingTest) SetUp(ti *TestInfo) {
|
||||
t.lookupEntryTimeout = 250 * time.Millisecond
|
||||
t.cachingFSTest.setUp(t.lookupEntryTimeout, 0)
|
||||
}
|
||||
|
||||
func (t *EntryCachingTest) StatStat() {
|
||||
fooBefore, dirBefore, barBefore := t.statAll()
|
||||
fooAfter, dirAfter, barAfter := t.statAll()
|
||||
|
||||
// Make sure everything matches.
|
||||
ExpectThat(fooAfter.ModTime(), timeutil.TimeEq(fooBefore.ModTime()))
|
||||
ExpectThat(dirAfter.ModTime(), timeutil.TimeEq(dirBefore.ModTime()))
|
||||
ExpectThat(barAfter.ModTime(), timeutil.TimeEq(barBefore.ModTime()))
|
||||
|
||||
ExpectEq(getInodeID(fooBefore), getInodeID(fooAfter))
|
||||
ExpectEq(getInodeID(dirBefore), getInodeID(dirAfter))
|
||||
ExpectEq(getInodeID(barBefore), getInodeID(barAfter))
|
||||
}
|
||||
|
||||
func (t *EntryCachingTest) StatRenumberStat() {
|
||||
fooBefore, dirBefore, barBefore := t.statAll()
|
||||
t.fs.RenumberInodes()
|
||||
fooAfter, dirAfter, barAfter := t.statAll()
|
||||
|
||||
// We should still see the old inode IDs, because the inode entries should
|
||||
// have been cached.
|
||||
ExpectEq(getInodeID(fooBefore), getInodeID(fooAfter))
|
||||
ExpectEq(getInodeID(dirBefore), getInodeID(dirAfter))
|
||||
ExpectEq(getInodeID(barBefore), getInodeID(barAfter))
|
||||
|
||||
// But after waiting for the entry cache to expire, we should see the new
|
||||
// IDs.
|
||||
time.Sleep(2 * t.lookupEntryTimeout)
|
||||
fooAfter, dirAfter, barAfter = t.statAll()
|
||||
|
||||
ExpectEq(t.fs.FooID(), getInodeID(fooAfter))
|
||||
ExpectEq(t.fs.DirID(), getInodeID(dirAfter))
|
||||
ExpectEq(t.fs.BarID(), getInodeID(barAfter))
|
||||
}
|
||||
|
||||
func (t *EntryCachingTest) StatMtimeStat() {
|
||||
newMtime := t.initialMtime.Add(time.Second)
|
||||
|
||||
t.statAll()
|
||||
t.fs.SetMtime(newMtime)
|
||||
fooAfter, dirAfter, barAfter := t.statAll()
|
||||
|
||||
// We should see the new mtimes, because the attributes should not have been
|
||||
// cached.
|
||||
ExpectThat(fooAfter.ModTime(), timeutil.TimeEq(newMtime))
|
||||
ExpectThat(dirAfter.ModTime(), timeutil.TimeEq(newMtime))
|
||||
ExpectThat(barAfter.ModTime(), timeutil.TimeEq(newMtime))
|
||||
}
|
||||
|
||||
func (t *EntryCachingTest) StatRenumberMtimeStat() {
|
||||
newMtime := t.initialMtime.Add(time.Second)
|
||||
|
||||
fooBefore, dirBefore, barBefore := t.statAll()
|
||||
t.fs.RenumberInodes()
|
||||
t.fs.SetMtime(newMtime)
|
||||
fooAfter, dirAfter, barAfter := t.statAll()
|
||||
|
||||
// We should still see the old inode IDs, because the inode entries should
|
||||
// have been cached. But the attributes should not have been.
|
||||
ExpectEq(getInodeID(fooBefore), getInodeID(fooAfter))
|
||||
ExpectEq(getInodeID(dirBefore), getInodeID(dirAfter))
|
||||
ExpectEq(getInodeID(barBefore), getInodeID(barAfter))
|
||||
|
||||
ExpectThat(fooAfter.ModTime(), timeutil.TimeEq(newMtime))
|
||||
ExpectThat(dirAfter.ModTime(), timeutil.TimeEq(newMtime))
|
||||
ExpectThat(barAfter.ModTime(), timeutil.TimeEq(newMtime))
|
||||
|
||||
// After waiting for the entry cache to expire, we should see fresh
|
||||
// everything.
|
||||
time.Sleep(2 * t.lookupEntryTimeout)
|
||||
fooAfter, dirAfter, barAfter = t.statAll()
|
||||
|
||||
ExpectEq(t.fs.FooID(), getInodeID(fooAfter))
|
||||
ExpectEq(t.fs.DirID(), getInodeID(dirAfter))
|
||||
ExpectEq(t.fs.BarID(), getInodeID(barAfter))
|
||||
|
||||
ExpectThat(fooAfter.ModTime(), timeutil.TimeEq(newMtime))
|
||||
ExpectThat(dirAfter.ModTime(), timeutil.TimeEq(newMtime))
|
||||
ExpectThat(barAfter.ModTime(), timeutil.TimeEq(newMtime))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue