qa: Run all tests even if wallet is not compiled
This commit is contained in:
parent
faa669cbcd
commit
fac9539836
85 changed files with 378 additions and 72 deletions
|
@ -67,10 +67,11 @@ def custom_function():
|
||||||
# self.log.info("running custom_function") # Oops! Can't run self.log outside the BitcoinTestFramework
|
# self.log.info("running custom_function") # Oops! Can't run self.log outside the BitcoinTestFramework
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ExampleTest(BitcoinTestFramework):
|
class ExampleTest(BitcoinTestFramework):
|
||||||
# Each functional test is a subclass of the BitcoinTestFramework class.
|
# Each functional test is a subclass of the BitcoinTestFramework class.
|
||||||
|
|
||||||
# Override the set_test_params(), add_options(), setup_chain(), setup_network()
|
# Override the set_test_params(), skip_test_if_missing_module(), add_options(), setup_chain(), setup_network()
|
||||||
# and setup_nodes() methods to customize the test setup as required.
|
# and setup_nodes() methods to customize the test setup as required.
|
||||||
|
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
|
@ -84,6 +85,9 @@ class ExampleTest(BitcoinTestFramework):
|
||||||
|
|
||||||
# self.log.info("I've finished set_test_params") # Oops! Can't run self.log before run_test()
|
# self.log.info("I've finished set_test_params") # Oops! Can't run self.log before run_test()
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
# Use add_options() to add specific command-line options for your test.
|
# Use add_options() to add specific command-line options for your test.
|
||||||
# In practice this is not used very much, since the tests are mostly written
|
# In practice this is not used very much, since the tests are mostly written
|
||||||
# to be run in automated environments without command-line options.
|
# to be run in automated environments without command-line options.
|
||||||
|
|
|
@ -25,6 +25,9 @@ class BIP68Test(BitcoinTestFramework):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.extra_args = [[], ["-acceptnonstdtxn=0"]]
|
self.extra_args = [[], ["-acceptnonstdtxn=0"]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.relayfee = self.nodes[0].getnetworkinfo()["relayfee"]
|
self.relayfee = self.nodes[0].getnetworkinfo()["relayfee"]
|
||||||
|
|
||||||
|
|
|
@ -75,6 +75,9 @@ class FullBlockTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.extra_args = [[]]
|
self.extra_args = [[]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
node = self.nodes[0] # convenience reference to the node
|
node = self.nodes[0] # convenience reference to the node
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,9 @@ class BlocksdirTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.stop_node(0)
|
self.stop_node(0)
|
||||||
shutil.rmtree(self.nodes[0].datadir)
|
shutil.rmtree(self.nodes[0].datadir)
|
||||||
|
|
|
@ -57,6 +57,9 @@ class BIP65Test(BitcoinTestFramework):
|
||||||
self.extra_args = [['-whitelist=127.0.0.1']]
|
self.extra_args = [['-whitelist=127.0.0.1']]
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.nodes[0].add_p2p_connection(P2PInterface())
|
self.nodes[0].add_p2p_connection(P2PInterface())
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,9 @@ class ConfArgsTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def test_config_file_parser(self):
|
def test_config_file_parser(self):
|
||||||
# Assume node is stopped
|
# Assume node is stopped
|
||||||
|
|
||||||
|
|
|
@ -145,6 +145,9 @@ class BIP68_112_113Test(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.extra_args = [['-whitelist=127.0.0.1', '-blockversion=4', '-addresstype=legacy']]
|
self.extra_args = [['-whitelist=127.0.0.1', '-blockversion=4', '-addresstype=legacy']]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def generate_blocks(self, number, version, test_blocks=None):
|
def generate_blocks(self, number, version, test_blocks=None):
|
||||||
if test_blocks is None:
|
if test_blocks is None:
|
||||||
test_blocks = []
|
test_blocks = []
|
||||||
|
|
|
@ -63,6 +63,9 @@ class ChainstateWriteCrashTest(BitcoinTestFramework):
|
||||||
self.node3_args = ["-blockmaxweight=4000000"]
|
self.node3_args = ["-blockmaxweight=4000000"]
|
||||||
self.extra_args = [self.node0_args, self.node1_args, self.node2_args, self.node3_args]
|
self.extra_args = [self.node0_args, self.node1_args, self.node2_args, self.node3_args]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.add_nodes(self.num_nodes, extra_args=self.extra_args)
|
self.add_nodes(self.num_nodes, extra_args=self.extra_args)
|
||||||
self.start_nodes()
|
self.start_nodes()
|
||||||
|
|
|
@ -45,6 +45,9 @@ class BIP66Test(BitcoinTestFramework):
|
||||||
self.extra_args = [['-whitelist=127.0.0.1']]
|
self.extra_args = [['-whitelist=127.0.0.1']]
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.nodes[0].add_p2p_connection(P2PInterface())
|
self.nodes[0].add_p2p_connection(P2PInterface())
|
||||||
|
|
||||||
|
|
|
@ -126,6 +126,9 @@ class EstimateFeeTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 3
|
self.num_nodes = 3
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
"""
|
"""
|
||||||
We'll setup the network to have 3 nodes that all mine with different parameters.
|
We'll setup the network to have 3 nodes that all mine with different parameters.
|
||||||
|
|
|
@ -15,6 +15,9 @@ class LoggingTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def relative_log_path(self, name):
|
def relative_log_path(self, name):
|
||||||
return os.path.join(self.nodes[0].datadir, "regtest", name)
|
return os.path.join(self.nodes[0].datadir, "regtest", name)
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,9 @@ class MaxUploadTest(BitcoinTestFramework):
|
||||||
# Cache for utxos, as the listunspent may take a long time later in the test
|
# Cache for utxos, as the listunspent may take a long time later in the test
|
||||||
self.utxo_cache = []
|
self.utxo_cache = []
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Before we connect anything, we first set the time on the node
|
# Before we connect anything, we first set the time on the node
|
||||||
# to be in the past, otherwise things break because the CNode
|
# to be in the past, otherwise things break because the CNode
|
||||||
|
|
|
@ -31,6 +31,9 @@ class MinimumChainWorkTest(BitcoinTestFramework):
|
||||||
self.extra_args = [[], ["-minimumchainwork=0x65"], ["-minimumchainwork=0x65"]]
|
self.extra_args = [[], ["-minimumchainwork=0x65"], ["-minimumchainwork=0x65"]]
|
||||||
self.node_min_work = [0, 101, 101]
|
self.node_min_work = [0, 101, 101]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
# This test relies on the chain setup being:
|
# This test relies on the chain setup being:
|
||||||
# node0 <- node1 <- node2
|
# node0 <- node1 <- node2
|
||||||
|
|
|
@ -13,6 +13,9 @@ class NotificationsTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.alert_filename = os.path.join(self.options.tmpdir, "alert.txt")
|
self.alert_filename = os.path.join(self.options.tmpdir, "alert.txt")
|
||||||
self.block_filename = os.path.join(self.options.tmpdir, "blocks.txt")
|
self.block_filename = os.path.join(self.options.tmpdir, "blocks.txt")
|
||||||
|
|
|
@ -44,9 +44,12 @@ class NULLDUMMYTest(BitcoinTestFramework):
|
||||||
# normal segwit activation here (and don't use the default always-on behaviour).
|
# normal segwit activation here (and don't use the default always-on behaviour).
|
||||||
self.extra_args = [['-whitelist=127.0.0.1', '-vbparams=segwit:0:999999999999', '-addresstype=legacy', "-deprecatedrpc=addwitnessaddress"]]
|
self.extra_args = [['-whitelist=127.0.0.1', '-vbparams=segwit:0:999999999999', '-addresstype=legacy', "-deprecatedrpc=addwitnessaddress"]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.address = self.nodes[0].getnewaddress()
|
self.address = self.nodes[0].getnewaddress()
|
||||||
self.ms_address = self.nodes[0].addmultisigaddress(1,[self.address])['address']
|
self.ms_address = self.nodes[0].addmultisigaddress(1, [self.address])['address']
|
||||||
self.wit_address = self.nodes[0].addwitnessaddress(self.address)
|
self.wit_address = self.nodes[0].addwitnessaddress(self.address)
|
||||||
self.wit_ms_address = self.nodes[0].addmultisigaddress(1, [self.address], '', 'p2sh-segwit')['address']
|
self.wit_ms_address = self.nodes[0].addmultisigaddress(1, [self.address], '', 'p2sh-segwit')['address']
|
||||||
|
|
||||||
|
|
|
@ -33,15 +33,20 @@ class PruneTest(BitcoinTestFramework):
|
||||||
|
|
||||||
# Create nodes 0 and 1 to mine.
|
# Create nodes 0 and 1 to mine.
|
||||||
# Create node 2 to test pruning.
|
# Create node 2 to test pruning.
|
||||||
self.full_node_default_args = ["-maxreceivebuffer=20000", "-checkblocks=5", "-limitdescendantcount=100", "-limitdescendantsize=5000", "-limitancestorcount=100", "-limitancestorsize=5000" ]
|
self.full_node_default_args = ["-maxreceivebuffer=20000", "-checkblocks=5", "-limitdescendantcount=100", "-limitdescendantsize=5000", "-limitancestorcount=100", "-limitancestorsize=5000"]
|
||||||
# Create nodes 3 and 4 to test manual pruning (they will be re-started with manual pruning later)
|
# Create nodes 3 and 4 to test manual pruning (they will be re-started with manual pruning later)
|
||||||
# Create nodes 5 to test wallet in prune mode, but do not connect
|
# Create nodes 5 to test wallet in prune mode, but do not connect
|
||||||
self.extra_args = [self.full_node_default_args,
|
self.extra_args = [
|
||||||
self.full_node_default_args,
|
self.full_node_default_args,
|
||||||
["-maxreceivebuffer=20000", "-prune=550"],
|
self.full_node_default_args,
|
||||||
["-maxreceivebuffer=20000"],
|
["-maxreceivebuffer=20000", "-prune=550"],
|
||||||
["-maxreceivebuffer=20000"],
|
["-maxreceivebuffer=20000"],
|
||||||
["-prune=550"]]
|
["-maxreceivebuffer=20000"],
|
||||||
|
["-prune=550"],
|
||||||
|
]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.setup_nodes()
|
self.setup_nodes()
|
||||||
|
|
|
@ -61,17 +61,26 @@ def make_utxo(node, amount, confirmed=True, scriptPubKey=CScript([1])):
|
||||||
|
|
||||||
return COutPoint(int(txid, 16), 0)
|
return COutPoint(int(txid, 16), 0)
|
||||||
|
|
||||||
class ReplaceByFeeTest(BitcoinTestFramework):
|
|
||||||
|
|
||||||
|
class ReplaceByFeeTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.extra_args= [["-maxorphantx=1000",
|
self.extra_args = [
|
||||||
"-whitelist=127.0.0.1",
|
[
|
||||||
"-limitancestorcount=50",
|
"-maxorphantx=1000",
|
||||||
"-limitancestorsize=101",
|
"-whitelist=127.0.0.1",
|
||||||
"-limitdescendantcount=200",
|
"-limitancestorcount=50",
|
||||||
"-limitdescendantsize=101"],
|
"-limitancestorsize=101",
|
||||||
["-mempoolreplacement=0"]]
|
"-limitdescendantcount=200",
|
||||||
|
"-limitdescendantsize=101",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"-mempoolreplacement=0",
|
||||||
|
],
|
||||||
|
]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Leave IBD
|
# Leave IBD
|
||||||
|
|
|
@ -18,6 +18,9 @@ class ReindexTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def reindex(self, justchainstate=False):
|
def reindex(self, justchainstate=False):
|
||||||
self.nodes[0].generate(3)
|
self.nodes[0].generate(3)
|
||||||
blockcount = self.nodes[0].getblockcount()
|
blockcount = self.nodes[0].getblockcount()
|
||||||
|
|
|
@ -46,9 +46,30 @@ class SegWitTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 3
|
self.num_nodes = 3
|
||||||
# This test tests SegWit both pre and post-activation, so use the normal BIP9 activation.
|
# This test tests SegWit both pre and post-activation, so use the normal BIP9 activation.
|
||||||
self.extra_args = [["-rpcserialversion=0", "-vbparams=segwit:0:999999999999", "-addresstype=legacy", "-deprecatedrpc=addwitnessaddress"],
|
self.extra_args = [
|
||||||
["-blockversion=4", "-rpcserialversion=1", "-vbparams=segwit:0:999999999999", "-addresstype=legacy", "-deprecatedrpc=addwitnessaddress"],
|
[
|
||||||
["-blockversion=536870915", "-vbparams=segwit:0:999999999999", "-addresstype=legacy", "-deprecatedrpc=addwitnessaddress"]]
|
"-rpcserialversion=0",
|
||||||
|
"-vbparams=segwit:0:999999999999",
|
||||||
|
"-addresstype=legacy",
|
||||||
|
"-deprecatedrpc=addwitnessaddress",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"-blockversion=4",
|
||||||
|
"-rpcserialversion=1",
|
||||||
|
"-vbparams=segwit:0:999999999999",
|
||||||
|
"-addresstype=legacy",
|
||||||
|
"-deprecatedrpc=addwitnessaddress",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"-blockversion=536870915",
|
||||||
|
"-vbparams=segwit:0:999999999999",
|
||||||
|
"-addresstype=legacy",
|
||||||
|
"-deprecatedrpc=addwitnessaddress",
|
||||||
|
],
|
||||||
|
]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
super().setup_network()
|
super().setup_network()
|
||||||
|
|
|
@ -31,6 +31,9 @@ class VersionBitsWarningTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.alert_filename = os.path.join(self.options.tmpdir, "alert.txt")
|
self.alert_filename = os.path.join(self.options.tmpdir, "alert.txt")
|
||||||
# Open and close to create zero-length file
|
# Open and close to create zero-length file
|
||||||
|
|
|
@ -12,6 +12,9 @@ class TestBitcoinCli(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
"""Main test logic"""
|
"""Main test logic"""
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,9 @@ class RESTTest (BitcoinTestFramework):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.extra_args = [["-rest"], []]
|
self.extra_args = [["-rest"], []]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def test_rest_request(self, uri, http_method='GET', req_type=ReqType.JSON, body='', status=200, ret_type=RetType.JSON):
|
def test_rest_request(self, uri, http_method='GET', req_type=ReqType.JSON, body='', status=200, ret_type=RetType.JSON):
|
||||||
rest_uri = '/rest' + uri
|
rest_uri = '/rest' + uri
|
||||||
if req_type == ReqType.JSON:
|
if req_type == ReqType.JSON:
|
||||||
|
|
|
@ -5,15 +5,16 @@
|
||||||
"""Test the ZMQ notification interface."""
|
"""Test the ZMQ notification interface."""
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
from test_framework.test_framework import (
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
BitcoinTestFramework, skip_if_no_bitcoind_zmq, skip_if_no_py3_zmq)
|
|
||||||
from test_framework.messages import CTransaction
|
from test_framework.messages import CTransaction
|
||||||
from test_framework.util import (assert_equal,
|
from test_framework.util import (
|
||||||
bytes_to_hex_str,
|
assert_equal,
|
||||||
hash256,
|
bytes_to_hex_str,
|
||||||
)
|
hash256,
|
||||||
|
)
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
|
|
||||||
class ZMQSubscriber:
|
class ZMQSubscriber:
|
||||||
def __init__(self, socket, topic):
|
def __init__(self, socket, topic):
|
||||||
self.sequence = 0
|
self.sequence = 0
|
||||||
|
@ -37,10 +38,12 @@ class ZMQTest (BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
|
|
||||||
def setup_nodes(self):
|
def skip_test_if_missing_module(self):
|
||||||
skip_if_no_py3_zmq()
|
self.skip_if_no_py3_zmq()
|
||||||
skip_if_no_bitcoind_zmq(self)
|
self.skip_if_no_bitcoind_zmq()
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
|
def setup_nodes(self):
|
||||||
# Import keys
|
# Import keys
|
||||||
self.add_nodes(self.num_nodes)
|
self.add_nodes(self.num_nodes)
|
||||||
self.start_nodes()
|
self.start_nodes()
|
||||||
|
|
|
@ -40,6 +40,9 @@ class MempoolAcceptanceTest(BitcoinTestFramework):
|
||||||
'-acceptnonstdtxn=0', # Try to mimic main-net
|
'-acceptnonstdtxn=0', # Try to mimic main-net
|
||||||
]] * self.num_nodes
|
]] * self.num_nodes
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def check_mempool_result(self, result_expected, *args, **kwargs):
|
def check_mempool_result(self, result_expected, *args, **kwargs):
|
||||||
"""Wrapper to check result of testmempoolaccept on node_0's mempool"""
|
"""Wrapper to check result of testmempoolaccept on node_0's mempool"""
|
||||||
result_test = self.nodes[0].testmempoolaccept(*args, **kwargs)
|
result_test = self.nodes[0].testmempoolaccept(*args, **kwargs)
|
||||||
|
|
|
@ -15,6 +15,9 @@ class MempoolLimitTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.extra_args = [["-maxmempool=5", "-spendzeroconfchange=0"]]
|
self.extra_args = [["-maxmempool=5", "-spendzeroconfchange=0"]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
txouts = gen_return_txouts()
|
txouts = gen_return_txouts()
|
||||||
relayfee = self.nodes[0].getnetworkinfo()['relayfee']
|
relayfee = self.nodes[0].getnetworkinfo()['relayfee']
|
||||||
|
|
|
@ -18,6 +18,9 @@ class MempoolPackagesTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.extra_args = [["-maxorphantx=1000"], ["-maxorphantx=1000", "-limitancestorcount=5"]]
|
self.extra_args = [["-maxorphantx=1000"], ["-maxorphantx=1000", "-limitancestorcount=5"]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
# Build a transaction that spends parent_txid:vout
|
# Build a transaction that spends parent_txid:vout
|
||||||
# Return amount sent
|
# Return amount sent
|
||||||
def chain_transaction(self, node, parent_txid, vout, value, fee, num_outputs):
|
def chain_transaction(self, node, parent_txid, vout, value, fee, num_outputs):
|
||||||
|
|
|
@ -47,6 +47,9 @@ class MempoolPersistTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 3
|
self.num_nodes = 3
|
||||||
self.extra_args = [[], ["-persistmempool=0"], []]
|
self.extra_args = [[], ["-persistmempool=0"], []]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
chain_height = self.nodes[0].getblockcount()
|
chain_height = self.nodes[0].getblockcount()
|
||||||
assert_equal(chain_height, 200)
|
assert_equal(chain_height, 200)
|
||||||
|
|
|
@ -17,6 +17,9 @@ class MempoolCoinbaseTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
alert_filename = None # Set by setup_network
|
alert_filename = None # Set by setup_network
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
|
|
|
@ -13,6 +13,9 @@ class MempoolCoinbaseTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
node0_address = self.nodes[0].getnewaddress()
|
node0_address = self.nodes[0].getnewaddress()
|
||||||
# Spend block 1/2/3's coinbase transactions
|
# Spend block 1/2/3's coinbase transactions
|
||||||
|
|
|
@ -21,6 +21,9 @@ class MempoolSpendCoinbaseTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
chain_height = self.nodes[0].getblockcount()
|
chain_height = self.nodes[0].getblockcount()
|
||||||
assert_equal(chain_height, 200)
|
assert_equal(chain_height, 200)
|
||||||
|
|
|
@ -38,6 +38,9 @@ class MiningTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.setup_clean_chain = False
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
node = self.nodes[0]
|
node = self.nodes[0]
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,9 @@ class GetBlockTemplateLPTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.log.info("Warning: this test will take about 70 seconds in the best case. Be patient.")
|
self.log.info("Warning: this test will take about 70 seconds in the best case. Be patient.")
|
||||||
self.nodes[0].generate(10)
|
self.nodes[0].generate(10)
|
||||||
|
|
|
@ -16,6 +16,9 @@ class PrioritiseTransactionTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.extra_args = [["-printpriority=1"], ["-printpriority=1"]]
|
self.extra_args = [["-printpriority=1"], ["-printpriority=1"]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Test `prioritisetransaction` required parameters
|
# Test `prioritisetransaction` required parameters
|
||||||
assert_raises_rpc_error(-1, "prioritisetransaction", self.nodes[0].prioritisetransaction)
|
assert_raises_rpc_error(-1, "prioritisetransaction", self.nodes[0].prioritisetransaction)
|
||||||
|
|
|
@ -102,6 +102,9 @@ class CompactBlocksTest(BitcoinTestFramework):
|
||||||
self.extra_args = [["-vbparams=segwit:0:0"], ["-vbparams=segwit:0:999999999999", "-txindex", "-deprecatedrpc=addwitnessaddress"]]
|
self.extra_args = [["-vbparams=segwit:0:0"], ["-vbparams=segwit:0:999999999999", "-txindex", "-deprecatedrpc=addwitnessaddress"]]
|
||||||
self.utxos = []
|
self.utxos = []
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def build_block_on_tip(self, node, segwit=False):
|
def build_block_on_tip(self, node, segwit=False):
|
||||||
height = node.getblockcount()
|
height = node.getblockcount()
|
||||||
tip = node.getbestblockhash()
|
tip = node.getbestblockhash()
|
||||||
|
|
|
@ -42,6 +42,9 @@ class FeeFilterTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
node1 = self.nodes[1]
|
node1 = self.nodes[1]
|
||||||
node0 = self.nodes[0]
|
node0 = self.nodes[0]
|
||||||
|
|
|
@ -30,6 +30,9 @@ class P2PFingerprintTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
# Build a chain of blocks on top of given one
|
# Build a chain of blocks on top of given one
|
||||||
def build_chain(self, nblocks, prev_hash, prev_height, prev_median_time):
|
def build_chain(self, nblocks, prev_hash, prev_height, prev_median_time):
|
||||||
blocks = []
|
blocks = []
|
||||||
|
|
|
@ -24,6 +24,9 @@ class InvalidBlockRequestTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.extra_args = [["-whitelist=127.0.0.1"]]
|
self.extra_args = [["-whitelist=127.0.0.1"]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Add p2p connection to node0
|
# Add p2p connection to node0
|
||||||
node = self.nodes[0] # convenience reference to the node
|
node = self.nodes[0] # convenience reference to the node
|
||||||
|
|
|
@ -15,6 +15,9 @@ class InvalidLocatorTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.setup_clean_chain = False
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
node = self.nodes[0] # convenience reference to the node
|
node = self.nodes[0] # convenience reference to the node
|
||||||
node.generate(1) # Get node out of IBD
|
node.generate(1) # Get node out of IBD
|
||||||
|
|
|
@ -26,6 +26,9 @@ class InvalidTxRequestTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def bootstrap_p2p(self, *, num_connections=1):
|
def bootstrap_p2p(self, *, num_connections=1):
|
||||||
"""Add a P2P connection to the node.
|
"""Add a P2P connection to the node.
|
||||||
|
|
||||||
|
|
|
@ -93,6 +93,9 @@ class P2PLeakTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.extra_args = [['-banscore=' + str(banscore)]]
|
self.extra_args = [['-banscore=' + str(banscore)]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
no_version_bannode = self.nodes[0].add_p2p_connection(CNodeNoVersionBan(), send_version=False, wait_for_verack=False)
|
no_version_bannode = self.nodes[0].add_p2p_connection(CNodeNoVersionBan(), send_version=False, wait_for_verack=False)
|
||||||
no_version_idlenode = self.nodes[0].add_p2p_connection(CNodeNoVersionIdle(), send_version=False, wait_for_verack=False)
|
no_version_idlenode = self.nodes[0].add_p2p_connection(CNodeNoVersionIdle(), send_version=False, wait_for_verack=False)
|
||||||
|
|
|
@ -34,6 +34,9 @@ class NodeNetworkLimitedTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 3
|
self.num_nodes = 3
|
||||||
self.extra_args = [['-prune=550', '-addrmantest'], [], []]
|
self.extra_args = [['-prune=550', '-addrmantest'], [], []]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def disconnect_all(self):
|
def disconnect_all(self):
|
||||||
disconnect_nodes(self.nodes[0], 1)
|
disconnect_nodes(self.nodes[0], 1)
|
||||||
disconnect_nodes(self.nodes[1], 0)
|
disconnect_nodes(self.nodes[1], 0)
|
||||||
|
|
|
@ -198,6 +198,9 @@ class SegWitTest(BitcoinTestFramework):
|
||||||
# This test tests SegWit both pre and post-activation, so use the normal BIP9 activation.
|
# This test tests SegWit both pre and post-activation, so use the normal BIP9 activation.
|
||||||
self.extra_args = [["-whitelist=127.0.0.1", "-vbparams=segwit:0:999999999999"], ["-whitelist=127.0.0.1", "-acceptnonstdtxn=0", "-vbparams=segwit:0:999999999999"], ["-whitelist=127.0.0.1", "-vbparams=segwit:0:0"]]
|
self.extra_args = [["-whitelist=127.0.0.1", "-vbparams=segwit:0:999999999999"], ["-whitelist=127.0.0.1", "-acceptnonstdtxn=0", "-vbparams=segwit:0:999999999999"], ["-whitelist=127.0.0.1", "-vbparams=segwit:0:0"]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.setup_nodes()
|
self.setup_nodes()
|
||||||
connect_nodes(self.nodes[0], 1)
|
connect_nodes(self.nodes[0], 1)
|
||||||
|
|
|
@ -208,6 +208,9 @@ class SendHeadersTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def mine_blocks(self, count):
|
def mine_blocks(self, count):
|
||||||
"""Mine count blocks and return the new tip."""
|
"""Mine count blocks and return the new tip."""
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,9 @@ class AcceptBlockTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.extra_args = [[], ["-minimumchainwork=0x10"]]
|
self.extra_args = [[], ["-minimumchainwork=0x10"]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
# Node0 will be used to test behavior of processing unrequested blocks
|
# Node0 will be used to test behavior of processing unrequested blocks
|
||||||
# from peers which are not whitelisted, while Node1 will be used for
|
# from peers which are not whitelisted, while Node1 will be used for
|
||||||
|
|
|
@ -48,6 +48,9 @@ class BlockchainTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.restart_node(0, extra_args=['-stopatheight=207', '-prune=1']) # Set extra args with pruning after rescan is complete
|
self.restart_node(0, extra_args=['-stopatheight=207', '-prune=1']) # Set extra args with pruning after rescan is complete
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,11 @@ class RpcCreateMultiSigTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 3
|
self.num_nodes = 3
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def get_keys(self):
|
def get_keys(self):
|
||||||
node0,node1,node2 = self.nodes
|
node0, node1, node2 = self.nodes
|
||||||
self.add = [node1.getnewaddress() for _ in range(self.nkeys)]
|
self.add = [node1.getnewaddress() for _ in range(self.nkeys)]
|
||||||
self.pub = [node1.getaddressinfo(a)["pubkey"] for a in self.add]
|
self.pub = [node1.getaddressinfo(a)["pubkey"] for a in self.add]
|
||||||
self.priv = [node1.dumpprivkey(a) for a in self.add]
|
self.priv = [node1.dumpprivkey(a) for a in self.add]
|
||||||
|
|
|
@ -29,6 +29,9 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 4
|
self.num_nodes = 4
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.setup_nodes()
|
self.setup_nodes()
|
||||||
|
|
||||||
|
|
|
@ -17,15 +17,18 @@ class GetChainTipsTest (BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 4
|
self.num_nodes = 4
|
||||||
|
|
||||||
def run_test (self):
|
def skip_test_if_missing_module(self):
|
||||||
tips = self.nodes[0].getchaintips ()
|
self.skip_if_no_wallet()
|
||||||
assert_equal (len (tips), 1)
|
|
||||||
assert_equal (tips[0]['branchlen'], 0)
|
def run_test(self):
|
||||||
assert_equal (tips[0]['height'], 200)
|
tips = self.nodes[0].getchaintips()
|
||||||
assert_equal (tips[0]['status'], 'active')
|
assert_equal(len(tips), 1)
|
||||||
|
assert_equal(tips[0]['branchlen'], 0)
|
||||||
|
assert_equal(tips[0]['height'], 200)
|
||||||
|
assert_equal(tips[0]['status'], 'active')
|
||||||
|
|
||||||
# Split the network and build two chains of different lengths.
|
# Split the network and build two chains of different lengths.
|
||||||
self.split_network ()
|
self.split_network()
|
||||||
self.nodes[0].generate(10)
|
self.nodes[0].generate(10)
|
||||||
self.nodes[2].generate(20)
|
self.nodes[2].generate(20)
|
||||||
self.sync_all([self.nodes[:2], self.nodes[2:]])
|
self.sync_all([self.nodes[:2], self.nodes[2:]])
|
||||||
|
|
|
@ -4,9 +4,10 @@
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
"""Test RPC help output."""
|
"""Test RPC help output."""
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework, is_zmq_enabled
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, assert_raises_rpc_error
|
from test_framework.util import assert_equal, assert_raises_rpc_error
|
||||||
|
|
||||||
|
|
||||||
class HelpRpcTest(BitcoinTestFramework):
|
class HelpRpcTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
@ -26,12 +27,16 @@ class HelpRpcTest(BitcoinTestFramework):
|
||||||
# command titles
|
# command titles
|
||||||
titles = [line[3:-3] for line in node.help().splitlines() if line.startswith('==')]
|
titles = [line[3:-3] for line in node.help().splitlines() if line.startswith('==')]
|
||||||
|
|
||||||
components = ['Blockchain', 'Control', 'Generating', 'Mining', 'Network', 'Rawtransactions', 'Util', 'Wallet']
|
components = ['Blockchain', 'Control', 'Generating', 'Mining', 'Network', 'Rawtransactions', 'Util']
|
||||||
|
|
||||||
if is_zmq_enabled(self):
|
if self.is_wallet_compiled():
|
||||||
|
components.append('Wallet')
|
||||||
|
|
||||||
|
if self.is_zmq_compiled():
|
||||||
components.append('Zmq')
|
components.append('Zmq')
|
||||||
|
|
||||||
assert_equal(titles, components)
|
assert_equal(titles, components)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
HelpRpcTest().main()
|
HelpRpcTest().main()
|
||||||
|
|
|
@ -14,6 +14,9 @@ class InvalidateTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 3
|
self.num_nodes = 3
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.setup_nodes()
|
self.setup_nodes()
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,9 @@ class PreciousTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 3
|
self.num_nodes = 3
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.setup_nodes()
|
self.setup_nodes()
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,9 @@ class PSBTTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = False
|
self.setup_clean_chain = False
|
||||||
self.num_nodes = 3
|
self.num_nodes = 3
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Create and fund a raw tx for sending 10 BTC
|
# Create and fund a raw tx for sending 10 BTC
|
||||||
psbtx1 = self.nodes[0].walletcreatefundedpsbt([], {self.nodes[2].getnewaddress():10})['psbt']
|
psbtx1 = self.nodes[0].walletcreatefundedpsbt([], {self.nodes[2].getnewaddress():10})['psbt']
|
||||||
|
|
|
@ -44,6 +44,9 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 3
|
self.num_nodes = 3
|
||||||
self.extra_args = [["-addresstype=legacy"], ["-addresstype=legacy"], ["-addresstype=legacy"]]
|
self.extra_args = [["-addresstype=legacy"], ["-addresstype=legacy"], ["-addresstype=legacy"]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
super().setup_network()
|
super().setup_network()
|
||||||
connect_nodes_bi(self.nodes, 0, 2)
|
connect_nodes_bi(self.nodes, 0, 2)
|
||||||
|
|
|
@ -14,6 +14,10 @@ class ScantxoutsetTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.log.info("Mining blocks...")
|
self.log.info("Mining blocks...")
|
||||||
self.nodes[0].generate(110)
|
self.nodes[0].generate(110)
|
||||||
|
|
|
@ -13,6 +13,9 @@ class SignMessagesTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.extra_args = [["-addresstype=legacy"]]
|
self.extra_args = [["-addresstype=legacy"]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
message = 'This is just a test message'
|
message = 'This is just a test message'
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,9 @@ class SignRawTransactionsTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.extra_args = [["-deprecatedrpc=signrawtransaction"]]
|
self.extra_args = [["-deprecatedrpc=signrawtransaction"]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def successful_signing_test(self):
|
def successful_signing_test(self):
|
||||||
"""Create and sign a valid raw transaction with one input.
|
"""Create and sign a valid raw transaction with one input.
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,9 @@ class MerkleBlockTest(BitcoinTestFramework):
|
||||||
# Nodes 0/1 are "wallet" nodes, Nodes 2/3 are used for testing
|
# Nodes 0/1 are "wallet" nodes, Nodes 2/3 are used for testing
|
||||||
self.extra_args = [[], [], [], ["-txindex"]]
|
self.extra_args = [[], [], [], ["-txindex"]]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.setup_nodes()
|
self.setup_nodes()
|
||||||
connect_nodes(self.nodes[0], 1)
|
connect_nodes(self.nodes[0], 1)
|
||||||
|
|
|
@ -4,8 +4,7 @@
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
"""Test for the ZMQ RPC methods."""
|
"""Test for the ZMQ RPC methods."""
|
||||||
|
|
||||||
from test_framework.test_framework import (
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
BitcoinTestFramework, skip_if_no_py3_zmq, skip_if_no_bitcoind_zmq)
|
|
||||||
from test_framework.util import assert_equal
|
from test_framework.util import assert_equal
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,9 +16,11 @@ class RPCZMQTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_py3_zmq()
|
||||||
|
self.skip_if_no_bitcoind_zmq()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
skip_if_no_py3_zmq()
|
|
||||||
skip_if_no_bitcoind_zmq(self)
|
|
||||||
self._test_getzmqnotifications()
|
self._test_getzmqnotifications()
|
||||||
|
|
||||||
def _test_getzmqnotifications(self):
|
def _test_getzmqnotifications(self):
|
||||||
|
|
|
@ -44,6 +44,13 @@ TEST_EXIT_FAILED = 1
|
||||||
TEST_EXIT_SKIPPED = 77
|
TEST_EXIT_SKIPPED = 77
|
||||||
|
|
||||||
|
|
||||||
|
class SkipTest(Exception):
|
||||||
|
"""This exception is raised to skip a test"""
|
||||||
|
|
||||||
|
def __init__(self, message):
|
||||||
|
self.message = message
|
||||||
|
|
||||||
|
|
||||||
class BitcoinTestMetaClass(type):
|
class BitcoinTestMetaClass(type):
|
||||||
"""Metaclass for BitcoinTestFramework.
|
"""Metaclass for BitcoinTestFramework.
|
||||||
|
|
||||||
|
@ -156,6 +163,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||||
try:
|
try:
|
||||||
if self.options.usecli and not self.supports_cli:
|
if self.options.usecli and not self.supports_cli:
|
||||||
raise SkipTest("--usecli specified but test does not support using CLI")
|
raise SkipTest("--usecli specified but test does not support using CLI")
|
||||||
|
self.skip_test_if_missing_module()
|
||||||
self.setup_chain()
|
self.setup_chain()
|
||||||
self.setup_network()
|
self.setup_network()
|
||||||
self.import_deterministic_coinbase_privkeys()
|
self.import_deterministic_coinbase_privkeys()
|
||||||
|
@ -221,6 +229,10 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||||
"""Override this method to add command-line options to the test"""
|
"""Override this method to add command-line options to the test"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
"""Override this method to skip a test if a module is not compiled"""
|
||||||
|
pass
|
||||||
|
|
||||||
def setup_chain(self):
|
def setup_chain(self):
|
||||||
"""Override this method to customize blockchain setup"""
|
"""Override this method to customize blockchain setup"""
|
||||||
self.log.info("Initializing test directory " + self.options.tmpdir)
|
self.log.info("Initializing test directory " + self.options.tmpdir)
|
||||||
|
@ -486,30 +498,45 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||||
for i in range(self.num_nodes):
|
for i in range(self.num_nodes):
|
||||||
initialize_datadir(self.options.tmpdir, i)
|
initialize_datadir(self.options.tmpdir, i)
|
||||||
|
|
||||||
|
def skip_if_no_py3_zmq(self):
|
||||||
|
"""Attempt to import the zmq package and skip the test if the import fails."""
|
||||||
|
try:
|
||||||
|
import zmq # noqa
|
||||||
|
except ImportError:
|
||||||
|
raise SkipTest("python3-zmq module not available.")
|
||||||
|
|
||||||
class SkipTest(Exception):
|
def skip_if_no_bitcoind_zmq(self):
|
||||||
"""This exception is raised to skip a test"""
|
"""Skip the running test if bitcoind has not been compiled with zmq support."""
|
||||||
def __init__(self, message):
|
if not self.is_zmq_compiled():
|
||||||
self.message = message
|
raise SkipTest("bitcoind has not been built with zmq enabled.")
|
||||||
|
|
||||||
|
def skip_if_no_wallet(self):
|
||||||
|
"""Skip the running test if wallet has not been compiled."""
|
||||||
|
if not self.is_wallet_compiled():
|
||||||
|
raise SkipTest("wallet has not been compiled.")
|
||||||
|
|
||||||
def skip_if_no_py3_zmq():
|
def skip_if_no_cli(self):
|
||||||
"""Attempt to import the zmq package and skip the test if the import fails."""
|
"""Skip the running test if bitcoin-cli has not been compiled."""
|
||||||
try:
|
if not self.is_cli_compiled():
|
||||||
import zmq # noqa
|
raise SkipTest("bitcoin-cli has not been compiled.")
|
||||||
except ImportError:
|
|
||||||
raise SkipTest("python3-zmq module not available.")
|
|
||||||
|
|
||||||
|
def is_cli_compiled(self):
|
||||||
|
"""Checks whether bitcoin-cli was compiled."""
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read_file(open(self.options.configfile))
|
||||||
|
|
||||||
def skip_if_no_bitcoind_zmq(test_instance):
|
return config["components"].getboolean("ENABLE_UTILS")
|
||||||
"""Skip the running test if bitcoind has not been compiled with zmq support."""
|
|
||||||
if not is_zmq_enabled(test_instance):
|
|
||||||
raise SkipTest("bitcoind has not been built with zmq enabled.")
|
|
||||||
|
|
||||||
|
def is_wallet_compiled(self):
|
||||||
|
"""Checks whether the wallet module was compiled."""
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read_file(open(self.options.configfile))
|
||||||
|
|
||||||
def is_zmq_enabled(test_instance):
|
return config["components"].getboolean("ENABLE_WALLET")
|
||||||
"""Checks whether zmq is enabled or not."""
|
|
||||||
config = configparser.ConfigParser()
|
|
||||||
config.read_file(open(test_instance.options.configfile))
|
|
||||||
|
|
||||||
return config["components"].getboolean("ENABLE_ZMQ")
|
def is_zmq_compiled(self):
|
||||||
|
"""Checks whether the zmq module was compiled."""
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read_file(open(self.options.configfile))
|
||||||
|
|
||||||
|
return config["components"].getboolean("ENABLE_ZMQ")
|
||||||
|
|
|
@ -236,8 +236,6 @@ def main():
|
||||||
|
|
||||||
logging.debug("Temporary test directory at %s" % tmpdir)
|
logging.debug("Temporary test directory at %s" % tmpdir)
|
||||||
|
|
||||||
enable_wallet = config["components"].getboolean("ENABLE_WALLET")
|
|
||||||
enable_utils = config["components"].getboolean("ENABLE_UTILS")
|
|
||||||
enable_bitcoind = config["components"].getboolean("ENABLE_BITCOIND")
|
enable_bitcoind = config["components"].getboolean("ENABLE_BITCOIND")
|
||||||
|
|
||||||
if config["environment"]["EXEEXT"] == ".exe" and not args.force:
|
if config["environment"]["EXEEXT"] == ".exe" and not args.force:
|
||||||
|
@ -246,9 +244,9 @@ def main():
|
||||||
print("Tests currently disabled on Windows by default. Use --force option to enable")
|
print("Tests currently disabled on Windows by default. Use --force option to enable")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
if not (enable_wallet and enable_utils and enable_bitcoind):
|
if not enable_bitcoind:
|
||||||
print("No functional tests to run. Wallet, utils, and bitcoind must all be enabled")
|
print("No functional tests to run.")
|
||||||
print("Rerun `configure` with -enable-wallet, -with-utils and -with-daemon and rerun make")
|
print("Rerun ./configure with --with-daemon and then make")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# Build list of tests
|
# Build list of tests
|
||||||
|
|
|
@ -20,6 +20,9 @@ class AbandonConflictTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.extra_args = [["-minrelaytxfee=0.00001"], []]
|
self.extra_args = [["-minrelaytxfee=0.00001"], []]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.nodes[1].generate(100)
|
self.nodes[1].generate(100)
|
||||||
sync_blocks(self.nodes)
|
sync_blocks(self.nodes)
|
||||||
|
|
|
@ -63,6 +63,7 @@ from test_framework.util import (
|
||||||
sync_mempools,
|
sync_mempools,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class AddressTypeTest(BitcoinTestFramework):
|
class AddressTypeTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 6
|
self.num_nodes = 6
|
||||||
|
@ -72,9 +73,12 @@ class AddressTypeTest(BitcoinTestFramework):
|
||||||
["-addresstype=p2sh-segwit", "-changetype=bech32"],
|
["-addresstype=p2sh-segwit", "-changetype=bech32"],
|
||||||
["-addresstype=bech32"],
|
["-addresstype=bech32"],
|
||||||
["-changetype=p2sh-segwit"],
|
["-changetype=p2sh-segwit"],
|
||||||
[]
|
[],
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.setup_nodes()
|
self.setup_nodes()
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,9 @@ class WalletBackupTest(BitcoinTestFramework):
|
||||||
# nodes 1, 2,3 are spenders, let's give them a keypool=100
|
# nodes 1, 2,3 are spenders, let's give them a keypool=100
|
||||||
self.extra_args = [["-keypool=100"], ["-keypool=100"], ["-keypool=100"], []]
|
self.extra_args = [["-keypool=100"], ["-keypool=100"], ["-keypool=100"], []]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.setup_nodes()
|
self.setup_nodes()
|
||||||
connect_nodes(self.nodes[0], 3)
|
connect_nodes(self.nodes[0], 3)
|
||||||
|
|
|
@ -23,6 +23,9 @@ class WalletTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 4
|
self.num_nodes = 4
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.add_nodes(4)
|
self.add_nodes(4)
|
||||||
self.start_node(0)
|
self.start_node(0)
|
||||||
|
|
|
@ -31,8 +31,14 @@ class BumpFeeTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.extra_args = [["-deprecatedrpc=addwitnessaddress", "-walletrbf={}".format(i), "-mintxfee=0.00002"]
|
self.extra_args = [[
|
||||||
for i in range(self.num_nodes)]
|
"-deprecatedrpc=addwitnessaddress",
|
||||||
|
"-walletrbf={}".format(i),
|
||||||
|
"-mintxfee=0.00002",
|
||||||
|
] for i in range(self.num_nodes)]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Encrypt wallet for test_locked_wallet_fails test
|
# Encrypt wallet for test_locked_wallet_fails test
|
||||||
|
|
|
@ -17,6 +17,9 @@ class DisablePrivateKeysTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.supports_cli = True
|
self.supports_cli = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
node = self.nodes[0]
|
node = self.nodes[0]
|
||||||
self.log.info("Test disableprivatekeys creation.")
|
self.log.info("Test disableprivatekeys creation.")
|
||||||
|
|
|
@ -87,6 +87,9 @@ class WalletDumpTest(BitcoinTestFramework):
|
||||||
self.extra_args = [["-keypool=90", "-addresstype=legacy", "-deprecatedrpc=addwitnessaddress"]]
|
self.extra_args = [["-keypool=90", "-addresstype=legacy", "-deprecatedrpc=addwitnessaddress"]]
|
||||||
self.rpc_timeout = 120
|
self.rpc_timeout = 120
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.add_nodes(self.num_nodes, extra_args=self.extra_args)
|
self.add_nodes(self.num_nodes, extra_args=self.extra_args)
|
||||||
self.start_nodes()
|
self.start_nodes()
|
||||||
|
|
|
@ -19,6 +19,9 @@ class WalletEncryptionTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
passphrase = "WalletPassphrase"
|
passphrase = "WalletPassphrase"
|
||||||
passphrase2 = "SecondWalletPassphrase"
|
passphrase2 = "SecondWalletPassphrase"
|
||||||
|
|
|
@ -11,6 +11,9 @@ class WalletRBFTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.nodes[0].generate(101)
|
self.nodes[0].generate(101)
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,10 @@ class WalletGroupTest(BitcoinTestFramework):
|
||||||
self.extra_args = [[], [], ['-avoidpartialspends']]
|
self.extra_args = [[], [], ['-avoidpartialspends']]
|
||||||
self.rpc_timewait = 120
|
self.rpc_timewait = 120
|
||||||
|
|
||||||
def run_test (self):
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
|
def run_test(self):
|
||||||
# Mine some coins
|
# Mine some coins
|
||||||
self.nodes[0].generate(110)
|
self.nodes[0].generate(110)
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,9 @@ class WalletHDTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.extra_args = [[], ['-keypool=0']]
|
self.extra_args = [[], ['-keypool=0']]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Make sure can't switch off usehd after wallet creation
|
# Make sure can't switch off usehd after wallet creation
|
||||||
self.stop_node(1)
|
self.stop_node(1)
|
||||||
|
|
|
@ -109,6 +109,9 @@ class ImportRescanTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 2 + len(IMPORT_NODES)
|
self.num_nodes = 2 + len(IMPORT_NODES)
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
extra_args = [["-addresstype=legacy"] for _ in range(self.num_nodes)]
|
extra_args = [["-addresstype=legacy"] for _ in range(self.num_nodes)]
|
||||||
for i, import_node in enumerate(IMPORT_NODES, 2):
|
for i, import_node in enumerate(IMPORT_NODES, 2):
|
||||||
|
|
|
@ -12,6 +12,9 @@ class ImportMultiTest (BitcoinTestFramework):
|
||||||
self.extra_args = [["-addresstype=legacy"], ["-addresstype=legacy"]]
|
self.extra_args = [["-addresstype=legacy"], ["-addresstype=legacy"]]
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.setup_nodes()
|
self.setup_nodes()
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,9 @@ class ImportPrunedFundsTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.log.info("Mining blocks...")
|
self.log.info("Mining blocks...")
|
||||||
self.nodes[0].generate(101)
|
self.nodes[0].generate(101)
|
||||||
|
|
|
@ -13,6 +13,9 @@ class KeyPoolTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
nodes = self.nodes
|
nodes = self.nodes
|
||||||
addr_before_encrypting = nodes[0].getnewaddress()
|
addr_before_encrypting = nodes[0].getnewaddress()
|
||||||
|
|
|
@ -27,6 +27,9 @@ class KeypoolRestoreTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.extra_args = [[], ['-keypool=100']]
|
self.extra_args = [[], ['-keypool=100']]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
wallet_path = os.path.join(self.nodes[1].datadir, "regtest", "wallets", "wallet.dat")
|
wallet_path = os.path.join(self.nodes[1].datadir, "regtest", "wallets", "wallet.dat")
|
||||||
wallet_backup_path = os.path.join(self.nodes[1].datadir, "wallet.bak")
|
wallet_backup_path = os.path.join(self.nodes[1].datadir, "wallet.bak")
|
||||||
|
|
|
@ -19,6 +19,9 @@ class WalletLabelsTest(BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Check that there's no UTXO on the node
|
# Check that there's no UTXO on the node
|
||||||
node = self.nodes[0]
|
node = self.nodes[0]
|
||||||
|
|
|
@ -23,6 +23,9 @@ class ReceivedByTest(BitcoinTestFramework):
|
||||||
super().import_deterministic_coinbase_privkeys()
|
super().import_deterministic_coinbase_privkeys()
|
||||||
self.num_cb_reward_addresses = len(self.nodes[1].listreceivedbyaddress(minconf=0, include_empty=True, include_watchonly=True))
|
self.num_cb_reward_addresses = len(self.nodes[1].listreceivedbyaddress(minconf=0, include_empty=True, include_watchonly=True))
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Generate block to get out of IBD
|
# Generate block to get out of IBD
|
||||||
self.nodes[0].generate(1)
|
self.nodes[0].generate(1)
|
||||||
|
|
|
@ -12,6 +12,9 @@ class ListSinceBlockTest (BitcoinTestFramework):
|
||||||
self.num_nodes = 4
|
self.num_nodes = 4
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.nodes[2].generate(101)
|
self.nodes[2].generate(101)
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
|
|
|
@ -27,6 +27,9 @@ class ListTransactionsTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.enable_mocktime()
|
self.enable_mocktime()
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Simple send, 0 to 1:
|
# Simple send, 0 to 1:
|
||||||
txid = self.nodes[0].sendtoaddress(self.nodes[1].getnewaddress(), 0.1)
|
txid = self.nodes[0].sendtoaddress(self.nodes[1].getnewaddress(), 0.1)
|
||||||
|
|
|
@ -23,6 +23,9 @@ class MultiWalletTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.supports_cli = True
|
self.supports_cli = True
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
node = self.nodes[0]
|
node = self.nodes[0]
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,9 @@ class ResendWalletTransactionsTest(BitcoinTestFramework):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.extra_args = [['--walletbroadcast=false']]
|
self.extra_args = [['--walletbroadcast=false']]
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Should raise RPC_WALLET_ERROR (-4) if walletbroadcast is disabled.
|
# Should raise RPC_WALLET_ERROR (-4) if walletbroadcast is disabled.
|
||||||
assert_raises_rpc_error(-4, "Error: Wallet transaction broadcasting is disabled with -walletbroadcast", self.nodes[0].resendwallettransactions)
|
assert_raises_rpc_error(-4, "Error: Wallet transaction broadcasting is disabled with -walletbroadcast", self.nodes[0].resendwallettransactions)
|
||||||
|
|
|
@ -16,6 +16,9 @@ class TxnMallTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 4
|
self.num_nodes = 4
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def add_options(self, parser):
|
def add_options(self, parser):
|
||||||
parser.add_argument("--mineblock", dest="mine_block", default=False, action="store_true",
|
parser.add_argument("--mineblock", dest="mine_block", default=False, action="store_true",
|
||||||
help="Test double-spend of 1-confirmed transaction")
|
help="Test double-spend of 1-confirmed transaction")
|
||||||
|
|
|
@ -18,6 +18,9 @@ class TxnMallTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 4
|
self.num_nodes = 4
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def add_options(self, parser):
|
def add_options(self, parser):
|
||||||
parser.add_argument("--mineblock", dest="mine_block", default=False, action="store_true",
|
parser.add_argument("--mineblock", dest="mine_block", default=False, action="store_true",
|
||||||
help="Test double-spend of 1-confirmed transaction")
|
help="Test double-spend of 1-confirmed transaction")
|
||||||
|
|
|
@ -26,6 +26,9 @@ class ZapWalletTXesTest (BitcoinTestFramework):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.log.info("Mining blocks...")
|
self.log.info("Mining blocks...")
|
||||||
self.nodes[0].generate(1)
|
self.nodes[0].generate(1)
|
||||||
|
|
Loading…
Reference in a new issue