def test_empty(self): import struct from ZODB.scripts.repozo import gen_filename from ZODB.fsIndex import fsIndex db = self._makeDB() options = self._makeOptions(file=db._file_name, gzip=False, killold=False, test_now = (2010, 5, 14, 10, 51, 22), ) self._callFUT(options) target = os.path.join(self._repository_directory, gen_filename(options)) original = _read_file(db._file_name) self.assertEqual(_read_file(target), original) datfile = os.path.join(self._repository_directory, gen_filename(options, '.dat')) self.assertEqual(_read_file(datfile, mode='r'), #XXX 'rb'? '%s 0 %d %s\n' % (target, len(original), md5(original).hexdigest())) ndxfile = os.path.join(self._repository_directory, gen_filename(options, '.index')) ndx_info = fsIndex.load(ndxfile) self.assertEqual(ndx_info['pos'], len(original)) index = ndx_info['index'] pZero = struct.pack(">Q", 0) pOne = struct.pack(">Q", 1) self.assertEqual(index.minKey(), pZero) self.assertEqual(index.maxKey(), pOne)
def test_empty(self): import struct from ZODB.scripts.repozo import gen_filename from ZODB.fsIndex import fsIndex db = self._makeDB() options = self._makeOptions( file=db._file_name, gzip=False, killold=False, test_now=(2010, 5, 14, 10, 51, 22), ) self._callFUT(options) target = os.path.join(self._repository_directory, gen_filename(options)) original = open(db._file_name, 'rb').read() self.assertEqual(open(target, 'rb').read(), original) datfile = os.path.join(self._repository_directory, gen_filename(options, '.dat')) self.assertEqual( open(datfile).read(), '%s 0 %d %s\n' % (target, len(original), md5(original).hexdigest())) ndxfile = os.path.join(self._repository_directory, gen_filename(options, '.index')) ndx_info = fsIndex.load(ndxfile) self.assertEqual(ndx_info['pos'], len(original)) index = ndx_info['index'] pZero = struct.pack(">Q", 0) pOne = struct.pack(">Q", 1) self.assertEqual(index.minKey(), pZero) self.assertEqual(index.maxKey(), pOne)
def convert_index_to_dict(self): # Convert the index in the current .index file to a Python dict. # Return the index originally found. data = fsIndex.load('FileStorageTests.fs.index') index = data['index'] newindex = dict(index) data['index'] = newindex cPickle.dump(data, open('FileStorageTests.fs.index', 'wb'), 1) return index
def test_w_changes(self): import struct from ZODB.scripts.repozo import gen_filename from ZODB.fsIndex import fsIndex db = self._makeDB() oldpos = db.pos options = self._makeOptions( file=db._file_name, gzip=False, killold=False, test_now=(2010, 5, 14, 10, 51, 22), date=None, ) fullfile = os.path.join(self._repository_directory, '2010-05-14-00-00-00.fs') original = open(db._file_name, 'rb').read() f = open(fullfile, 'wb') f.write(original) f.flush() f.close() datfile = os.path.join(self._repository_directory, '2010-05-14-00-00-00.dat') repofiles = [fullfile, datfile] db.mutate() newpos = db.pos self._callFUT(options, oldpos, repofiles) target = os.path.join(self._repository_directory, gen_filename(options)) f = open(db._file_name, 'rb') f.seek(oldpos) increment = f.read() self.assertEqual(open(target, 'rb').read(), increment) self.assertEqual( open(datfile).read(), '%s %d %d %s\n' % (target, oldpos, newpos, md5(increment).hexdigest())) ndxfile = os.path.join(self._repository_directory, gen_filename(options, '.index')) ndx_info = fsIndex.load(ndxfile) self.assertEqual(ndx_info['pos'], newpos) index = ndx_info['index'] pZero = struct.pack(">Q", 0) self.assertEqual(index.minKey(), pZero) self.assertEqual(index.maxKey(), db.maxkey)
def test_w_changes(self): import struct from ZODB.scripts.repozo import gen_filename from ZODB.fsIndex import fsIndex db = self._makeDB() oldpos = db.pos options = self._makeOptions(file=db._file_name, gzip=False, killold=False, test_now = (2010, 5, 14, 10, 51, 22), date = None, ) fullfile = os.path.join(self._repository_directory, '2010-05-14-00-00-00.fs') original = open(db._file_name, 'rb').read() f = open(fullfile, 'wb') f.write(original) f.flush() f.close() datfile = os.path.join(self._repository_directory, '2010-05-14-00-00-00.dat') repofiles = [fullfile, datfile] db.mutate() newpos = db.pos self._callFUT(options, oldpos, repofiles) target = os.path.join(self._repository_directory, gen_filename(options)) f = open(db._file_name, 'rb') f.seek(oldpos) increment = f.read() self.assertEqual(open(target, 'rb').read(), increment) self.assertEqual(open(datfile).read(), '%s %d %d %s\n' % (target, oldpos, newpos, md5(increment).hexdigest())) ndxfile = os.path.join(self._repository_directory, gen_filename(options, '.index')) ndx_info = fsIndex.load(ndxfile) self.assertEqual(ndx_info['pos'], newpos) index = ndx_info['index'] pZero = struct.pack(">Q", 0) self.assertEqual(index.minKey(), pZero) self.assertEqual(index.maxKey(), db.maxkey)
def test_no_changes(self): import struct from ZODB.scripts.repozo import gen_filename from ZODB.fsIndex import fsIndex db = self._makeDB() oldpos = db.pos options = self._makeOptions( file=db._file_name, gzip=False, killold=False, test_now=(2010, 5, 14, 10, 51, 22), date=None, ) fullfile = os.path.join(self._repository_directory, '2010-05-14-00-00-00.fs') original = _read_file(db._file_name) last = len(original) _write_file(fullfile, original) datfile = os.path.join(self._repository_directory, '2010-05-14-00-00-00.dat') repofiles = [fullfile, datfile] self._callFUT(options, oldpos, repofiles) target = os.path.join(self._repository_directory, gen_filename(options)) self.assertEqual(_read_file(target), b'') self.assertEqual( _read_file(datfile, mode='r'), #XXX mode='rb'? '%s %d %d %s\n' % (target, oldpos, oldpos, md5(b'').hexdigest())) ndxfile = os.path.join(self._repository_directory, gen_filename(options, '.index')) ndx_info = fsIndex.load(ndxfile) self.assertEqual(ndx_info['pos'], oldpos) index = ndx_info['index'] pZero = struct.pack(">Q", 0) pOne = struct.pack(">Q", 1) self.assertEqual(index.minKey(), pZero) self.assertEqual(index.maxKey(), pOne)
def test_no_changes(self): import struct from ZODB.scripts.repozo import gen_filename from ZODB.fsIndex import fsIndex db = self._makeDB() oldpos = db.pos options = self._makeOptions(file=db._file_name, gzip=False, killold=False, test_now = (2010, 5, 14, 10, 51, 22), date = None, ) fullfile = os.path.join(self._repository_directory, '2010-05-14-00-00-00.fs') original = _read_file(db._file_name) last = len(original) _write_file(fullfile, original) datfile = os.path.join(self._repository_directory, '2010-05-14-00-00-00.dat') repofiles = [fullfile, datfile] self._callFUT(options, oldpos, repofiles) target = os.path.join(self._repository_directory, gen_filename(options)) self.assertEqual(_read_file(target), b'') self.assertEqual(_read_file(datfile, mode='r'), #XXX mode='rb'? '%s %d %d %s\n' % (target, oldpos, oldpos, md5(b'').hexdigest())) ndxfile = os.path.join(self._repository_directory, gen_filename(options, '.index')) ndx_info = fsIndex.load(ndxfile) self.assertEqual(ndx_info['pos'], oldpos) index = ndx_info['index'] pZero = struct.pack(">Q", 0) pOne = struct.pack(">Q", 1) self.assertEqual(index.minKey(), pZero) self.assertEqual(index.maxKey(), pOne)