def test_compression(self): from databundles.run import get_runconfig from databundles.cache import new_cache from databundles.util import temp_file_name, md5_for_file, copy_file_or_flo rc = get_runconfig((os.path.join(self.bundle_dir,'test-run-config.yaml'),RunConfig.USER_CONFIG)) comp_cache = new_cache(rc.filesystem('compressioncache')) test_file_name = 'test_file' fn = temp_file_name() print 'orig file ', fn with open(fn,'wb') as f: for i in range(1000): f.write("{:03d}:".format(i)) cf = comp_cache.put(fn, test_file_name) with open(cf) as stream: from databundles.util.sgzip import GzipFile stream = GzipFile(stream) uncomp_cache = new_cache(rc.filesystem('fscache')) uncomp_stream = uncomp_cache.put_stream('decomp') copy_file_or_flo(stream, uncomp_stream) uncomp_stream.close() dcf = uncomp_cache.get('decomp') self.assertEquals(md5_for_file(fn), md5_for_file(dcf))
def backup(self): '''Backup the database to the remote, but only if the database needs to be backed up. ''' if not self.database.needs_dump(): return False backup_file = temp_file_name()+".db" self.database.dump(backup_file) path = self.remote.put(backup_file,'_/library.db') os.remove(backup_file) return path
def test_simple_install(self): from databundles.library import QueryCommand from databundles.util import temp_file_name import pprint import os l = self.get_library() r = l.put(self.bundle) #@UnusedVariable r = l.get(self.bundle.identity.name) self.assertTrue(r is not False) self.assertEquals(self.bundle.identity.name, r.identity.name) r = l.get('gibberish') self.assertFalse(r) for partition in self.bundle.partitions: r = l.put(partition) # Get the partition with a name r = l.get(partition.identity.name) self.assertTrue(r is not False) self.assertEquals(partition.identity.name, r.partition.identity.name) self.assertEquals(self.bundle.identity.name, r.identity.name) # Get the partition with an id r = l.get(partition.identity.id_) self.assertTrue(r is not False) self.assertEquals(partition.identity.name, r.partition.identity.name) self.assertEquals(self.bundle.identity.name, r.identity.name) self.assertTrue(l.database.needs_dump()) backup_file = temp_file_name()+".db" l.database.dump(backup_file) l.database.close() os.remove(l.database.dbname) l.database.create() r = l.get(self.bundle.identity.name) self.assertTrue(not r) l.database.restore(backup_file) r = l.get(self.bundle.identity.name) self.assertTrue(r is not False) self.assertEquals(self.bundle.identity.name, r.identity.name) os.remove(backup_file) # An extra change so the following tests work l.put(self.bundle) self.assertFalse(l.database.needs_dump()) import time; time.sleep(10) self.assertTrue(l.database.needs_dump())