예제 #1
0
 def setUp(self):
     object_store = InMemoryObjectStore('')
     self._file_system = MemcacheFileSystem(
         LocalFileSystem(os.path.join(sys.path[0], 'test_data')),
         object_store)
     self._example_zipper = ExampleZipper(
         self._file_system,
         CompiledFileSystem.Factory(self._file_system, object_store),
         'example_zipper')
 def testReadFiles(self):
   file_system = MemcacheFileSystem(self._local_fs, self._object_store)
   expected = {
     './test1.txt': 'test1\n',
     './test2.txt': 'test2\n',
     './test3.txt': 'test3\n',
   }
   self.assertEqual(
       expected,
       file_system.Read(['./test1.txt', './test2.txt', './test3.txt']).Get())
예제 #3
0
파일: handler.py 프로젝트: ftanx/k2cro4
def _CreateMemcacheFileSystem(branch, branch_memcache):
    svn_url = _GetURLFromBranch(branch) + '/' + EXTENSIONS_PATH
    stat_fetcher = AppEngineUrlFetcher(
        svn_url.replace(url_constants.SVN_URL, url_constants.VIEWVC_URL))
    fetcher = AppEngineUrlFetcher(svn_url)
    return MemcacheFileSystem(SubversionFileSystem(fetcher, stat_fetcher),
                              branch_memcache)
예제 #4
0
class ExampleZipperTest(unittest.TestCase):
    def setUp(self):
        object_store = InMemoryObjectStore('')
        self._file_system = MemcacheFileSystem(
            LocalFileSystem(os.path.join(sys.path[0], 'test_data')),
            object_store)
        self._example_zipper = ExampleZipper(
            self._file_system,
            CompiledFileSystem.Factory(self._file_system, object_store),
            'example_zipper')

    def testCreateZip(self):
        # Cache manifest.json as unicode and make sure ExampleZipper doesn't error.
        self._file_system.ReadSingle('example_zipper/basic/manifest.json')
        self.assertTrue(len(self._example_zipper.Create('basic')) > 0)
 def testListDir(self):
   file_system = MemcacheFileSystem(self._local_fs, self._object_store)
   expected = ['dir/']
   for i in range(7):
     expected.append('file%d.html' % i)
   self._SetReadCacheItem('list/', expected, file_system.Stat('list/').version)
   self.assertEqual(expected,
                    sorted(file_system.ReadSingle('list/')))
   expected.remove('file0.html')
   self._SetReadCacheItem('list/', expected, file_system.Stat('list/').version)
   self.assertEqual(expected,
                    sorted(file_system.ReadSingle('list/')))
  def testCaching(self):
    fake_fs = _FakeFileSystem()
    file_system = MemcacheFileSystem(fake_fs, self._object_store)
    self.assertEqual('bob/bob0', file_system.ReadSingle('bob/bob0'))
    self.assertTrue(fake_fs.CheckAndReset(read_count=1, stat_count=1))

    # Resource has been cached, so test resource is not re-fetched.
    self.assertEqual('bob/bob0', file_system.ReadSingle('bob/bob0'))
    self.assertTrue(fake_fs.CheckAndReset())

    # Test if the Stat version is the same the resource is not re-fetched.
    self._DeleteStatCacheItem('bob/bob0')
    self.assertEqual('bob/bob0', file_system.ReadSingle('bob/bob0'))
    self.assertTrue(fake_fs.CheckAndReset(stat_count=1))

    # Test if there is a newer version, the resource is re-fetched.
    self._DeleteStatCacheItem('bob/bob0')
    fake_fs.stat_value += 1
    self.assertEqual('bob/bob0', file_system.ReadSingle('bob/bob0'))
    self.assertTrue(fake_fs.CheckAndReset(read_count=1, stat_count=1))

    # Test directory and subdirectory stats are cached.
    self._DeleteStatCacheItem('bob/bob0')
    self._DeleteReadCacheItem('bob/bob0')
    self._DeleteStatCacheItem('bob/bob1')
    self.assertEqual('bob/bob1', file_system.ReadSingle('bob/bob1'))
    self.assertEqual('bob/bob0', file_system.ReadSingle('bob/bob0'))
    self.assertTrue(fake_fs.CheckAndReset(read_count=2, stat_count=1))
    self.assertEqual('bob/bob1', file_system.ReadSingle('bob/bob1'))
    self.assertTrue(fake_fs.CheckAndReset())

    # Test a more recent parent directory doesn't force a refetch of children.
    self._DeleteReadCacheItem('bob/bob0')
    self._DeleteReadCacheItem('bob/bob1')
    self.assertEqual('bob/bob1', file_system.ReadSingle('bob/bob1'))
    self.assertEqual('bob/bob2', file_system.ReadSingle('bob/bob2'))
    self.assertEqual('bob/bob3', file_system.ReadSingle('bob/bob3'))
    self.assertTrue(fake_fs.CheckAndReset(read_count=3))
    self._SetStatCacheItem('bob/', 10)
    self.assertEqual('bob/bob1', file_system.ReadSingle('bob/bob1'))
    self.assertEqual('bob/bob2', file_system.ReadSingle('bob/bob2'))
    self.assertEqual('bob/bob3', file_system.ReadSingle('bob/bob3'))
    self.assertTrue(fake_fs.CheckAndReset())

    self._DeleteStatCacheItem('bob/bob0')
    self.assertEqual('bob/bob0', file_system.ReadSingle('bob/bob0'))
    self.assertTrue(fake_fs.CheckAndReset(read_count=1, stat_count=1))
    self.assertEqual('bob/bob0', file_system.ReadSingle('bob/bob0'))
    self.assertTrue(fake_fs.CheckAndReset())