def test_traversal_insert(self): RB = self.RB D = RB.E H = RB.H d0 = D[0] values = range(32) random.shuffle(values) for v in values: T = RecordTraversal(H) D = T.insert(v, D) #invariants(D) R = ReplayTraversal(T.VO, H) assert R.insert(v, d0) == D[0] d0 = D[0]
def test_traversal_insert(self): RB = self.RB D = RB.E H = RB.H d0 = D[0] values = range(32) random.shuffle(values) for v in values: T = RecordTraversal(H) D = T.insert(v,D) #invariants(D) R = ReplayTraversal(T.VO, H) assert R.insert(v, d0) == D[0] d0 = D[0]
def demo_recordreplay(): RB = MerkleRedBlack() D = RB.E print D for i in range(10): D = RB.insert(i, D) print D roothash = D[0] record = RecordTraversal() for i in range(10): D = record.delete(i, D) print D print record.VO replay = ReplayTraversal(record.VO) D = roothash for i in range(9): D = replay.delete(i, D) print D
def demo_replay(): RB = HashTableRB(MerkleNodeDigest) MerkleTree = RB.E txs = transactions_in_order() with open('./testdb/vofile_132267.json', 'r') as vofile: for i, (nHeight, tx_id, txn) in enumerate(txs): #RB = HashTableRB(MerkleNodeDigest, table=LevelDict(hashtable), validate=True) #RB = MerkleRedBlack(MerkleNodeDigest) vo = pickle.load(vofile) import random if random.random() < 0.00: vo = perturb(vo) # Random fuzz-test errors RB = ReplayTraversal(vo, MerkleNodeDigest) MerkleTree = reduce(partial(apply_update, RB), updates_in_transaction(nHeight, tx_id, txn), MerkleTree) print nHeight, i, len(vo), hexlify(MerkleTree) if nHeight > 1532: break