Changeset View
Changeset View
Standalone View
Standalone View
test/functional/p2p_leak.py
Show All 12 Lines | |||||
import time | import time | ||||
from test_framework.messages import ( | from test_framework.messages import ( | ||||
msg_getaddr, | msg_getaddr, | ||||
msg_ping, | msg_ping, | ||||
msg_version, | msg_version, | ||||
) | ) | ||||
from test_framework.p2p import ( | from test_framework.p2p import P2PInterface | ||||
p2p_lock, | |||||
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, | ||||
assert_greater_than_or_equal, | assert_greater_than_or_equal, | ||||
) | ) | ||||
DISCOURAGEMENT_THRESHOLD = 10 | DISCOURAGEMENT_THRESHOLD = 10 | ||||
▲ Show 20 Lines • Show All 104 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
# should get us disconnected. | # should get us disconnected. | ||||
for _ in range(DISCOURAGEMENT_THRESHOLD): | for _ in range(DISCOURAGEMENT_THRESHOLD): | ||||
no_version_disconnect_peer.send_message(msg_ping()) | no_version_disconnect_peer.send_message(msg_ping()) | ||||
# Wait until we got the verack in response to the version. Though, don't wait for the node to receive the | # Wait until we got the verack in response to the version. Though, don't wait for the node to receive the | ||||
# verack, since we never sent one | # verack, since we never sent one | ||||
no_verack_idle_peer.wait_for_verack() | no_verack_idle_peer.wait_for_verack() | ||||
self.wait_until( | no_version_disconnect_peer.wait_until( | ||||
lambda: no_version_disconnect_peer.ever_connected, | lambda: no_version_disconnect_peer.ever_connected, | ||||
timeout=10, | check_connected=False) | ||||
lock=p2p_lock) | no_version_idle_peer.wait_until( | ||||
self.wait_until(lambda: no_version_idle_peer.ever_connected, | lambda: no_version_idle_peer.ever_connected) | ||||
timeout=10, lock=p2p_lock) | no_verack_idle_peer.wait_until( | ||||
self.wait_until(lambda: no_verack_idle_peer.version_received, | lambda: no_verack_idle_peer.version_received) | ||||
timeout=10, lock=p2p_lock) | |||||
# Mine a block and make sure that it's not sent to the connected peers | # Mine a block and make sure that it's not sent to the connected peers | ||||
self.nodes[0].generate(nblocks=1) | self.nodes[0].generate(nblocks=1) | ||||
# 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) | ||||
# Expect this peer to be disconnected for misbehavior | # Expect this peer to be disconnected for misbehavior | ||||
Show All 33 Lines |