def test_BadRead(self): # Check that reading from a non-existant key, fails. with working_directory.TemporaryWorkingDirectory() as work_dir: mem_storage = fake_storage.FakeStorage() storage = local_storage_cache.LocalStorageCache( cache_path=os.path.join(work_dir, 'db'), storage=mem_storage) self.assertEquals(None, storage.GetData('foo'))
def test_HitWrappedStorage(self): # Check that if something isn't locally cached primary storage is hit. with working_directory.TemporaryWorkingDirectory() as work_dir: mem_storage = fake_storage.FakeStorage() storage = local_storage_cache.LocalStorageCache( cache_path=os.path.join(work_dir, 'db'), storage=mem_storage) mem_storage.PutData('hello', 'foo') self.assertEquals('hello', storage.GetData('foo'))
def test_HitLocalFirst(self): # Check that reading hits local storage first. with working_directory.TemporaryWorkingDirectory() as work_dir: mem_storage = fake_storage.FakeStorage() storage = local_storage_cache.LocalStorageCache( cache_path=os.path.join(work_dir, 'db'), storage=mem_storage) storage.PutData('there', 'foo') mem_storage.PutData('hello', 'foo') self.assertEquals('there', storage.GetData('foo'))
def test_Exists(self): # Checks that exists works properly. with working_directory.TemporaryWorkingDirectory() as work_dir: mem_storage = fake_storage.FakeStorage() storage = local_storage_cache.LocalStorageCache( cache_path=os.path.join(work_dir, 'db'), storage=mem_storage) storage.PutData('bar', 'foo') self.assertTrue(storage.Exists('foo')) self.assertFalse(storage.Exists('bad_foo'))
def test_WriteRead(self): # Check that things written with PutData can be read back. with working_directory.TemporaryWorkingDirectory() as work_dir: mem_storage = fake_storage.FakeStorage() storage = local_storage_cache.LocalStorageCache( cache_path=os.path.join(work_dir, 'db'), storage=mem_storage) storage.PutData('bar', 'foo') self.CanBeReadBothWays(storage, 'foo', os.path.join(work_dir, 'out'), 'bar')
def test_AcceptSlashesAndDots(self): # Check that keys with slashes and dots are okay. with working_directory.TemporaryWorkingDirectory() as work_dir: mem_storage = fake_storage.FakeStorage() storage = local_storage_cache.LocalStorageCache( cache_path=os.path.join(work_dir, 'db'), storage=mem_storage) storage.PutData('hello', 'this/is/a/cool_test.txt') self.assertEquals('hello', storage.GetData('this/is/a/cool_test.txt'))
def test_WriteOnlyToLocal(self): # Check that things written hit local storage, not the network. with working_directory.TemporaryWorkingDirectory() as work_dir: mem_storage = fake_storage.FakeStorage() storage = local_storage_cache.LocalStorageCache( cache_path=os.path.join(work_dir, 'db'), storage=mem_storage) storage.PutData('bar', 'foo') self.assertEquals(None, mem_storage.GetData('foo')) bar = os.path.join(work_dir, 'bar_file') file_tools.WriteFile('bar', bar) storage.PutFile(bar, 'foo') self.assertEquals(None, mem_storage.GetData('foo'))
def test_InvalidKey(self): # Check that an invalid key asserts. with working_directory.TemporaryWorkingDirectory() as work_dir: mem_storage = fake_storage.FakeStorage() storage = local_storage_cache.LocalStorageCache( cache_path=os.path.join(work_dir, 'db'), storage=mem_storage) bar = os.path.join(work_dir, 'bar_file') file_tools.WriteFile('bar', bar) self.assertRaises(KeyError, storage.PutData, 'bar', 'foo$') self.assertRaises(KeyError, storage.GetData, 'foo^') self.assertRaises(KeyError, storage.PutFile, bar, 'foo#') self.assertRaises(KeyError, storage.GetFile, 'foo!', 'bar')
def CreateStorage(self): """Create a storage object for this build. Returns: A storage object (GSDStorage). """ if self._options.buildbot: return gsd_storage.GSDStorage(write_bucket='nativeclient-once', read_buckets=['nativeclient-once']) elif self._options.trybot: return gsd_storage.GSDStorage( write_bucket='nativeclient-once-try', read_buckets=['nativeclient-once', 'nativeclient-once-try']) else: read_buckets = [] if self._options.use_remote_cache: read_buckets += ['nativeclient-once'] return local_storage_cache.LocalStorageCache( cache_path=self._options.cache, storage=gsd_storage.GSDStorage(write_bucket=None, read_buckets=read_buckets))