Index: chrome/common/extensions/docs/server2/caching_file_system_test.py |
diff --git a/chrome/common/extensions/docs/server2/caching_file_system_test.py b/chrome/common/extensions/docs/server2/caching_file_system_test.py |
index 9eee8161076551be90a9df7ad3b693dd7b720fd2..e7f7ecfb67670a29208990f49b4439540304851b 100755 |
--- a/chrome/common/extensions/docs/server2/caching_file_system_test.py |
+++ b/chrome/common/extensions/docs/server2/caching_file_system_test.py |
@@ -11,6 +11,7 @@ from caching_file_system import CachingFileSystem |
from file_system import FileSystem, StatInfo |
from future import Future |
from local_file_system import LocalFileSystem |
+from mock_file_system import MockFileSystem |
from object_store_creator import ObjectStoreCreator |
from test_file_system import TestFileSystem |
from test_object_store import TestObjectStore |
@@ -25,22 +26,25 @@ class CachingFileSystemTest(unittest.TestCase): |
# the underlying object store data is the same, within each test. |
self._object_store_dbs = {} |
- def _CreateCachingFileSystem(self, fs, use_existing_values=False): |
- def object_store_constructor(namespace, start_empty=False): |
+ def _CreateCachingFileSystem(self, fs, start_empty=False): |
+ def store_type_constructor(namespace, start_empty=False): |
+ '''Returns an ObjectStore backed onto test-lifetime-persistent objects |
+ in |_object_store_dbs|. |
+ ''' |
if namespace not in self._object_store_dbs: |
self._object_store_dbs[namespace] = {} |
db = self._object_store_dbs[namespace] |
if start_empty: |
db.clear() |
return TestObjectStore(namespace, init=db) |
- return CachingFileSystem( |
- fs, |
- ObjectStoreCreator.TestFactory(store_type=object_store_constructor), |
- use_existing_values=use_existing_values) |
+ object_store_creator = ObjectStoreCreator('test', |
+ start_empty=start_empty, |
+ store_type=store_type_constructor) |
+ return CachingFileSystem(fs, object_store_creator) |
def testReadFiles(self): |
- file_system = CachingFileSystem(_CreateLocalFs(), |
- ObjectStoreCreator.TestFactory()) |
+ file_system = self._CreateCachingFileSystem( |
+ _CreateLocalFs(), start_empty=False) |
expected = { |
'./test1.txt': 'test1\n', |
'./test2.txt': 'test2\n', |
@@ -51,8 +55,8 @@ class CachingFileSystemTest(unittest.TestCase): |
file_system.Read(['./test1.txt', './test2.txt', './test3.txt']).Get()) |
def testListDir(self): |
- file_system = CachingFileSystem(_CreateLocalFs(), |
- ObjectStoreCreator.TestFactory()) |
+ file_system = self._CreateCachingFileSystem( |
+ _CreateLocalFs(), start_empty=False) |
expected = ['dir/'] + ['file%d.html' % i for i in range(7)] |
file_system._read_object_store.Set( |
'list/', |
@@ -66,7 +70,7 @@ class CachingFileSystemTest(unittest.TestCase): |
self.assertEqual(expected, sorted(file_system.ReadSingle('list/'))) |
def testCaching(self): |
- fake_fs = TestFileSystem({ |
+ test_fs = TestFileSystem({ |
'bob': { |
'bob0': 'bob/bob0 contents', |
'bob1': 'bob/bob1 contents', |
@@ -74,75 +78,79 @@ class CachingFileSystemTest(unittest.TestCase): |
'bob3': 'bob/bob3 contents', |
} |
}) |
- file_system = self._CreateCachingFileSystem(fake_fs) |
+ mock_fs = MockFileSystem(test_fs) |
+ def create_empty_caching_fs(): |
+ return self._CreateCachingFileSystem(mock_fs, start_empty=True) |
+ file_system = create_empty_caching_fs() |
self.assertEqual('bob/bob0 contents', file_system.ReadSingle('bob/bob0')) |
- self.assertTrue(*fake_fs.CheckAndReset(read_count=1, stat_count=1)) |
+ self.assertTrue(*mock_fs.CheckAndReset(read_count=1, stat_count=1)) |
# Resource has been cached, so test resource is not re-fetched. |
self.assertEqual('bob/bob0 contents', file_system.ReadSingle('bob/bob0')) |
- self.assertTrue(*fake_fs.CheckAndReset()) |
+ self.assertTrue(*mock_fs.CheckAndReset()) |
# Test if the Stat version is the same the resource is not re-fetched. |
- file_system = self._CreateCachingFileSystem(fake_fs) |
+ file_system = create_empty_caching_fs() |
self.assertEqual('bob/bob0 contents', file_system.ReadSingle('bob/bob0')) |
- self.assertTrue(*fake_fs.CheckAndReset(stat_count=1)) |
+ self.assertTrue(*mock_fs.CheckAndReset(stat_count=1)) |
# Test if there is a newer version, the resource is re-fetched. |
- file_system = self._CreateCachingFileSystem(fake_fs) |
- fake_fs.IncrementStat(); |
+ file_system = create_empty_caching_fs() |
+ test_fs.IncrementStat(); |
self.assertEqual('bob/bob0 contents', file_system.ReadSingle('bob/bob0')) |
- self.assertTrue(*fake_fs.CheckAndReset(read_count=1, stat_count=1)) |
+ self.assertTrue(*mock_fs.CheckAndReset(read_count=1, stat_count=1)) |
# Test directory and subdirectory stats are cached. |
- file_system = self._CreateCachingFileSystem(fake_fs) |
+ file_system = create_empty_caching_fs() |
file_system._stat_object_store.Del('bob/bob0') |
file_system._read_object_store.Del('bob/bob0') |
file_system._stat_object_store.Del('bob/bob1') |
- fake_fs.IncrementStat(); |
+ test_fs.IncrementStat(); |
self.assertEqual('bob/bob1 contents', file_system.ReadSingle('bob/bob1')) |
self.assertEqual('bob/bob0 contents', file_system.ReadSingle('bob/bob0')) |
- self.assertTrue(*fake_fs.CheckAndReset(read_count=2, stat_count=1)) |
+ self.assertTrue(*mock_fs.CheckAndReset(read_count=2, stat_count=1)) |
self.assertEqual('bob/bob1 contents', file_system.ReadSingle('bob/bob1')) |
- self.assertTrue(*fake_fs.CheckAndReset()) |
+ self.assertTrue(*mock_fs.CheckAndReset()) |
# Test a more recent parent directory doesn't force a refetch of children. |
- file_system = self._CreateCachingFileSystem(fake_fs) |
+ file_system = create_empty_caching_fs() |
file_system._read_object_store.Del('bob/bob0') |
file_system._read_object_store.Del('bob/bob1') |
self.assertEqual('bob/bob1 contents', file_system.ReadSingle('bob/bob1')) |
self.assertEqual('bob/bob2 contents', file_system.ReadSingle('bob/bob2')) |
self.assertEqual('bob/bob3 contents', file_system.ReadSingle('bob/bob3')) |
- self.assertTrue(*fake_fs.CheckAndReset(read_count=3, stat_count=1)) |
+ self.assertTrue(*mock_fs.CheckAndReset(read_count=3, stat_count=1)) |
- fake_fs.IncrementStat(path='bob/') |
- file_system = self._CreateCachingFileSystem(fake_fs) |
+ test_fs.IncrementStat(path='bob/') |
+ file_system = create_empty_caching_fs() |
self.assertEqual('bob/bob1 contents', file_system.ReadSingle('bob/bob1')) |
self.assertEqual('bob/bob2 contents', file_system.ReadSingle('bob/bob2')) |
self.assertEqual('bob/bob3 contents', file_system.ReadSingle('bob/bob3')) |
- self.assertTrue(*fake_fs.CheckAndReset(stat_count=1)) |
+ self.assertTrue(*mock_fs.CheckAndReset(stat_count=1)) |
- file_system = self._CreateCachingFileSystem(fake_fs) |
+ file_system = create_empty_caching_fs() |
file_system._stat_object_store.Del('bob/bob0') |
self.assertEqual('bob/bob0 contents', file_system.ReadSingle('bob/bob0')) |
- self.assertTrue(*fake_fs.CheckAndReset(read_count=1, stat_count=1)) |
+ self.assertTrue(*mock_fs.CheckAndReset(read_count=1, stat_count=1)) |
self.assertEqual('bob/bob0 contents', file_system.ReadSingle('bob/bob0')) |
- self.assertTrue(*fake_fs.CheckAndReset()) |
+ self.assertTrue(*mock_fs.CheckAndReset()) |
def testCachedStat(self): |
- fake_fs = TestFileSystem({ |
+ test_fs = TestFileSystem({ |
'bob': { |
'bob0': 'bob/bob0 contents', |
'bob1': 'bob/bob1 contents' |
} |
}) |
- file_system = self._CreateCachingFileSystem(fake_fs, |
- use_existing_values=True) |
+ mock_fs = MockFileSystem(test_fs) |
+ |
+ file_system = self._CreateCachingFileSystem(mock_fs, start_empty=False) |
self.assertEqual(StatInfo('0'), file_system.Stat('bob/bob0')) |
- self.assertTrue(*fake_fs.CheckAndReset(stat_count=1)) |
+ self.assertTrue(*mock_fs.CheckAndReset(stat_count=1)) |
self.assertEqual(StatInfo('0'), file_system.Stat('bob/bob0')) |
- self.assertTrue(*fake_fs.CheckAndReset()) |
+ self.assertTrue(*mock_fs.CheckAndReset()) |
# Caching happens on a directory basis, so reading other files from that |
# directory won't result in a stat. |
@@ -150,41 +158,42 @@ class CachingFileSystemTest(unittest.TestCase): |
self.assertEqual( |
StatInfo('0', child_versions={'bob0': '0', 'bob1': '0'}), |
file_system.Stat('bob/')) |
- self.assertTrue(*fake_fs.CheckAndReset()) |
+ self.assertTrue(*mock_fs.CheckAndReset()) |
# Even though the stat is bumped, the object store still has it cached so |
# this won't update. |
- fake_fs.IncrementStat() |
+ test_fs.IncrementStat() |
self.assertEqual(StatInfo('0'), file_system.Stat('bob/bob0')) |
self.assertEqual(StatInfo('0'), file_system.Stat('bob/bob1')) |
self.assertEqual( |
StatInfo('0', child_versions={'bob0': '0', 'bob1': '0'}), |
file_system.Stat('bob/')) |
- self.assertTrue(*fake_fs.CheckAndReset()) |
+ self.assertTrue(*mock_fs.CheckAndReset()) |
def testFreshStat(self): |
- fake_fs = TestFileSystem({ |
+ test_fs = TestFileSystem({ |
'bob': { |
'bob0': 'bob/bob0 contents', |
'bob1': 'bob/bob1 contents' |
} |
}) |
+ mock_fs = MockFileSystem(test_fs) |
def run_expecting_stat(stat): |
def run(): |
- file_system = self._CreateCachingFileSystem(fake_fs) |
+ file_system = self._CreateCachingFileSystem(mock_fs, start_empty=True) |
self.assertEqual( |
StatInfo(stat, child_versions={'bob0': stat, 'bob1': stat}), |
file_system.Stat('bob/')) |
- self.assertTrue(*fake_fs.CheckAndReset(stat_count=1)) |
+ self.assertTrue(*mock_fs.CheckAndReset(stat_count=1)) |
self.assertEqual(StatInfo(stat), file_system.Stat('bob/bob0')) |
self.assertEqual(StatInfo(stat), file_system.Stat('bob/bob0')) |
- self.assertTrue(*fake_fs.CheckAndReset()) |
+ self.assertTrue(*mock_fs.CheckAndReset()) |
run() |
run() |
run_expecting_stat('0') |
- fake_fs.IncrementStat() |
+ test_fs.IncrementStat() |
run_expecting_stat('1') |
if __name__ == '__main__': |