class DBWriter(threading.Thread): def __init__(self, path, f_len): threading.Thread.__init__(self) self.path = path if os.path.exists(self.path): os.remove(self.path) open(self.path, 'w').close() self.f_len = f_len print 'simulating data block with size = %s ...'%f_len self.db = None self.checksum = hashlib.sha1() def run(self): self.db = DataBlock(self.path)# self.f_len) f_len = self.f_len parts = random.randint(1,11) for i in xrange(parts): data = ''.join(random.choice(string.letters) for i in xrange(f_len/parts)) self.checksum.update(data) self.db.write(data) time.sleep(.1) rest = f_len - (f_len/parts)*parts if rest: data = ''.join(random.choice(string.letters) for i in xrange(rest)) self.checksum.update(data) self.db.write(data) self.db.finalize() self.db.close() def get_checksum(self): return self.checksum.hexdigest()
class DBWriter(threading.Thread): def __init__(self, path, f_len): threading.Thread.__init__(self) self.path = path if os.path.exists(self.path): os.remove(self.path) open(self.path, 'w').close() self.f_len = f_len print 'simulating data block with size = %s ...' % f_len self.db = None self.checksum = hashlib.sha1() def run(self): self.db = DataBlock(self.path) # self.f_len) f_len = self.f_len parts = random.randint(1, 11) for i in xrange(parts): data = ''.join( random.choice(string.letters) for i in xrange(f_len / parts)) self.checksum.update(data) self.db.write(data) time.sleep(.1) rest = f_len - (f_len / parts) * parts if rest: data = ''.join(random.choice(string.letters) for i in xrange(rest)) self.checksum.update(data) self.db.write(data) self.db.finalize() self.db.close() def get_checksum(self): return self.checksum.hexdigest()
def test_data_block(self): ks = FileBasedSecurityManager(CLIENT_KS_1024_PATH, PASSWD) DataBlock.SECURITY_MANAGER = ks DB_PATH = tmp('test_data_block.kst') DATA_LEN = 10 if os.path.exists(DB_PATH): os.remove(DB_PATH) db = DataBlock(DB_PATH, DATA_LEN, force_create=True) checksum = hashlib.sha1() for i in xrange(DATA_LEN / 10): data = ''.join( random.choice(string.letters) for i in xrange(DATA_LEN / (DATA_LEN / 10))) checksum.update(data) db.write(data) db.close() db.close() #should be OK or_checksum = checksum.hexdigest() enc_checksum = db.checksum() db = DataBlock(DB_PATH, DATA_LEN) ret_data = '' checksum = hashlib.sha1() while True: data = db.read(100) if not data: break ret_data += data checksum.update(data) self.assertEqual(or_checksum, checksum.hexdigest()) self.assertEqual(db.checksum(), enc_checksum) db = DataBlock(DB_PATH, DATA_LEN) raw = db.read_raw() self.assertEqual(db.checksum(), enc_checksum) db = DataBlock(DB_PATH, DATA_LEN) raw = db.read() self.assertEqual(ret_data, raw) app_db = DataBlock(DB_PATH) app_db.write('The end!') app_db.finalize() app_db.close() db = DataBlock(DB_PATH, actsize=True) raw = db.read() self.assertEqual(ret_data + 'The end!', raw) db.close()
def test_data_block(self): ks = FileBasedSecurityManager(CLIENT_KS_1024_PATH, PASSWD) DataBlock.SECURITY_MANAGER = ks DB_PATH = tmp('test_data_block.kst') DATA_LEN = 10 if os.path.exists(DB_PATH): os.remove(DB_PATH) db = DataBlock(DB_PATH, DATA_LEN, force_create=True) checksum = hashlib.sha1() for i in xrange(DATA_LEN/10): data = ''.join(random.choice(string.letters) for i in xrange(DATA_LEN/(DATA_LEN/10))) checksum.update(data) db.write(data) db.close() db.close() #should be OK or_checksum = checksum.hexdigest() enc_checksum = db.checksum() db = DataBlock(DB_PATH, DATA_LEN) ret_data = '' checksum = hashlib.sha1() while True: data = db.read(100) if not data: break ret_data += data checksum.update(data) self.assertEqual(or_checksum, checksum.hexdigest()) self.assertEqual(db.checksum(), enc_checksum) db = DataBlock(DB_PATH, DATA_LEN) raw = db.read_raw() self.assertEqual(db.checksum(), enc_checksum) db = DataBlock(DB_PATH, DATA_LEN) raw = db.read() self.assertEqual(ret_data, raw) app_db = DataBlock(DB_PATH) app_db.write('The end!') app_db.finalize() app_db.close() db = DataBlock(DB_PATH, actsize=True) raw = db.read() self.assertEqual(ret_data+'The end!', raw) db.close()