mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-12-03 01:09:14 +01:00
Merge bitcoin/bitcoin#27986: test: remove race in the user-agent reception check
20b49460b3test: remove race in the user-agent reception check (Vasil Dimov) Pull request description: In `add_p2p_connection()` we connect to `bitcoind` from the Python client and check that it has received our version string. This check looked up the last/newest entry from `getpeerinfo` RPC, assuming that it must be the connection we have just opened. But this will not be the case if a new inbound or outbound connection is made to/from `bitcoind` in the meantime. Instead of the last entry in `getpeerinfo`, check all and find the one which corresponds to our connection using our outgoing address:port tuple which is unique. ACKs for top commit: jonatack: re-ACK20b49460b3MarcoFalke: Concept ACK20b49460b3Tree-SHA512: 61fd3359ef11ea830021ede0e745497a7b60690c32d21c47cd12ff79f78907bb45e922c9d01e5d7ff614a8cd5e4560d39a3fc86b01b200429773a23ace3917e4
This commit is contained in:
@@ -644,10 +644,13 @@ class TestNode():
|
||||
# in comparison to the upside of making tests less fragile and unexpected intermittent errors less likely.
|
||||
p2p_conn.sync_with_ping()
|
||||
|
||||
# Consistency check that the Bitcoin Core has received our user agent string. This checks the
|
||||
# node's newest peer. It could be racy if another Bitcoin Core node has connected since we opened
|
||||
# our connection, but we don't expect that to happen.
|
||||
assert_equal(self.getpeerinfo()[-1]['subver'], P2P_SUBVERSION)
|
||||
# Consistency check that the node received our user agent string.
|
||||
# Find our connection in getpeerinfo by our address:port, as it is unique.
|
||||
sockname = p2p_conn._transport.get_extra_info("socket").getsockname()
|
||||
our_addr_and_port = f"{sockname[0]}:{sockname[1]}"
|
||||
info = [peer for peer in self.getpeerinfo() if peer["addr"] == our_addr_and_port]
|
||||
assert_equal(len(info), 1)
|
||||
assert_equal(info[0]["subver"], P2P_SUBVERSION)
|
||||
|
||||
return p2p_conn
|
||||
|
||||
|
||||
Reference in New Issue
Block a user