From a95b1fb276e7d7e96acbeab8779846db0ddf4fd3 Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Wed, 29 Jul 2015 05:41:31 +0000 Subject: [PATCH] PageCacheTest.SingleFileHandle_NoKeepCache --- samples/cachingfs/caching_fs.go | 7 +++-- samples/cachingfs/caching_fs_test.go | 41 +++++++++++++++++++++++----- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/samples/cachingfs/caching_fs.go b/samples/cachingfs/caching_fs.go index fa537d2..b03c346 100644 --- a/samples/cachingfs/caching_fs.go +++ b/samples/cachingfs/caching_fs.go @@ -61,6 +61,10 @@ type CachingFS interface { // Cause further queries for the attributes of inodes to use the supplied // time as the inode's mtime. SetMtime(mtime time.Time) + + // Instruct the file system whether or not to reply to OpenFileOp with + // FOPEN_KEEP_CACHE set. + SetKeepCache(keep bool) } // Create a file system that issues cacheable responses according to the @@ -240,9 +244,6 @@ func (fs *cachingFS) SetMtime(mtime time.Time) { fs.mtime = mtime } -// Instruct the file system whether or not to reply to OpenFileOp with -// FOPEN_KEEP_CACHE set. -// // LOCKS_EXCLUDED(fs.mu) func (fs *cachingFS) SetKeepCache(keep bool) { // TODO diff --git a/samples/cachingfs/caching_fs_test.go b/samples/cachingfs/caching_fs_test.go index e467b81..634a6ef 100644 --- a/samples/cachingfs/caching_fs_test.go +++ b/samples/cachingfs/caching_fs_test.go @@ -15,6 +15,8 @@ package cachingfs_test import ( + "bytes" + "io/ioutil" "os" "path" "runtime" @@ -553,18 +555,43 @@ func (t *PageCacheTest) SetUp(ti *TestInfo) { t.cachingFSTest.setUp(ti, lookupEntryTimeout, getattrTimeout) } -func (t *PageCacheTest) SingleFile_NoKeepCache() { +func (t *PageCacheTest) SingleFileHandle_NoKeepCache() { + t.fs.SetKeepCache(false) + + // Open the file. + f, err := os.Open(path.Join(t.Dir, "foo")) + AssertEq(nil, err) + + defer f.Close() + + // Read its contents once. + f.Seek(0, 0) + AssertEq(nil, err) + + c1, err := ioutil.ReadAll(f) + AssertEq(nil, err) + AssertEq(cachingfs.FooSize, len(c1)) + + // And again. + f.Seek(0, 0) + AssertEq(nil, err) + + c2, err := ioutil.ReadAll(f) + AssertEq(nil, err) + AssertEq(cachingfs.FooSize, len(c2)) + + // We should have seen the same contents each time. + ExpectTrue(bytes.Equal(c1, c2)) +} + +func (t *PageCacheTest) SingleFileHandle_KeepCache() { AssertTrue(false, "TODO") } -func (t *PageCacheTest) SingleFile_KeepCache() { +func (t *PageCacheTest) TwoFileHandles_NoKeepCache() { AssertTrue(false, "TODO") } -func (t *PageCacheTest) TwoFiles_NoKeepCache() { - AssertTrue(false, "TODO") -} - -func (t *PageCacheTest) TwoFiles_KeepCache() { +func (t *PageCacheTest) TwoFileHandles_KeepCache() { AssertTrue(false, "TODO") }