mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-12-09 04:02:25 +01:00
test: Fail wait_until early if connection is lost
This commit is contained in:
@@ -7,13 +7,8 @@
|
||||
|
||||
import time
|
||||
|
||||
from test_framework.messages import (
|
||||
msg_pong,
|
||||
)
|
||||
from test_framework.mininode import (
|
||||
P2PInterface,
|
||||
wait_until,
|
||||
)
|
||||
from test_framework.messages import msg_pong
|
||||
from test_framework.mininode import P2PInterface
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import assert_equal
|
||||
|
||||
@@ -78,7 +73,7 @@ class PingPongTest(BitcoinTestFramework):
|
||||
with self.nodes[0].assert_debug_log(['pong peer=0: Nonce mismatch']):
|
||||
# mock time PING_INTERVAL ahead to trigger node into sending a ping
|
||||
self.mock_forward(PING_INTERVAL + 1)
|
||||
wait_until(lambda: 'ping' in no_pong_node.last_message)
|
||||
no_pong_node.wait_until(lambda: 'ping' in no_pong_node.last_message)
|
||||
self.mock_forward(9)
|
||||
# Send the wrong pong
|
||||
no_pong_node.send_and_ping(msg_pong(no_pong_node.last_message.pop('ping').nonce - 1))
|
||||
@@ -93,27 +88,27 @@ class PingPongTest(BitcoinTestFramework):
|
||||
assert 'ping' not in no_pong_node.last_message
|
||||
# mock time PING_INTERVAL ahead to trigger node into sending a ping
|
||||
self.mock_forward(PING_INTERVAL + 1)
|
||||
wait_until(lambda: 'ping' in no_pong_node.last_message)
|
||||
no_pong_node.wait_until(lambda: 'ping' in no_pong_node.last_message)
|
||||
ping_delay = 29
|
||||
self.mock_forward(ping_delay)
|
||||
wait_until(lambda: 'ping' in no_pong_node.last_message)
|
||||
no_pong_node.wait_until(lambda: 'ping' in no_pong_node.last_message)
|
||||
no_pong_node.send_and_ping(msg_pong(no_pong_node.last_message.pop('ping').nonce))
|
||||
self.check_peer_info(pingtime=ping_delay, minping=ping_delay, pingwait=None)
|
||||
|
||||
self.log.info('Check that minping is decreased after a fast roundtrip')
|
||||
# mock time PING_INTERVAL ahead to trigger node into sending a ping
|
||||
self.mock_forward(PING_INTERVAL + 1)
|
||||
wait_until(lambda: 'ping' in no_pong_node.last_message)
|
||||
no_pong_node.wait_until(lambda: 'ping' in no_pong_node.last_message)
|
||||
ping_delay = 9
|
||||
self.mock_forward(ping_delay)
|
||||
wait_until(lambda: 'ping' in no_pong_node.last_message)
|
||||
no_pong_node.wait_until(lambda: 'ping' in no_pong_node.last_message)
|
||||
no_pong_node.send_and_ping(msg_pong(no_pong_node.last_message.pop('ping').nonce))
|
||||
self.check_peer_info(pingtime=ping_delay, minping=ping_delay, pingwait=None)
|
||||
|
||||
self.log.info('Check that peer is disconnected after ping timeout')
|
||||
assert 'ping' not in no_pong_node.last_message
|
||||
self.nodes[0].ping()
|
||||
wait_until(lambda: 'ping' in no_pong_node.last_message)
|
||||
no_pong_node.wait_until(lambda: 'ping' in no_pong_node.last_message)
|
||||
with self.nodes[0].assert_debug_log(['ping timeout: 1201.000000s']):
|
||||
self.mock_forward(20 * 60 + 1)
|
||||
time.sleep(4) # peertimeout + 1
|
||||
|
||||
Reference in New Issue
Block a user