mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-02 09:46:52 -05:00
test: fix intermittent p2p_ibd_txrelay race, add test_framework.py#wait_until
This commit is contained in:
parent
090d877160
commit
12410b1feb
2 changed files with 7 additions and 5 deletions
|
@ -8,7 +8,6 @@ from decimal import Decimal
|
||||||
|
|
||||||
from test_framework.messages import COIN
|
from test_framework.messages import COIN
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal
|
|
||||||
|
|
||||||
MAX_FEE_FILTER = Decimal(9170997) / COIN
|
MAX_FEE_FILTER = Decimal(9170997) / COIN
|
||||||
NORMAL_FEE_FILTER = Decimal(100) / COIN
|
NORMAL_FEE_FILTER = Decimal(100) / COIN
|
||||||
|
@ -22,12 +21,12 @@ class P2PIBDTxRelayTest(BitcoinTestFramework):
|
||||||
["-minrelaytxfee={}".format(NORMAL_FEE_FILTER)],
|
["-minrelaytxfee={}".format(NORMAL_FEE_FILTER)],
|
||||||
["-minrelaytxfee={}".format(NORMAL_FEE_FILTER)],
|
["-minrelaytxfee={}".format(NORMAL_FEE_FILTER)],
|
||||||
]
|
]
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.log.info("Check that nodes set minfilter to MAX_MONEY while still in IBD")
|
self.log.info("Check that nodes set minfilter to MAX_MONEY while still in IBD")
|
||||||
for node in self.nodes:
|
for node in self.nodes:
|
||||||
assert node.getblockchaininfo()['initialblockdownload']
|
assert node.getblockchaininfo()['initialblockdownload']
|
||||||
for conn_info in node.getpeerinfo():
|
self.wait_until(lambda: all(peer['minfeefilter'] == MAX_FEE_FILTER for peer in node.getpeerinfo()))
|
||||||
assert_equal(conn_info['minfeefilter'], MAX_FEE_FILTER)
|
|
||||||
|
|
||||||
# Come out of IBD by generating a block
|
# Come out of IBD by generating a block
|
||||||
self.nodes[0].generate(1)
|
self.nodes[0].generate(1)
|
||||||
|
@ -36,8 +35,7 @@ class P2PIBDTxRelayTest(BitcoinTestFramework):
|
||||||
self.log.info("Check that nodes reset minfilter after coming out of IBD")
|
self.log.info("Check that nodes reset minfilter after coming out of IBD")
|
||||||
for node in self.nodes:
|
for node in self.nodes:
|
||||||
assert not node.getblockchaininfo()['initialblockdownload']
|
assert not node.getblockchaininfo()['initialblockdownload']
|
||||||
for conn_info in node.getpeerinfo():
|
self.wait_until(lambda: all(peer['minfeefilter'] == NORMAL_FEE_FILTER for peer in node.getpeerinfo()))
|
||||||
assert_equal(conn_info['minfeefilter'], NORMAL_FEE_FILTER)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -31,6 +31,7 @@ from .util import (
|
||||||
disconnect_nodes,
|
disconnect_nodes,
|
||||||
get_datadir_path,
|
get_datadir_path,
|
||||||
initialize_datadir,
|
initialize_datadir,
|
||||||
|
wait_until,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -602,6 +603,9 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||||
self.sync_blocks(nodes)
|
self.sync_blocks(nodes)
|
||||||
self.sync_mempools(nodes)
|
self.sync_mempools(nodes)
|
||||||
|
|
||||||
|
def wait_until(self, test_function, timeout=60, lock=None):
|
||||||
|
return wait_until(test_function, timeout=timeout, lock=lock, timeout_factor=self.options.timeout_factor)
|
||||||
|
|
||||||
# Private helper methods. These should not be accessed by the subclass test scripts.
|
# Private helper methods. These should not be accessed by the subclass test scripts.
|
||||||
|
|
||||||
def _start_logging(self):
|
def _start_logging(self):
|
||||||
|
|
Loading…
Add table
Reference in a new issue