diff options
author | stickies-v <stickies-v@protonmail.com> | 2024-03-22 14:20:39 +0000 |
---|---|---|
committer | stickies-v <stickies-v@protonmail.com> | 2024-03-22 14:36:52 +0000 |
commit | 032a59748295859845b2a9181ceb1c4ae70bae5c (patch) | |
tree | df68663e227bb984e1d60f3ef8eeb4963eb3227e /test | |
parent | 71b63195b30b2fa0dff20ebb262ce7566dd5d673 (diff) | |
download | bitcoin-032a59748295859845b2a9181ceb1c4ae70bae5c.tar.xz |
test: make p2p_handshake robust against timeoffset warnings
The test requires that limited nodes are not peered with when
the node's system time exceeds ~ 24h of the node's chaintip
timestamp, as per PeerManagerImpl::GetDesirableServiceFlags.
By patching this test to modify the timestamp of the chaintip as
opposed to mocking the node's system time, we make it resilient
to future commits where the node raises a warning if it detects
its system time is too much out of sync with its outbound peers.
See https://github.com/bitcoin/bitcoin/pull/29623
Diffstat (limited to 'test')
-rwxr-xr-x | test/functional/p2p_handshake.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/test/functional/p2p_handshake.py b/test/functional/p2p_handshake.py index 3fbb940cbd..f0b62e291d 100755 --- a/test/functional/p2p_handshake.py +++ b/test/functional/p2p_handshake.py @@ -62,6 +62,11 @@ class P2PHandshakeTest(BitcoinTestFramework): assert (services & desirable_service_flags) == desirable_service_flags self.add_outbound_connection(node, conn_type, services, wait_for_disconnect=False) + def generate_at_mocktime(self, time): + self.nodes[0].setmocktime(time) + self.generate(self.nodes[0], 1) + self.nodes[0].setmocktime(0) + def run_test(self): node = self.nodes[0] self.log.info("Check that lacking desired service flags leads to disconnect (non-pruned peers)") @@ -71,10 +76,10 @@ class P2PHandshakeTest(BitcoinTestFramework): DESIRABLE_SERVICE_FLAGS_FULL, expect_disconnect=False) self.log.info("Check that limited peers are only desired if the local chain is close to the tip (<24h)") - node.setmocktime(int(time.time()) + 25 * 3600) # tip outside the 24h window, should fail + self.generate_at_mocktime(int(time.time()) - 25 * 3600) # tip outside the 24h window, should fail self.test_desirable_service_flags(node, [NODE_NETWORK_LIMITED | NODE_WITNESS], DESIRABLE_SERVICE_FLAGS_FULL, expect_disconnect=True) - node.setmocktime(int(time.time()) + 23 * 3600) # tip inside the 24h window, should succeed + self.generate_at_mocktime(int(time.time()) - 23 * 3600) # tip inside the 24h window, should succeed self.test_desirable_service_flags(node, [NODE_NETWORK_LIMITED | NODE_WITNESS], DESIRABLE_SERVICE_FLAGS_PRUNED, expect_disconnect=False) |