mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-19 05:45:05 +01:00
test: add option to speed up tx relay/mempool sync
when `self.noban_tx_relay=True`, the following flag `-whitelist=noban,in,out@127.0.0.1`is added to `extra_args` to speed up tx relay/mempool sync.
This commit is contained in:
parent
66bc6e2d17
commit
c985eb854c
@ -83,9 +83,10 @@ CLTV_HEIGHT = 111
|
||||
class BIP65Test(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [[
|
||||
f'-testactivationheight=cltv@{CLTV_HEIGHT}',
|
||||
'-whitelist=noban@127.0.0.1',
|
||||
'-par=1', # Use only one script thread to get the exact reject reason for testing
|
||||
'-acceptnonstdtxn=1', # cltv_invalidate is nonstandard
|
||||
]]
|
||||
|
@ -95,8 +95,9 @@ class BIP68_112_113Test(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
self.setup_clean_chain = True
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [[
|
||||
'-whitelist=noban@127.0.0.1',
|
||||
f'-testactivationheight=csv@{CSV_ACTIVATION_HEIGHT}',
|
||||
'-par=1', # Use only one script thread to get the exact reject reason for testing
|
||||
]]
|
||||
|
@ -47,9 +47,10 @@ DERSIG_HEIGHT = 102
|
||||
class BIP66Test(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [[
|
||||
f'-testactivationheight=dersig@{DERSIG_HEIGHT}',
|
||||
'-whitelist=noban@127.0.0.1',
|
||||
'-par=1', # Use only one script thread to get the exact log msg for testing
|
||||
]]
|
||||
self.setup_clean_chain = True
|
||||
|
@ -132,11 +132,12 @@ def make_tx(wallet, utxo, feerate):
|
||||
class EstimateFeeTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 3
|
||||
# Force fSendTrickle to true (via whitelist.noban)
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [
|
||||
["-whitelist=noban@127.0.0.1"],
|
||||
["-whitelist=noban@127.0.0.1", "-blockmaxweight=68000"],
|
||||
["-whitelist=noban@127.0.0.1", "-blockmaxweight=32000"],
|
||||
[],
|
||||
["-blockmaxweight=68000"],
|
||||
["-blockmaxweight=32000"],
|
||||
]
|
||||
|
||||
def setup_network(self):
|
||||
|
@ -53,8 +53,7 @@ class RESTTest (BitcoinTestFramework):
|
||||
self.num_nodes = 2
|
||||
self.extra_args = [["-rest", "-blockfilterindex=1"], []]
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
for args in self.extra_args:
|
||||
args.append("-whitelist=noban@127.0.0.1")
|
||||
self.noban_tx_relay = True
|
||||
self.supports_cli = False
|
||||
|
||||
def test_rest_request(
|
||||
|
@ -104,9 +104,8 @@ class ZMQTestSetupBlock:
|
||||
class ZMQTest (BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
# This test isn't testing txn relay/timing, so set whitelist on the
|
||||
# peers for instant txn relay. This speeds up the test run time 2-3x.
|
||||
self.extra_args = [["-whitelist=noban@127.0.0.1"]] * self.num_nodes
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.zmq_port_base = p2p_port(self.num_nodes + 1)
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
@ -138,8 +137,7 @@ class ZMQTest (BitcoinTestFramework):
|
||||
socket.setsockopt(zmq.IPV6, 1)
|
||||
subscribers.append(ZMQSubscriber(socket, topic.encode()))
|
||||
|
||||
self.restart_node(0, [f"-zmqpub{topic}={address}" for topic, address in services] +
|
||||
self.extra_args[0])
|
||||
self.restart_node(0, [f"-zmqpub{topic}={address}" for topic, address in services])
|
||||
|
||||
for i, sub in enumerate(subscribers):
|
||||
sub.socket.connect(services[i][1])
|
||||
|
@ -27,10 +27,11 @@ assert CUSTOM_DESCENDANT_LIMIT >= CUSTOM_ANCESTOR_LIMIT
|
||||
class MempoolPackagesTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [
|
||||
[
|
||||
"-maxorphantx=1000",
|
||||
"-whitelist=noban@127.0.0.1", # immediate tx relay
|
||||
],
|
||||
[
|
||||
"-maxorphantx=1000",
|
||||
|
@ -46,16 +46,16 @@ class TestP2PConn(P2PInterface):
|
||||
class FeeFilterTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
# We lower the various required feerates for this test
|
||||
# to catch a corner-case where feefilter used to slightly undercut
|
||||
# mempool and wallet feerate calculation based on GetFee
|
||||
# rounding down 3 places, leading to stranded transactions.
|
||||
# See issue #16499
|
||||
# grant noban permission to all peers to speed up tx relay / mempool sync
|
||||
self.extra_args = [[
|
||||
"-minrelaytxfee=0.00000100",
|
||||
"-mintxfee=0.00000100",
|
||||
"-whitelist=noban@127.0.0.1",
|
||||
"-mintxfee=0.00000100"
|
||||
]] * self.num_nodes
|
||||
|
||||
def run_test(self):
|
||||
|
@ -94,9 +94,10 @@ class P2PBloomFilter(P2PInterface):
|
||||
class FilterTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [[
|
||||
'-peerbloomfilters',
|
||||
'-whitelist=noban@127.0.0.1', # immediate tx relay
|
||||
]]
|
||||
|
||||
def generatetoscriptpubkey(self, scriptpubkey):
|
||||
|
@ -32,7 +32,8 @@ class InvalidBlockRequestTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
self.setup_clean_chain = True
|
||||
self.extra_args = [["-whitelist=noban@127.0.0.1"]]
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
|
||||
def run_test(self):
|
||||
# Add p2p connection to node0
|
||||
|
@ -213,9 +213,11 @@ class SegWitTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 2
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
# This test tests SegWit both pre and post-activation, so use the normal BIP9 activation.
|
||||
self.extra_args = [
|
||||
["-acceptnonstdtxn=1", f"-testactivationheight=segwit@{SEGWIT_HEIGHT}", "-whitelist=noban@127.0.0.1", "-par=1"],
|
||||
["-acceptnonstdtxn=1", f"-testactivationheight=segwit@{SEGWIT_HEIGHT}", "-par=1"],
|
||||
["-acceptnonstdtxn=0", f"-testactivationheight=segwit@{SEGWIT_HEIGHT}"],
|
||||
]
|
||||
self.supports_cli = False
|
||||
|
@ -29,7 +29,8 @@ class RPCPackagesTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
self.setup_clean_chain = True
|
||||
self.extra_args = [["-whitelist=noban@127.0.0.1"]] # noban speeds up tx relay
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
|
||||
def assert_testres_equal(self, package_hex, testres_expected):
|
||||
"""Shuffle package_hex and assert that the testmempoolaccept result matches testres_expected. This should only
|
||||
|
@ -73,9 +73,8 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||
["-txindex"],
|
||||
["-fastprune", "-prune=1"],
|
||||
]
|
||||
# whitelist all peers to speed up tx relay / mempool sync
|
||||
for args in self.extra_args:
|
||||
args.append("-whitelist=noban@127.0.0.1")
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.supports_cli = False
|
||||
|
||||
def setup_network(self):
|
||||
|
@ -96,6 +96,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
"""Sets test framework defaults. Do not override this method. Instead, override the set_test_params() method"""
|
||||
self.chain: str = 'regtest'
|
||||
self.setup_clean_chain: bool = False
|
||||
self.noban_tx_relay: bool = False
|
||||
self.nodes: list[TestNode] = []
|
||||
self.extra_args = None
|
||||
self.network_thread = None
|
||||
@ -494,6 +495,10 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
extra_confs = [[]] * num_nodes
|
||||
if extra_args is None:
|
||||
extra_args = [[]] * num_nodes
|
||||
# Whitelist peers to speed up tx relay / mempool sync. Don't use it if testing tx relay or timing.
|
||||
if self.noban_tx_relay:
|
||||
for i in range(len(extra_args)):
|
||||
extra_args[i] = extra_args[i] + ["-whitelist=noban,in,out@127.0.0.1"]
|
||||
if versions is None:
|
||||
versions = [None] * num_nodes
|
||||
if binary is None:
|
||||
|
@ -28,8 +28,7 @@ class AbandonConflictTest(BitcoinTestFramework):
|
||||
self.num_nodes = 2
|
||||
self.extra_args = [["-minrelaytxfee=0.00001"], []]
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
for args in self.extra_args:
|
||||
args.append("-whitelist=noban@127.0.0.1")
|
||||
self.noban_tx_relay = True
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
|
@ -79,9 +79,8 @@ class AddressTypeTest(BitcoinTestFramework):
|
||||
["-changetype=p2sh-segwit"],
|
||||
[],
|
||||
]
|
||||
# whitelist all peers to speed up tx relay / mempool sync
|
||||
for args in self.extra_args:
|
||||
args.append("-whitelist=noban@127.0.0.1")
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.supports_cli = False
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
|
@ -112,15 +112,15 @@ class AddressInputTypeGrouping(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 2
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [
|
||||
[
|
||||
"-addresstype=bech32",
|
||||
"-whitelist=noban@127.0.0.1",
|
||||
"-txindex",
|
||||
],
|
||||
[
|
||||
"-addresstype=p2sh-segwit",
|
||||
"-whitelist=noban@127.0.0.1",
|
||||
"-txindex",
|
||||
],
|
||||
]
|
||||
|
@ -69,9 +69,8 @@ class AvoidReuseTest(BitcoinTestFramework):
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
# This test isn't testing txn relay/timing, so set whitelist on the
|
||||
# peers for instant txn relay. This speeds up the test run time 2-3x.
|
||||
self.extra_args = [["-whitelist=noban@127.0.0.1"]] * self.num_nodes
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
|
@ -50,13 +50,14 @@ class WalletBackupTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 4
|
||||
self.setup_clean_chain = True
|
||||
# nodes 1, 2,3 are spenders, let's give them a keypool=100
|
||||
# whitelist all peers to speed up tx relay / mempool sync
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
# nodes 1, 2, 3 are spenders, let's give them a keypool=100
|
||||
self.extra_args = [
|
||||
["-whitelist=noban@127.0.0.1", "-keypool=100"],
|
||||
["-whitelist=noban@127.0.0.1", "-keypool=100"],
|
||||
["-whitelist=noban@127.0.0.1", "-keypool=100"],
|
||||
["-whitelist=noban@127.0.0.1"],
|
||||
["-keypool=100"],
|
||||
["-keypool=100"],
|
||||
["-keypool=100"],
|
||||
[],
|
||||
]
|
||||
self.rpc_timeout = 120
|
||||
|
||||
|
@ -53,15 +53,14 @@ class WalletTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.setup_clean_chain = True
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [
|
||||
# Limit mempool descendants as a hack to have wallet txs rejected from the mempool.
|
||||
# Set walletrejectlongchains=0 so the wallet still creates the transactions.
|
||||
['-limitdescendantcount=3', '-walletrejectlongchains=0'],
|
||||
[],
|
||||
]
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
for args in self.extra_args:
|
||||
args.append("-whitelist=noban@127.0.0.1")
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
|
@ -32,8 +32,10 @@ class WalletTest(BitcoinTestFramework):
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 4
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [[
|
||||
"-dustrelayfee=0", "-walletrejectlongchains=0", "-whitelist=noban@127.0.0.1"
|
||||
"-dustrelayfee=0", "-walletrejectlongchains=0"
|
||||
]] * self.num_nodes
|
||||
self.setup_clean_chain = True
|
||||
self.supports_cli = False
|
||||
|
@ -55,11 +55,12 @@ class BumpFeeTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.setup_clean_chain = True
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [[
|
||||
"-walletrbf={}".format(i),
|
||||
"-mintxfee=0.00002",
|
||||
"-addresstype=bech32",
|
||||
"-whitelist=noban@127.0.0.1",
|
||||
] for i in range(self.num_nodes)]
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
|
@ -45,9 +45,8 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 4
|
||||
self.setup_clean_chain = True
|
||||
# This test isn't testing tx relay. Set whitelist on the peers for
|
||||
# instant tx relay.
|
||||
self.extra_args = [['-whitelist=noban@127.0.0.1']] * self.num_nodes
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.rpc_timeout = 90 # to prevent timeouts in `test_transaction_too_large`
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
|
@ -22,6 +22,8 @@ class WalletGroupTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 5
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [
|
||||
[],
|
||||
[],
|
||||
@ -31,7 +33,6 @@ class WalletGroupTest(BitcoinTestFramework):
|
||||
]
|
||||
|
||||
for args in self.extra_args:
|
||||
args.append("-whitelist=noban@127.0.0.1") # whitelist peers to speed up tx relay / mempool sync
|
||||
args.append(f"-paytxfee={20 * 1e3 / 1e8}") # apply feerate of 20 sats/vB across all nodes
|
||||
|
||||
self.rpc_timeout = 480
|
||||
|
@ -23,8 +23,7 @@ class WalletHDTest(BitcoinTestFramework):
|
||||
self.num_nodes = 2
|
||||
self.extra_args = [[], ['-keypool=0']]
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
for args in self.extra_args:
|
||||
args.append("-whitelist=noban@127.0.0.1")
|
||||
self.noban_tx_relay = True
|
||||
|
||||
self.supports_cli = False
|
||||
|
||||
|
@ -160,6 +160,8 @@ class ImportRescanTest(BitcoinTestFramework):
|
||||
self.num_nodes = 2 + len(IMPORT_NODES)
|
||||
self.supports_cli = False
|
||||
self.rpc_timeout = 120
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
@ -177,7 +179,7 @@ class ImportRescanTest(BitcoinTestFramework):
|
||||
self.import_deterministic_coinbase_privkeys()
|
||||
self.stop_nodes()
|
||||
|
||||
self.start_nodes(extra_args=[["-whitelist=noban@127.0.0.1"]] * self.num_nodes)
|
||||
self.start_nodes()
|
||||
for i in range(1, self.num_nodes):
|
||||
self.connect_nodes(i, 0)
|
||||
|
||||
|
@ -36,12 +36,11 @@ class ImportDescriptorsTest(BitcoinTestFramework):
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [["-addresstype=legacy"],
|
||||
["-addresstype=bech32", "-keypool=5"]
|
||||
]
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
for args in self.extra_args:
|
||||
args.append("-whitelist=noban@127.0.0.1")
|
||||
self.setup_clean_chain = True
|
||||
self.wallet_names = []
|
||||
|
||||
|
@ -22,7 +22,7 @@ class ReceivedByTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.extra_args = [["-whitelist=noban@127.0.0.1"]] * self.num_nodes
|
||||
self.noban_tx_relay = True
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
|
@ -26,7 +26,7 @@ class ListSinceBlockTest(BitcoinTestFramework):
|
||||
self.num_nodes = 4
|
||||
self.setup_clean_chain = True
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.extra_args = [["-whitelist=noban@127.0.0.1"]] * self.num_nodes
|
||||
self.noban_tx_relay = True
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
|
@ -26,9 +26,9 @@ class ListTransactionsTest(BitcoinTestFramework):
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 3
|
||||
# This test isn't testing txn relay/timing, so set whitelist on the
|
||||
# peers for instant txn relay. This speeds up the test run time 2-3x.
|
||||
self.extra_args = [["-whitelist=noban@127.0.0.1", "-walletrbf=0"]] * self.num_nodes
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [["-walletrbf=0"]] * self.num_nodes
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
|
@ -30,10 +30,11 @@ class WalletSendTest(BitcoinTestFramework):
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
# whitelist all peers to speed up tx relay / mempool sync
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
self.noban_tx_relay = True
|
||||
self.extra_args = [
|
||||
["-whitelist=127.0.0.1","-walletrbf=1"],
|
||||
["-whitelist=127.0.0.1","-walletrbf=1"],
|
||||
["-walletrbf=1"],
|
||||
["-walletrbf=1"]
|
||||
]
|
||||
getcontext().prec = 8 # Satoshi precision for Decimal
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user