Changeset View
Changeset View
Standalone View
Standalone View
test/functional/abc_p2p_proof_inventory.py
Show First 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | def on_inv(self, message): | ||||
for i in message.inv: | for i in message.inv: | ||||
if i.type & MSG_TYPE_MASK == MSG_AVA_PROOF: | if i.type & MSG_TYPE_MASK == MSG_AVA_PROOF: | ||||
self.proof_invs_counter += 1 | self.proof_invs_counter += 1 | ||||
class ProofInventoryTest(BitcoinTestFramework): | class ProofInventoryTest(BitcoinTestFramework): | ||||
def set_test_params(self): | def set_test_params(self): | ||||
self.num_nodes = 5 | self.num_nodes = 5 | ||||
self.extra_args = [['-enableavalanche=1', | self.extra_args = [[ | ||||
'-avacooldown=0']] * self.num_nodes | '-enableavalanche=1', | ||||
'-avacooldown=0', | |||||
'-whitelist=noban@127.0.0.1', | |||||
]] * self.num_nodes | |||||
def test_send_proof_inv(self): | def test_send_proof_inv(self): | ||||
self.log.info("Test sending a proof to our peers") | self.log.info("Test sending a proof to our peers") | ||||
node = self.nodes[0] | node = self.nodes[0] | ||||
for i in range(10): | for i in range(10): | ||||
node.add_p2p_connection(ProofInvStoreP2PInterface()) | node.add_p2p_connection(ProofInvStoreP2PInterface()) | ||||
▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | def test_receive_proof(self): | ||||
wait_for_proof(node, orphan_proofid, expect_orphan=True) | wait_for_proof(node, orphan_proofid, expect_orphan=True) | ||||
def test_ban_invalid_proof(self): | def test_ban_invalid_proof(self): | ||||
node = self.nodes[0] | node = self.nodes[0] | ||||
_, bad_proof = gen_proof(node) | _, bad_proof = gen_proof(node) | ||||
bad_proof.stakes = [] | bad_proof.stakes = [] | ||||
self.restart_node(0, ['-enableavalanche=1']) | |||||
peer = node.add_p2p_connection(P2PInterface()) | peer = node.add_p2p_connection(P2PInterface()) | ||||
msg = msg_avaproof() | msg = msg_avaproof() | ||||
msg.proof = bad_proof | msg.proof = bad_proof | ||||
with node.assert_debug_log([ | with node.assert_debug_log([ | ||||
'Misbehaving', | 'Misbehaving', | ||||
'invalid-proof', | 'invalid-proof', | ||||
]): | ]): | ||||
▲ Show 20 Lines • Show All 135 Lines • ▼ Show 20 Lines | def test_unbroadcast(self): | ||||
node.mockscheduler(MAX_INITIAL_BROADCAST_DELAY + 1) | node.mockscheduler(MAX_INITIAL_BROADCAST_DELAY + 1) | ||||
peers[-1].sync_with_ping() | peers[-1].sync_with_ping() | ||||
assert not proof_inv_received(peers) | assert not proof_inv_received(peers) | ||||
def run_test(self): | def run_test(self): | ||||
self.test_send_proof_inv() | self.test_send_proof_inv() | ||||
self.test_receive_proof() | self.test_receive_proof() | ||||
self.test_ban_invalid_proof() | |||||
self.test_proof_relay() | self.test_proof_relay() | ||||
self.test_manually_sent_proof() | self.test_manually_sent_proof() | ||||
# Run this test last because it needs to disconnect the nodes | # Run these tests last because they need to disconnect the nodes | ||||
self.test_unbroadcast() | self.test_unbroadcast() | ||||
self.test_ban_invalid_proof() | |||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
ProofInventoryTest().main() | ProofInventoryTest().main() |