From 1973a9e4f1dfba57051135d6e1bca80979de3879 Mon Sep 17 00:00:00 2001 From: Sergi Delgado Segura Date: Wed, 29 Jan 2025 14:18:51 -0500 Subject: [PATCH] test: fixes p2p_ibd_txrelay wait time p2p_ibd_txrelay expects no GETDATA to have been received by a peer after announcing a transaction. The reason is that the node is doing IBD, so transaction requests are not replied to. However, the way this is checked is wrong, and the check will pass even if the node **was not** in IBD. This is due to the mocktime not being properly initialized, so the check is always performed earlier than it should, making it impossible for the request to be there --- test/functional/p2p_ibd_txrelay.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/functional/p2p_ibd_txrelay.py b/test/functional/p2p_ibd_txrelay.py index 882f5b5c134..870324d76c3 100755 --- a/test/functional/p2p_ibd_txrelay.py +++ b/test/functional/p2p_ibd_txrelay.py @@ -47,12 +47,14 @@ class P2PIBDTxRelayTest(BitcoinTestFramework): assert node.getblockchaininfo()['initialblockdownload'] self.wait_until(lambda: all(peer['minfeefilter'] == MAX_FEE_FILTER for peer in node.getpeerinfo())) + self.nodes[0].setmocktime(int(time.time())) + self.log.info("Check that nodes don't send getdatas for transactions while still in IBD") peer_inver = self.nodes[0].add_p2p_connection(P2PDataStore()) txid = 0xdeadbeef peer_inver.send_and_ping(msg_inv([CInv(t=MSG_WTX, h=txid)])) # The node should not send a getdata, but if it did, it would first delay 2 seconds - self.nodes[0].setmocktime(int(time.time() + NONPREF_PEER_TX_DELAY)) + self.nodes[0].bumpmocktime(NONPREF_PEER_TX_DELAY) peer_inver.sync_with_ping() with p2p_lock: assert txid not in peer_inver.getdata_requests