mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-24 18:23:26 -03:00
Merge bitcoin/bitcoin#30761: test: Avoid intermittent timeout in p2p_headers_sync_with_minchainwork.py
Some checks are pending
Some checks are pending
fa247e6e8c
test: Avoid intermittent timeout in p2p_headers_sync_with_minchainwork.py (MarcoFalke) Pull request description: Similar to https://github.com/bitcoin/bitcoin/pull/30705: The goal of this test case is to check that the sync works at all, not to check any timeout. On extremely slow hardware (for example qemu virtual hardware), downloading the 4110 BLOCKS_TO_MINE may take longer than the block download timeout. Fix it by pinning the time using mocktime temporarily, and advance it immediately after the sync. ACKs for top commit: stratospher: ACKfa247e6
. Checked the timeout downloading block logs before/after using `setmocktime`. tdb3: ACKfa247e6e8c
Tree-SHA512: f61632a8d9e484f1b888aafbf87f7adf71b8692387bd77f603cdbc0de49f30d42e654741d46ae1ff8b9706a5559ee0faabdb192ed0db7449010b68bfcdbaa42d
This commit is contained in:
commit
a74bdeea1b
1 changed files with 9 additions and 1 deletions
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env python3
|
||||
# Copyright (c) 2019-2022 The Bitcoin Core developers
|
||||
# Copyright (c) 2019-present The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
"""Test that we reject low difficulty headers to prevent our block tree from filling up with useless bloat"""
|
||||
|
@ -21,6 +21,8 @@ from test_framework.blocktools import (
|
|||
|
||||
from test_framework.util import assert_equal
|
||||
|
||||
import time
|
||||
|
||||
NODE1_BLOCKS_REQUIRED = 15
|
||||
NODE2_BLOCKS_REQUIRED = 2047
|
||||
|
||||
|
@ -48,6 +50,10 @@ class RejectLowDifficultyHeadersTest(BitcoinTestFramework):
|
|||
self.connect_nodes(0, 2)
|
||||
self.connect_nodes(0, 3)
|
||||
|
||||
def mocktime_all(self, time):
|
||||
for n in self.nodes:
|
||||
n.setmocktime(time)
|
||||
|
||||
def test_chains_sync_when_long_enough(self):
|
||||
self.log.info("Generate blocks on the node with no required chainwork, and verify nodes 1 and 2 have no new headers in their headers tree")
|
||||
with self.nodes[1].assert_debug_log(expected_msgs=["[net] Ignoring low-work chain (height=14)"]), self.nodes[2].assert_debug_log(expected_msgs=["[net] Ignoring low-work chain (height=14)"]), self.nodes[3].assert_debug_log(expected_msgs=["Synchronizing blockheaders, height: 14"]):
|
||||
|
@ -149,7 +155,9 @@ class RejectLowDifficultyHeadersTest(BitcoinTestFramework):
|
|||
|
||||
self.reconnect_all()
|
||||
|
||||
self.mocktime_all(int(time.time())) # Temporarily hold time to avoid internal timeouts
|
||||
self.sync_blocks(timeout=300) # Ensure tips eventually agree
|
||||
self.mocktime_all(0)
|
||||
|
||||
|
||||
def run_test(self):
|
||||
|
|
Loading…
Add table
Reference in a new issue