def test_recover_merkle_tree_from_hash_store(tempdir): ledger = create_default_ledger(tempdir) for d in range(100): ledger.add(random_txn(d)) ledger.stop() size_before = ledger.size tree_root_hash_before = ledger.tree.root_hash tree_size_before = ledger.tree.tree_size root_hash_before = ledger.root_hash hashes_before = ledger.tree.hashes restartedLedger = create_default_ledger(tempdir) assert size_before == restartedLedger.size assert root_hash_before == restartedLedger.root_hash assert hashes_before == restartedLedger.tree.hashes assert tree_root_hash_before == restartedLedger.tree.root_hash assert tree_size_before == restartedLedger.tree.tree_size
def test_init_twice_without_initiator(tempdir, genesis_txns, init_genesis_txn_file): ledger = create_default_ledger(tempdir, init_genesis_txn_file) size_before = ledger.size txn_size_before = ledger._transactionLog.size tree_root_hash_before = ledger.tree.root_hash tree_size_before = ledger.tree.tree_size root_hash_before = ledger.root_hash ledger.stop() ledger = create_default_ledger(tempdir) assert size_before == ledger.size assert ledger.size == len(genesis_txns) assert txn_size_before == ledger._transactionLog.size assert ledger._transactionLog.size == len(genesis_txns) assert tree_root_hash_before == ledger.tree.root_hash assert tree_size_before == ledger.tree.tree_size assert root_hash_before == ledger.root_hash
def test_init_twice_without_initiator(tempdir, genesis_txns, init_genesis_txn_file): ledger = create_default_ledger(tempdir, init_genesis_txn_file) size_before = ledger.size txn_size_before = ledger._transactionLog.size tree_root_hash_before = ledger.tree.root_hash tree_size_before = ledger.tree.tree_size root_hash_before = ledger.root_hash ledger.stop() ledger = create_default_ledger(tempdir) assert size_before == ledger.size assert ledger.size == len(genesis_txns) assert txn_size_before == ledger._transactionLog.size assert ledger._transactionLog.size == len(genesis_txns) assert tree_root_hash_before == ledger.tree.root_hash assert tree_size_before == ledger.tree.tree_size assert root_hash_before == ledger.root_hash
def test_consistency_verification_on_startup_case_1(tempdir): """ One more node was added to nodes file """ ledger = create_default_ledger(tempdir) tranzNum = 10 for d in range(tranzNum): ledger.add(random_txn(d)) # Writing one more node without adding of it to leaf and transaction logs badNode = (None, None, ('X' * 32)) ledger.tree.hashStore.writeNode(badNode) ledger.stop() with pytest.raises(ConsistencyVerificationFailed): tree = CompactMerkleTree(hashStore=ledger.tree.hashStore) ledger = NoTransactionRecoveryLedger(tree=tree, dataDir=tempdir) ledger.recoverTreeFromHashStore() ledger.stop()
def test_consistency_verification_on_startup_case_1(tempdir): """ One more node was added to nodes file """ ledger = create_default_ledger(tempdir) tranzNum = 10 for d in range(tranzNum): ledger.add(random_txn(d)) # Writing one more node without adding of it to leaf and transaction logs badNode = (None, None, ('X' * 32)) ledger.tree.hashStore.writeNode(badNode) ledger.stop() with pytest.raises(ConsistencyVerificationFailed): tree = CompactMerkleTree(hashStore=ledger.tree.hashStore) ledger = NoTransactionRecoveryLedger(tree=tree, dataDir=tempdir) ledger.recoverTreeFromHashStore() ledger.stop()
def test_consistency_verification_on_startup_case_2(tempdir): """ One more transaction added to transactions file """ ledger = create_default_ledger(tempdir) tranzNum = 10 for d in range(tranzNum): ledger.add(random_txn(d)) # Adding one more entry to transaction log without adding it to merkle tree badData = random_txn(50) value = ledger.serialize_for_txn_log(badData) key = str(tranzNum + 1) ledger._transactionLog.put(key=key, value=value) ledger.stop() with pytest.raises(ConsistencyVerificationFailed): tree = CompactMerkleTree(hashStore=ledger.tree.hashStore) ledger = NoTransactionRecoveryLedger(tree=tree, dataDir=tempdir) ledger.recoverTreeFromHashStore() ledger.stop()
def test_consistency_verification_on_startup_case_2(tempdir): """ One more transaction added to transactions file """ ledger = create_default_ledger(tempdir) tranzNum = 10 for d in range(tranzNum): ledger.add(random_txn(d)) # Adding one more entry to transaction log without adding it to merkle tree badData = random_txn(50) value = ledger.serialize_for_txn_log(badData) key = str(tranzNum + 1) ledger._transactionLog.put(key=key, value=value) ledger.stop() with pytest.raises(ConsistencyVerificationFailed): tree = CompactMerkleTree(hashStore=ledger.tree.hashStore) ledger = NoTransactionRecoveryLedger(tree=tree, dataDir=tempdir) ledger.recoverTreeFromHashStore() ledger.stop()