Changeset View
Changeset View
Standalone View
Standalone View
test/functional/p2p_leak.py
Show All 11 Lines | |||||
""" | """ | ||||
import time | import time | ||||
from test_framework.messages import ( | from test_framework.messages import ( | ||||
msg_getaddr, | msg_getaddr, | ||||
msg_ping, | msg_ping, | ||||
msg_verack, | msg_verack, | ||||
msg_version, | |||||
) | ) | ||||
from test_framework.mininode import ( | from test_framework.mininode import ( | ||||
mininode_lock, | mininode_lock, | ||||
P2PInterface, | P2PInterface, | ||||
) | ) | ||||
from test_framework.test_framework import BitcoinTestFramework | from test_framework.test_framework import BitcoinTestFramework | ||||
from test_framework.util import ( | from test_framework.util import ( | ||||
assert_equal, | assert_equal, | ||||
▲ Show 20 Lines • Show All 159 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
ver = p2p_version_store.version_received | ver = p2p_version_store.version_received | ||||
assert_greater_than_or_equal(ver.nTime, time_begin) | assert_greater_than_or_equal(ver.nTime, time_begin) | ||||
assert_greater_than_or_equal(time_end, ver.nTime) | assert_greater_than_or_equal(time_end, ver.nTime) | ||||
assert_equal(ver.addrFrom.port, 0) | assert_equal(ver.addrFrom.port, 0) | ||||
assert_equal(ver.addrFrom.ip, '0.0.0.0') | assert_equal(ver.addrFrom.ip, '0.0.0.0') | ||||
assert_equal(ver.nStartingHeight, 201) | assert_equal(ver.nStartingHeight, 201) | ||||
assert_equal(ver.nRelay, 1) | assert_equal(ver.nRelay, 1) | ||||
self.log.info('Check that old nodes are disconnected') | |||||
p2p_old_node = self.nodes[0].add_p2p_connection( | |||||
P2PInterface(), send_version=False, wait_for_verack=False) | |||||
old_version_msg = msg_version() | |||||
old_version_msg.nVersion = 31799 | |||||
wait_until(lambda: p2p_old_node.is_connected) | |||||
with self.nodes[0].assert_debug_log(['peer=4 using obsolete version 31799; disconnecting']): | |||||
p2p_old_node.send_message(old_version_msg) | |||||
p2p_old_node.wait_for_disconnect() | |||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
P2PLeakTest().main() | P2PLeakTest().main() |