Changeset View
Changeset View
Standalone View
Standalone View
test/functional/p2p_leak.py
Show First 20 Lines • Show All 127 Lines • ▼ Show 20 Lines | def on_version(self, message): | ||||
self.send_message(msg_getaddr()) | self.send_message(msg_getaddr()) | ||||
class P2PLeakTest(BitcoinTestFramework): | class P2PLeakTest(BitcoinTestFramework): | ||||
def set_test_params(self): | def set_test_params(self): | ||||
self.num_nodes = 1 | self.num_nodes = 1 | ||||
self.extra_args = [['-banscore=' + str(banscore)]] | self.extra_args = [['-banscore=' + str(banscore)]] | ||||
def skip_test_if_missing_module(self): | |||||
self.skip_if_no_wallet() | |||||
def run_test(self): | def run_test(self): | ||||
no_version_bannode = self.nodes[0].add_p2p_connection( | no_version_bannode = self.nodes[0].add_p2p_connection( | ||||
CNodeNoVersionBan(), send_version=False, wait_for_verack=False) | CNodeNoVersionBan(), send_version=False, wait_for_verack=False) | ||||
no_version_idlenode = self.nodes[0].add_p2p_connection( | no_version_idlenode = self.nodes[0].add_p2p_connection( | ||||
CNodeNoVersionIdle(), send_version=False, wait_for_verack=False) | CNodeNoVersionIdle(), send_version=False, wait_for_verack=False) | ||||
no_verack_idlenode = self.nodes[0].add_p2p_connection( | no_verack_idlenode = self.nodes[0].add_p2p_connection( | ||||
CNodeNoVerackIdle()) | CNodeNoVerackIdle()) | ||||
wait_until(lambda: no_version_bannode.ever_connected, | wait_until(lambda: no_version_bannode.ever_connected, | ||||
timeout=10, lock=mininode_lock) | timeout=10, lock=mininode_lock) | ||||
wait_until(lambda: no_version_idlenode.ever_connected, | wait_until(lambda: no_version_idlenode.ever_connected, | ||||
timeout=10, lock=mininode_lock) | timeout=10, lock=mininode_lock) | ||||
wait_until(lambda: no_verack_idlenode.version_received, | wait_until(lambda: no_verack_idlenode.version_received, | ||||
timeout=10, lock=mininode_lock) | timeout=10, lock=mininode_lock) | ||||
# Mine a block and make sure that it's not sent to the connected nodes | # Mine a block and make sure that it's not sent to the connected nodes | ||||
self.nodes[0].generate(1) | self.nodes[0].generatetoaddress( | ||||
1, self.nodes[0].get_deterministic_priv_key().address) | |||||
# Give the node enough time to possibly leak out a message | # Give the node enough time to possibly leak out a message | ||||
time.sleep(5) | time.sleep(5) | ||||
# This node should have been banned | # This node should have been banned | ||||
assert not no_version_bannode.is_connected | assert not no_version_bannode.is_connected | ||||
self.nodes[0].disconnect_p2ps() | self.nodes[0].disconnect_p2ps() | ||||
Show All 12 Lines |