[qa] Remove hardcoded "4 nodes" from test_framework
Zcash: Applied changes to our RPC tests.
This commit is contained in:
parent
5a12bc9d83
commit
818d2de39b
|
@ -18,7 +18,6 @@ from test_framework.test_framework import BitcoinTestFramework
|
||||||
|
|
||||||
from test_framework.util import (
|
from test_framework.util import (
|
||||||
assert_equal,
|
assert_equal,
|
||||||
initialize_chain_clean,
|
|
||||||
start_nodes,
|
start_nodes,
|
||||||
stop_nodes,
|
stop_nodes,
|
||||||
connect_nodes,
|
connect_nodes,
|
||||||
|
@ -44,16 +43,17 @@ from binascii import hexlify, unhexlify
|
||||||
|
|
||||||
class AddressIndexTest(BitcoinTestFramework):
|
class AddressIndexTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
# -insightexplorer causes addressindex to be enabled (fAddressIndex = true)
|
# -insightexplorer causes addressindex to be enabled (fAddressIndex = true)
|
||||||
args_insight = ('-debug', '-txindex', '-experimentalfeatures', '-insightexplorer')
|
args_insight = ('-debug', '-txindex', '-experimentalfeatures', '-insightexplorer')
|
||||||
# -lightwallet also causes addressindex to be enabled
|
# -lightwallet also causes addressindex to be enabled
|
||||||
args_lightwallet = ('-debug', '-txindex', '-experimentalfeatures', '-lightwalletd')
|
args_lightwallet = ('-debug', '-txindex', '-experimentalfeatures', '-lightwalletd')
|
||||||
self.nodes = start_nodes(4, self.options.tmpdir, [args_insight] * 3 + [args_lightwallet])
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, [args_insight] * 3 + [args_lightwallet])
|
||||||
|
|
||||||
connect_nodes(self.nodes[0], 1)
|
connect_nodes(self.nodes[0], 1)
|
||||||
connect_nodes(self.nodes[0], 2)
|
connect_nodes(self.nodes[0], 2)
|
||||||
|
@ -237,7 +237,7 @@ class AddressIndexTest(BitcoinTestFramework):
|
||||||
|
|
||||||
# Test DisconnectBlock() by invalidating the most recent mined block
|
# Test DisconnectBlock() by invalidating the most recent mined block
|
||||||
tip = self.nodes[1].getchaintips()[0]
|
tip = self.nodes[1].getchaintips()[0]
|
||||||
for i in range(3):
|
for i in range(self.num_nodes):
|
||||||
node = self.nodes[i]
|
node = self.nodes[i]
|
||||||
# the value 4 UTXO is no longer in our balance
|
# the value 4 UTXO is no longer in our balance
|
||||||
check_balance(i, addr1, (expected - 4) * COIN, expected * COIN)
|
check_balance(i, addr1, (expected - 4) * COIN, expected * COIN)
|
||||||
|
|
|
@ -25,10 +25,11 @@ TODO: factor out common code from {bipdersig-p2p,bip65-cltv-p2p}.py.
|
||||||
class BIP65Test(ComparisonTestFramework):
|
class BIP65Test(ComparisonTestFramework):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.nodes = start_nodes(1, self.options.tmpdir,
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
||||||
extra_args=[['-debug', '-whitelist=127.0.0.1']],
|
extra_args=[['-debug', '-whitelist=127.0.0.1']],
|
||||||
binary=[self.options.testbinary])
|
binary=[self.options.testbinary])
|
||||||
self.is_network_split = False
|
self.is_network_split = False
|
||||||
|
|
|
@ -25,10 +25,11 @@ TODO: factor out common code from {bipdersig-p2p,bip65-cltv-p2p}.py.
|
||||||
class BIP66Test(ComparisonTestFramework):
|
class BIP66Test(ComparisonTestFramework):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.nodes = start_nodes(1, self.options.tmpdir,
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
||||||
extra_args=[['-debug', '-whitelist=127.0.0.1']],
|
extra_args=[['-debug', '-whitelist=127.0.0.1']],
|
||||||
binary=[self.options.testbinary])
|
binary=[self.options.testbinary])
|
||||||
self.is_network_split = False
|
self.is_network_split = False
|
||||||
|
|
|
@ -12,7 +12,6 @@ import decimal
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import (
|
from test_framework.util import (
|
||||||
initialize_chain,
|
|
||||||
assert_equal,
|
assert_equal,
|
||||||
start_nodes,
|
start_nodes,
|
||||||
connect_nodes_bi,
|
connect_nodes_bi,
|
||||||
|
@ -26,12 +25,13 @@ class BlockchainTest(BitcoinTestFramework):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory " + self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain(self.options.tmpdir)
|
self.setup_clean_chain = False
|
||||||
|
self.num_nodes = 2
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(2, self.options.tmpdir)
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||||
connect_nodes_bi(self.nodes, 0, 1)
|
connect_nodes_bi(self.nodes, 0, 1)
|
||||||
self.is_network_split = False
|
self.is_network_split = False
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
|
|
|
@ -12,7 +12,6 @@ from test_framework.util import (
|
||||||
assert_equal,
|
assert_equal,
|
||||||
bitcoind_processes,
|
bitcoind_processes,
|
||||||
connect_nodes,
|
connect_nodes,
|
||||||
initialize_chain_clean,
|
|
||||||
start_node,
|
start_node,
|
||||||
BLOSSOM_BRANCH_ID,
|
BLOSSOM_BRANCH_ID,
|
||||||
HEARTWOOD_BRANCH_ID,
|
HEARTWOOD_BRANCH_ID,
|
||||||
|
@ -20,9 +19,10 @@ from test_framework.util import (
|
||||||
)
|
)
|
||||||
|
|
||||||
class CoinbaseFundingStreamsTest (BitcoinTestFramework):
|
class CoinbaseFundingStreamsTest (BitcoinTestFramework):
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.num_nodes = 2
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def start_node_with(self, index, extra_args=[]):
|
def start_node_with(self, index, extra_args=[]):
|
||||||
args = [
|
args = [
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
# file COPYING or https://www.opensource.org/licenses/mit-license.php .
|
# file COPYING or https://www.opensource.org/licenses/mit-license.php .
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, initialize_chain_clean, \
|
from test_framework.util import assert_equal, \
|
||||||
start_nodes, hex_str_to_bytes, bytes_to_hex_str
|
start_nodes, hex_str_to_bytes, bytes_to_hex_str
|
||||||
from test_framework.mininode import CTransaction
|
from test_framework.mininode import CTransaction
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
@ -13,12 +13,13 @@ from io import BytesIO
|
||||||
class DecodeScriptTest(BitcoinTestFramework):
|
class DecodeScriptTest(BitcoinTestFramework):
|
||||||
"""Tests decoding scripts via RPC command "decodescript"."""
|
"""Tests decoding scripts via RPC command "decodescript"."""
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print('Initializing test directory ' + self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 1)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 1
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(1, self.options.tmpdir)
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||||
self.is_network_split = False
|
self.is_network_split = False
|
||||||
|
|
||||||
def decodescript_script_sig(self):
|
def decodescript_script_sig(self):
|
||||||
|
|
|
@ -8,17 +8,18 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import initialize_chain_clean, start_nodes
|
from test_framework.util import start_nodes
|
||||||
|
|
||||||
|
|
||||||
class DisableWalletTest (BitcoinTestFramework):
|
class DisableWalletTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 1)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 1
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(1, self.options.tmpdir, [['-disablewallet']])
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, [['-disablewallet']])
|
||||||
self.is_network_split = False
|
self.is_network_split = False
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@ from test_framework.util import (
|
||||||
assert_equal,
|
assert_equal,
|
||||||
bytes_to_hex_str,
|
bytes_to_hex_str,
|
||||||
hex_str_to_bytes,
|
hex_str_to_bytes,
|
||||||
initialize_chain_clean,
|
|
||||||
start_nodes,
|
start_nodes,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -24,16 +23,17 @@ CHAIN_HISTORY_ROOT_VERSION = 2010200
|
||||||
# Verify block header field 'hashLightClientRoot' is set correctly for Heartwood blocks.
|
# Verify block header field 'hashLightClientRoot' is set correctly for Heartwood blocks.
|
||||||
class Zip221Test(BitcoinTestFramework):
|
class Zip221Test(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_nodes(self):
|
def setup_nodes(self):
|
||||||
return start_nodes(4, self.options.tmpdir, extra_args=[[
|
return start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[[
|
||||||
'-nuparams=2bb40e60:1', # Blossom
|
'-nuparams=2bb40e60:1', # Blossom
|
||||||
'-nuparams=f5b9230b:10', # Heartwood
|
'-nuparams=f5b9230b:10', # Heartwood
|
||||||
'-nurejectoldversions=false',
|
'-nurejectoldversions=false',
|
||||||
]] * 4)
|
]] * self.num_nodes)
|
||||||
|
|
||||||
def node_for_block(self, height):
|
def node_for_block(self, height):
|
||||||
block_header = CBlockHeader()
|
block_header = CBlockHeader()
|
||||||
|
|
|
@ -9,7 +9,6 @@ from test_framework.util import (
|
||||||
assert_equal,
|
assert_equal,
|
||||||
connect_nodes_bi,
|
connect_nodes_bi,
|
||||||
get_coinbase_address,
|
get_coinbase_address,
|
||||||
initialize_chain_clean,
|
|
||||||
start_nodes,
|
start_nodes,
|
||||||
wait_and_assert_operationid_status,
|
wait_and_assert_operationid_status,
|
||||||
)
|
)
|
||||||
|
@ -24,14 +23,15 @@ NULL_FIELD = "0000000000000000000000000000000000000000000000000000000000000000"
|
||||||
# is updated when Sapling transactions with outputs (commitments) are mined into a block.
|
# is updated when Sapling transactions with outputs (commitments) are mined into a block.
|
||||||
class FinalSaplingRootTest(BitcoinTestFramework):
|
class FinalSaplingRootTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(4, self.options.tmpdir, extra_args=[[
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[[
|
||||||
'-txindex' # Avoid JSONRPC error: No information available about transaction
|
'-txindex' # Avoid JSONRPC error: No information available about transaction
|
||||||
]] * 4 )
|
]] * self.num_nodes)
|
||||||
connect_nodes_bi(self.nodes,0,1)
|
connect_nodes_bi(self.nodes,0,1)
|
||||||
connect_nodes_bi(self.nodes,1,2)
|
connect_nodes_bi(self.nodes,1,2)
|
||||||
connect_nodes_bi(self.nodes,0,2)
|
connect_nodes_bi(self.nodes,0,2)
|
||||||
|
|
|
@ -14,6 +14,11 @@ import os
|
||||||
|
|
||||||
class ForkNotifyTest(BitcoinTestFramework):
|
class ForkNotifyTest(BitcoinTestFramework):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 2
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
alert_filename = None # Set by setup_network
|
alert_filename = None # Set by setup_network
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
|
|
|
@ -7,16 +7,16 @@ from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import (
|
from test_framework.util import (
|
||||||
assert_raises,
|
assert_raises,
|
||||||
connect_nodes,
|
connect_nodes,
|
||||||
initialize_chain_clean,
|
|
||||||
start_node,
|
start_node,
|
||||||
check_node_log,
|
check_node_log,
|
||||||
)
|
)
|
||||||
|
|
||||||
class FrameworkTest (BitcoinTestFramework):
|
class FrameworkTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.num_nodes = 2
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def start_node_with(self, index, extra_args=[]):
|
def start_node_with(self, index, extra_args=[]):
|
||||||
args = []
|
args = []
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, assert_greater_than, \
|
from test_framework.util import assert_equal, assert_greater_than, \
|
||||||
initialize_chain_clean, start_nodes, connect_nodes_bi, stop_nodes, \
|
start_nodes, connect_nodes_bi, stop_nodes, \
|
||||||
wait_bitcoinds
|
wait_bitcoinds
|
||||||
|
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
@ -14,12 +14,13 @@ from decimal import Decimal
|
||||||
# Create one-input, one-output, no-fee transaction:
|
# Create one-input, one-output, no-fee transaction:
|
||||||
class RawTransactionsTest(BitcoinTestFramework):
|
class RawTransactionsTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print(("Initializing test directory "+self.options.tmpdir))
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 4
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(4, self.options.tmpdir,
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
||||||
extra_args=[['-experimentalfeatures', '-developerencryptwallet']] * 4)
|
extra_args=[['-experimentalfeatures', '-developerencryptwallet']] * 4)
|
||||||
|
|
||||||
connect_nodes_bi(self.nodes,0,1)
|
connect_nodes_bi(self.nodes,0,1)
|
||||||
|
@ -450,7 +451,7 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||||
stop_nodes(self.nodes)
|
stop_nodes(self.nodes)
|
||||||
wait_bitcoinds()
|
wait_bitcoinds()
|
||||||
|
|
||||||
self.nodes = start_nodes(4, self.options.tmpdir)
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||||
|
|
||||||
connect_nodes_bi(self.nodes,0,1)
|
connect_nodes_bi(self.nodes,0,1)
|
||||||
connect_nodes_bi(self.nodes,1,2)
|
connect_nodes_bi(self.nodes,1,2)
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, connect_nodes_bi, \
|
from test_framework.util import assert_equal, connect_nodes_bi, \
|
||||||
initialize_chain_clean, start_nodes
|
start_nodes
|
||||||
|
|
||||||
|
|
||||||
class GetBlockTemplateTest(BitcoinTestFramework):
|
class GetBlockTemplateTest(BitcoinTestFramework):
|
||||||
|
@ -13,12 +13,13 @@ class GetBlockTemplateTest(BitcoinTestFramework):
|
||||||
Test getblocktemplate.
|
Test getblocktemplate.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.num_nodes = 2
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(2, self.options.tmpdir)
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||||
connect_nodes_bi(self.nodes,0,1)
|
connect_nodes_bi(self.nodes,0,1)
|
||||||
self.is_network_split=False
|
self.is_network_split=False
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
|
|
|
@ -49,6 +49,11 @@ class GetBlockTemplateLPTest(BitcoinTestFramework):
|
||||||
Test longpolling with getblocktemplate.
|
Test longpolling with getblocktemplate.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
print("Warning: this test will take about 70 seconds in the best case. Be patient.")
|
print("Warning: this test will take about 70 seconds in the best case. Be patient.")
|
||||||
self.nodes[0].generate(10)
|
self.nodes[0].generate(10)
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
|
from test_framework.util import connect_nodes_bi
|
||||||
|
|
||||||
from binascii import a2b_hex, b2a_hex
|
from binascii import a2b_hex, b2a_hex
|
||||||
from hashlib import sha256
|
from hashlib import sha256
|
||||||
|
@ -94,6 +95,15 @@ class GetBlockTemplateProposalTest(BitcoinTestFramework):
|
||||||
Test block proposals with getblocktemplate.
|
Test block proposals with getblocktemplate.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 2
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
|
def setup_network(self):
|
||||||
|
self.nodes = self.setup_nodes()
|
||||||
|
connect_nodes_bi(self.nodes, 0, 1)
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
node = self.nodes[0]
|
node = self.nodes[0]
|
||||||
node.generate(1) # Mine a block to leave initial block download
|
node.generate(1) # Mine a block to leave initial block download
|
||||||
|
|
|
@ -12,9 +12,12 @@ from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal
|
from test_framework.util import assert_equal
|
||||||
|
|
||||||
class GetChainTipsTest (BitcoinTestFramework):
|
class GetChainTipsTest (BitcoinTestFramework):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
def run_test (self):
|
def run_test (self):
|
||||||
BitcoinTestFramework.run_test (self)
|
|
||||||
|
|
||||||
tips = self.nodes[0].getchaintips ()
|
tips = self.nodes[0].getchaintips ()
|
||||||
assert_equal (len (tips), 1)
|
assert_equal (len (tips), 1)
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
|
|
||||||
from test_framework.util import assert_equal
|
from test_framework.util import assert_equal
|
||||||
from test_framework.util import initialize_chain_clean
|
|
||||||
from test_framework.util import start_nodes, stop_nodes, connect_nodes
|
from test_framework.util import start_nodes, stop_nodes, connect_nodes
|
||||||
from test_framework.util import wait_bitcoinds
|
from test_framework.util import wait_bitcoinds
|
||||||
|
|
||||||
|
@ -20,15 +19,16 @@ from test_framework.mininode import COIN
|
||||||
|
|
||||||
class GetrawtransactionTest(BitcoinTestFramework):
|
class GetrawtransactionTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.num_nodes = 3
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
# -insightexplorer causes spentindex to be enabled (fSpentIndex = true)
|
# -insightexplorer causes spentindex to be enabled (fSpentIndex = true)
|
||||||
|
|
||||||
self.nodes = start_nodes(3, self.options.tmpdir,
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
||||||
[['-debug', '-txindex', '-experimentalfeatures', '-insightexplorer']]*3)
|
[['-debug', '-txindex', '-experimentalfeatures', '-insightexplorer']] * self.num_nodes)
|
||||||
connect_nodes(self.nodes[0], 1)
|
connect_nodes(self.nodes[0], 1)
|
||||||
connect_nodes(self.nodes[0], 2)
|
connect_nodes(self.nodes[0], 2)
|
||||||
|
|
||||||
|
|
|
@ -8,14 +8,19 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, start_nodes, str_to_b64str
|
from test_framework.util import assert_equal, str_to_b64str
|
||||||
|
|
||||||
import http.client
|
import http.client
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
class HTTPBasicsTest (BitcoinTestFramework):
|
class HTTPBasicsTest (BitcoinTestFramework):
|
||||||
def setup_nodes(self):
|
def __init__(self):
|
||||||
return start_nodes(4, self.options.tmpdir)
|
super().__init__()
|
||||||
|
self.num_nodes = 3
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
|
def setup_network(self):
|
||||||
|
self.nodes = self.setup_nodes()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
|
|
||||||
|
|
|
@ -8,15 +8,16 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import initialize_chain_clean, start_node, \
|
from test_framework.util import start_node, \
|
||||||
connect_nodes_bi, sync_blocks
|
connect_nodes_bi, sync_blocks
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
class InvalidateTest(BitcoinTestFramework):
|
class InvalidateTest(BitcoinTestFramework):
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 3)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 3
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.nodes = []
|
self.nodes = []
|
||||||
|
|
|
@ -27,6 +27,7 @@ class InvalidBlockRequestTest(ComparisonTestFramework):
|
||||||
''' Can either run this test as 1 node with expected answers, or two and compare them.
|
''' Can either run this test as 1 node with expected answers, or two and compare them.
|
||||||
Change the "outcome" variable from each TestInstance object to only do the comparison. '''
|
Change the "outcome" variable from each TestInstance object to only do the comparison. '''
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, assert_greater_than, start_nodes, initialize_chain_clean, connect_nodes_bi
|
from test_framework.util import assert_equal, assert_greater_than, start_nodes, connect_nodes_bi
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -15,12 +15,13 @@ logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.INFO)
|
||||||
|
|
||||||
class KeyImportExportTest (BitcoinTestFramework):
|
class KeyImportExportTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(4, self.options.tmpdir )
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir )
|
||||||
connect_nodes_bi(self.nodes,0,1)
|
connect_nodes_bi(self.nodes,0,1)
|
||||||
connect_nodes_bi(self.nodes,1,2)
|
connect_nodes_bi(self.nodes,1,2)
|
||||||
connect_nodes_bi(self.nodes,0,2)
|
connect_nodes_bi(self.nodes,0,2)
|
||||||
|
|
|
@ -5,11 +5,9 @@
|
||||||
|
|
||||||
# Exercise the wallet keypool, and interaction with wallet encryption/locking
|
# Exercise the wallet keypool, and interaction with wallet encryption/locking
|
||||||
|
|
||||||
# Add python-bitcoinrpc to module search path:
|
|
||||||
|
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, initialize_chain, \
|
from test_framework.util import assert_equal, \
|
||||||
start_nodes, start_node, bitcoind_processes
|
start_nodes, start_node, bitcoind_processes
|
||||||
|
|
||||||
def check_array_result(object_array, to_match, expected):
|
def check_array_result(object_array, to_match, expected):
|
||||||
|
@ -86,12 +84,13 @@ class KeyPoolTest(BitcoinTestFramework):
|
||||||
except JSONRPCException as e:
|
except JSONRPCException as e:
|
||||||
assert_equal(e.error['code'], -12)
|
assert_equal(e.error['code'], -12)
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain(self.options.tmpdir)
|
self.setup_clean_chain = False
|
||||||
|
self.num_nodes = 1
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.nodes = start_nodes(1, self.options.tmpdir, extra_args=[['-experimentalfeatures', '-developerencryptwallet']])
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[['-experimentalfeatures', '-developerencryptwallet']])
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
KeyPoolTest().main()
|
KeyPoolTest().main()
|
||||||
|
|
|
@ -31,6 +31,10 @@ def check_array_result(object_array, to_match, expected):
|
||||||
raise AssertionError("No objects matched %s"%(str(to_match)))
|
raise AssertionError("No objects matched %s"%(str(to_match)))
|
||||||
|
|
||||||
class ListTransactionsTest(BitcoinTestFramework):
|
class ListTransactionsTest(BitcoinTestFramework):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Simple send, 0 to 1:
|
# Simple send, 0 to 1:
|
||||||
|
|
|
@ -6,8 +6,7 @@
|
||||||
from test_framework.mininode import NodeConn, NodeConnCB, NetworkThread, \
|
from test_framework.mininode import NodeConn, NodeConnCB, NetworkThread, \
|
||||||
EarlyDisconnectError, CInv, msg_inv, mininode_lock
|
EarlyDisconnectError, CInv, msg_inv, mininode_lock
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import initialize_chain_clean, start_nodes, \
|
from test_framework.util import start_nodes, p2p_port
|
||||||
p2p_port
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
@ -86,12 +85,13 @@ class MaxBlocksInFlightTest(BitcoinTestFramework):
|
||||||
default=os.getenv("BITCOIND", "bitcoind"),
|
default=os.getenv("BITCOIND", "bitcoind"),
|
||||||
help="Binary to test max block requests behavior")
|
help="Binary to test max block requests behavior")
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 1)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 1
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.nodes = start_nodes(1, self.options.tmpdir,
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
||||||
extra_args=[['-debug', '-whitelist=127.0.0.1']],
|
extra_args=[['-debug', '-whitelist=127.0.0.1']],
|
||||||
binary=[self.options.testbinary])
|
binary=[self.options.testbinary])
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ from test_framework.util import (
|
||||||
assert_equal,
|
assert_equal,
|
||||||
get_coinbase_address,
|
get_coinbase_address,
|
||||||
fail,
|
fail,
|
||||||
initialize_chain_clean,
|
|
||||||
start_nodes,
|
start_nodes,
|
||||||
wait_and_assert_operationid_status,
|
wait_and_assert_operationid_status,
|
||||||
)
|
)
|
||||||
|
@ -18,10 +17,6 @@ from time import sleep
|
||||||
|
|
||||||
# Test wallet behaviour with Sapling addresses
|
# Test wallet behaviour with Sapling addresses
|
||||||
class MempoolLimit(BitcoinTestFramework):
|
class MempoolLimit(BitcoinTestFramework):
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing test directory " + self.options.tmpdir)
|
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
|
||||||
|
|
||||||
def setup_nodes(self):
|
def setup_nodes(self):
|
||||||
extra_args = [
|
extra_args = [
|
||||||
["-debug=mempool", '-mempooltxcostlimit=8000'], # 2 transactions at min cost
|
["-debug=mempool", '-mempooltxcostlimit=8000'], # 2 transactions at min cost
|
||||||
|
@ -30,17 +25,22 @@ class MempoolLimit(BitcoinTestFramework):
|
||||||
# Let node 3 hold one more transaction
|
# Let node 3 hold one more transaction
|
||||||
["-debug=mempool", '-mempooltxcostlimit=12000'], # 3 transactions at min cost
|
["-debug=mempool", '-mempooltxcostlimit=12000'], # 3 transactions at min cost
|
||||||
]
|
]
|
||||||
return start_nodes(4, self.options.tmpdir, extra_args)
|
return start_nodes(self.num_nodes, self.options.tmpdir, extra_args)
|
||||||
|
|
||||||
def check_mempool_sizes(self, expected_size, check_node3=True):
|
def check_mempool_sizes(self, expected_size, check_node3=True):
|
||||||
for i in range(4 if check_node3 else 3):
|
for i in range(self.num_nodes if check_node3 else self.num_nodes - 1):
|
||||||
mempool = self.nodes[i].getrawmempool()
|
mempool = self.nodes[i].getrawmempool()
|
||||||
if len(mempool) != expected_size:
|
if len(mempool) != expected_size:
|
||||||
# print all nodes' mempools before failing
|
# print all nodes' mempools before failing
|
||||||
for i in range(4):
|
for i in range(self.num_nodes):
|
||||||
print("Mempool for node {}: {}".format(i, mempool))
|
print("Mempool for node {}: {}".format(i, mempool))
|
||||||
fail("Fail: Mempool for node {}: size={}, expected={}".format(i, len(mempool), expected_size))
|
fail("Fail: Mempool for node {}: size={}, expected={}".format(i, len(mempool), expected_size))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 4
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
print("Mining blocks...")
|
print("Mining blocks...")
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import (
|
from test_framework.util import (
|
||||||
assert_equal, assert_true, initialize_chain_clean,
|
assert_equal, assert_true,
|
||||||
start_node, connect_nodes, wait_and_assert_operationid_status,
|
start_node, connect_nodes, wait_and_assert_operationid_status,
|
||||||
get_coinbase_address
|
get_coinbase_address
|
||||||
)
|
)
|
||||||
|
@ -17,6 +17,11 @@ class MempoolUpgradeActivationTest(BitcoinTestFramework):
|
||||||
|
|
||||||
alert_filename = None # Set by setup_network
|
alert_filename = None # Set by setup_network
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 2
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
args = ["-checkmempool", "-debug=mempool", "-blockmaxsize=4000",
|
args = ["-checkmempool", "-debug=mempool", "-blockmaxsize=4000",
|
||||||
"-nuparams=2bb40e60:200", # Blossom
|
"-nuparams=2bb40e60:200", # Blossom
|
||||||
|
@ -28,10 +33,6 @@ class MempoolUpgradeActivationTest(BitcoinTestFramework):
|
||||||
self.is_network_split = False
|
self.is_network_split = False
|
||||||
self.sync_all
|
self.sync_all
|
||||||
|
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
|
||||||
initialize_chain_clean(self.options.tmpdir, 2)
|
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.nodes[1].generate(100)
|
self.nodes[1].generate(100)
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
|
|
|
@ -15,6 +15,10 @@ from test_framework.util import assert_equal, assert_raises, start_node, connect
|
||||||
|
|
||||||
# Create one-input, one-output, no-fee transaction:
|
# Create one-input, one-output, no-fee transaction:
|
||||||
class MempoolCoinbaseTest(BitcoinTestFramework):
|
class MempoolCoinbaseTest(BitcoinTestFramework):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 2
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
alert_filename = None # Set by setup_network
|
alert_filename = None # Set by setup_network
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,11 @@ from test_framework.util import assert_equal, start_node
|
||||||
# Create one-input, one-output, no-fee transaction:
|
# Create one-input, one-output, no-fee transaction:
|
||||||
class MempoolCoinbaseTest(BitcoinTestFramework):
|
class MempoolCoinbaseTest(BitcoinTestFramework):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 1
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
# Just need one node for this test
|
# Just need one node for this test
|
||||||
args = ["-checkmempool", "-debug=mempool"]
|
args = ["-checkmempool", "-debug=mempool"]
|
||||||
|
|
|
@ -22,6 +22,11 @@ from test_framework.util import assert_equal, assert_greater_than, assert_raises
|
||||||
# Create one-input, one-output, no-fee transaction:
|
# Create one-input, one-output, no-fee transaction:
|
||||||
class MempoolSpendCoinbaseTest(BitcoinTestFramework):
|
class MempoolSpendCoinbaseTest(BitcoinTestFramework):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 1
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
# Just need one node for this test
|
# Just need one node for this test
|
||||||
args = ["-checkmempool", "-debug=mempool"]
|
args = ["-checkmempool", "-debug=mempool"]
|
||||||
|
|
|
@ -21,11 +21,11 @@ TX_EXPIRY_DELTA = 10
|
||||||
class MempoolTxExpiryTest(BitcoinTestFramework):
|
class MempoolTxExpiryTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_nodes(self):
|
def setup_nodes(self):
|
||||||
return start_nodes(4, self.options.tmpdir,
|
return start_nodes(self.num_nodes, self.options.tmpdir,
|
||||||
[[
|
[[
|
||||||
"-txexpirydelta=%d" % TX_EXPIRY_DELTA,
|
"-txexpirydelta=%d" % TX_EXPIRY_DELTA,
|
||||||
"-debug=mempool"
|
"-debug=mempool"
|
||||||
]] * 4)
|
]] * self.num_nodes)
|
||||||
|
|
||||||
# Test before, at, and after expiry block
|
# Test before, at, and after expiry block
|
||||||
# chain is at block height 199 when run_test executes
|
# chain is at block height 199 when run_test executes
|
||||||
|
|
|
@ -11,14 +11,15 @@ import string
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, assert_raises, \
|
from test_framework.util import assert_equal, assert_raises, \
|
||||||
initialize_chain_clean, start_node, connect_nodes
|
start_node, connect_nodes
|
||||||
|
|
||||||
|
|
||||||
class MerkleBlockTest(BitcoinTestFramework):
|
class MerkleBlockTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 4
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.nodes = []
|
self.nodes = []
|
||||||
|
|
|
@ -14,7 +14,6 @@ from test_framework.util import (
|
||||||
assert_raises,
|
assert_raises,
|
||||||
bitcoind_processes,
|
bitcoind_processes,
|
||||||
connect_nodes,
|
connect_nodes,
|
||||||
initialize_chain_clean,
|
|
||||||
start_node,
|
start_node,
|
||||||
wait_and_assert_operationid_status,
|
wait_and_assert_operationid_status,
|
||||||
check_node_log,
|
check_node_log,
|
||||||
|
@ -22,9 +21,10 @@ from test_framework.util import (
|
||||||
|
|
||||||
class ShieldCoinbaseTest (BitcoinTestFramework):
|
class ShieldCoinbaseTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def start_node_with(self, index, extra_args=[]):
|
def start_node_with(self, index, extra_args=[]):
|
||||||
args = [
|
args = [
|
||||||
|
|
|
@ -8,24 +8,21 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import (
|
from test_framework.util import str_to_b64str, assert_equal
|
||||||
assert_equal,
|
|
||||||
initialize_chain,
|
|
||||||
start_nodes,
|
|
||||||
str_to_b64str,
|
|
||||||
)
|
|
||||||
import os
|
|
||||||
|
|
||||||
|
import os
|
||||||
import http.client
|
import http.client
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
class HTTPBasicsTest (BitcoinTestFramework):
|
class HTTPBasicsTest (BitcoinTestFramework):
|
||||||
def setup_nodes(self):
|
|
||||||
return start_nodes(4, self.options.tmpdir)
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
self.num_nodes = 1
|
||||||
|
|
||||||
def setup_chain(self):
|
def setup_chain(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().setup_chain()
|
||||||
initialize_chain(self.options.tmpdir)
|
|
||||||
#Append rpcauth to zcash.conf before initialization
|
#Append rpcauth to zcash.conf before initialization
|
||||||
rpcauth = "rpcauth=rt:93648e835a54c573682c2eb19f882535$7681e9c5b74bdd85e78166031d2058e1069b3ed7ed967c93fc63abba06f31144"
|
rpcauth = "rpcauth=rt:93648e835a54c573682c2eb19f882535$7681e9c5b74bdd85e78166031d2058e1069b3ed7ed967c93fc63abba06f31144"
|
||||||
rpcauth2 = "rpcauth=rt2:f8607b1a88861fac29dfccf9b52ff9f$ff36a0c23c8c62b4846112e50fa888416e94c17bfd4c42f88fd8f55ec6a3137e"
|
rpcauth2 = "rpcauth=rt2:f8607b1a88861fac29dfccf9b52ff9f$ff36a0c23c8c62b4846112e50fa888416e94c17bfd4c42f88fd8f55ec6a3137e"
|
||||||
|
@ -33,6 +30,9 @@ class HTTPBasicsTest (BitcoinTestFramework):
|
||||||
f.write(rpcauth+"\n")
|
f.write(rpcauth+"\n")
|
||||||
f.write(rpcauth2+"\n")
|
f.write(rpcauth2+"\n")
|
||||||
|
|
||||||
|
def setup_network(self):
|
||||||
|
self.nodes = self.setup_nodes()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
|
|
||||||
##################################################
|
##################################################
|
||||||
|
|
|
@ -14,6 +14,12 @@ import time
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
class NodeHandlingTest (BitcoinTestFramework):
|
class NodeHandlingTest (BitcoinTestFramework):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
###########################
|
###########################
|
||||||
# setban/listbanned tests #
|
# setban/listbanned tests #
|
||||||
|
|
|
@ -7,7 +7,7 @@ from test_framework.mininode import CBlockHeader, CInv, NodeConn, NodeConnCB, \
|
||||||
NetworkThread, msg_block, msg_headers, msg_inv, msg_ping, msg_pong, \
|
NetworkThread, msg_block, msg_headers, msg_inv, msg_ping, msg_pong, \
|
||||||
mininode_lock
|
mininode_lock
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, initialize_chain_clean, \
|
from test_framework.util import assert_equal, \
|
||||||
start_node, p2p_port
|
start_node, p2p_port
|
||||||
from test_framework.blocktools import create_block, create_coinbase
|
from test_framework.blocktools import create_block, create_coinbase
|
||||||
|
|
||||||
|
@ -117,8 +117,10 @@ class AcceptBlockTest(BitcoinTestFramework):
|
||||||
default=os.getenv("BITCOIND", "bitcoind"),
|
default=os.getenv("BITCOIND", "bitcoind"),
|
||||||
help="bitcoind binary to test")
|
help="bitcoind binary to test")
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
initialize_chain_clean(self.options.tmpdir, 2)
|
super().__init__()
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 2
|
||||||
|
|
||||||
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
|
||||||
|
|
|
@ -38,6 +38,7 @@ class FullBlockTest(ComparisonTestFramework):
|
||||||
''' Can either run this test as 1 node with expected answers, or two and compare them.
|
''' Can either run this test as 1 node with expected answers, or two and compare them.
|
||||||
Change the "outcome" variable from each TestInstance object to only do the comparison. '''
|
Change the "outcome" variable from each TestInstance object to only do the comparison. '''
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.block_heights = {}
|
self.block_heights = {}
|
||||||
self.coinbase_key = CECKey()
|
self.coinbase_key = CECKey()
|
||||||
|
|
|
@ -8,18 +8,19 @@ from test_framework.mininode import NodeConn, NetworkThread, CInv, \
|
||||||
msg_mempool, msg_getdata, msg_tx, mininode_lock, SAPLING_PROTO_VERSION
|
msg_mempool, msg_getdata, msg_tx, mininode_lock, SAPLING_PROTO_VERSION
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, connect_nodes_bi, fail, \
|
from test_framework.util import assert_equal, connect_nodes_bi, fail, \
|
||||||
initialize_chain_clean, p2p_port, start_nodes, sync_blocks, sync_mempools
|
p2p_port, start_nodes, sync_blocks, sync_mempools
|
||||||
from tx_expiry_helper import TestNode, create_transaction
|
from tx_expiry_helper import TestNode, create_transaction
|
||||||
|
|
||||||
|
|
||||||
class TxExpiringSoonTest(BitcoinTestFramework):
|
class TxExpiringSoonTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory " + self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 3)
|
self.num_nodes = 3
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.nodes = start_nodes(3, self.options.tmpdir)
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||||
connect_nodes_bi(self.nodes, 0, 1)
|
connect_nodes_bi(self.nodes, 0, 1)
|
||||||
# We don't connect node 2
|
# We don't connect node 2
|
||||||
|
|
||||||
|
|
|
@ -6,8 +6,7 @@
|
||||||
from test_framework.mininode import NodeConn, NetworkThread, \
|
from test_framework.mininode import NodeConn, NetworkThread, \
|
||||||
msg_tx, SAPLING_PROTO_VERSION
|
msg_tx, SAPLING_PROTO_VERSION
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import initialize_chain_clean, start_nodes, \
|
from test_framework.util import start_nodes, p2p_port, assert_equal
|
||||||
p2p_port, assert_equal
|
|
||||||
from tx_expiry_helper import TestNode, create_transaction
|
from tx_expiry_helper import TestNode, create_transaction
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
@ -15,12 +14,13 @@ import time
|
||||||
|
|
||||||
class TxExpiryDoSTest(BitcoinTestFramework):
|
class TxExpiryDoSTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory " + self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 1)
|
self.num_nodes = 1
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.nodes = start_nodes(1, self.options.tmpdir)
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
test_node = TestNode()
|
test_node = TestNode()
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, initialize_chain_clean, \
|
from test_framework.util import assert_equal, \
|
||||||
start_node, connect_nodes_bi, wait_and_assert_operationid_status, \
|
start_node, connect_nodes_bi, wait_and_assert_operationid_status, \
|
||||||
get_coinbase_address
|
get_coinbase_address
|
||||||
|
|
||||||
|
@ -13,9 +13,10 @@ from decimal import Decimal
|
||||||
|
|
||||||
class PaymentDisclosureTest (BitcoinTestFramework):
|
class PaymentDisclosureTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.num_nodes = 3
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
args = ['-debug=zrpcunsafe,paymentdisclosure', '-experimentalfeatures', '-paymentdisclosure', '-txindex=1']
|
args = ['-debug=zrpcunsafe,paymentdisclosure', '-experimentalfeatures', '-paymentdisclosure', '-txindex=1']
|
||||||
|
|
|
@ -12,7 +12,6 @@ from test_framework.util import (
|
||||||
assert_equal,
|
assert_equal,
|
||||||
bitcoind_processes,
|
bitcoind_processes,
|
||||||
connect_nodes_bi,
|
connect_nodes_bi,
|
||||||
initialize_chain,
|
|
||||||
nuparams,
|
nuparams,
|
||||||
start_node,
|
start_node,
|
||||||
start_nodes,
|
start_nodes,
|
||||||
|
@ -29,12 +28,8 @@ NO_CANOPY = [nuparams(BLOSSOM_BRANCH_ID, 205), nuparams(HEARTWOOD_BRANCH_ID, 21
|
||||||
|
|
||||||
class PostHeartwoodRollbackTest (BitcoinTestFramework):
|
class PostHeartwoodRollbackTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
|
||||||
initialize_chain(self.options.tmpdir)
|
|
||||||
|
|
||||||
def setup_nodes(self):
|
def setup_nodes(self):
|
||||||
return start_nodes(4, self.options.tmpdir, extra_args=[
|
return start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[
|
||||||
HAS_CANOPY,
|
HAS_CANOPY,
|
||||||
HAS_CANOPY,
|
HAS_CANOPY,
|
||||||
NO_CANOPY,
|
NO_CANOPY,
|
||||||
|
|
|
@ -36,6 +36,10 @@ addnode connect to generic DNS name
|
||||||
|
|
||||||
class ProxyTest(BitcoinTestFramework):
|
class ProxyTest(BitcoinTestFramework):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
self.have_ipv6 = test_ipv6_local()
|
self.have_ipv6 = test_ipv6_local()
|
||||||
# Create two proxies on different ports
|
# Create two proxies on different ports
|
||||||
# ... one unauthenticated
|
# ... one unauthenticated
|
||||||
|
@ -77,7 +81,7 @@ class ProxyTest(BitcoinTestFramework):
|
||||||
]
|
]
|
||||||
if self.have_ipv6:
|
if self.have_ipv6:
|
||||||
args[3] = ['-listen', '-debug=net', '-debug=proxy', '-proxy=[%s]:%i' % (self.conf3.addr),'-proxyrandomize=0', '-noonion']
|
args[3] = ['-listen', '-debug=net', '-debug=proxy', '-proxy=[%s]:%i' % (self.conf3.addr),'-proxyrandomize=0', '-noonion']
|
||||||
return start_nodes(4, self.options.tmpdir, extra_args=args)
|
return start_nodes(self.num_nodes, self.options.tmpdir, extra_args=args)
|
||||||
|
|
||||||
def node_test(self, node, proxies, auth, test_onion=True):
|
def node_test(self, node, proxies, auth, test_onion=True):
|
||||||
rv = []
|
rv = []
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import initialize_chain_clean, start_node, \
|
from test_framework.util import start_node, \
|
||||||
connect_nodes, stop_node, sync_blocks
|
connect_nodes, stop_node, sync_blocks
|
||||||
|
|
||||||
import os.path
|
import os.path
|
||||||
|
@ -25,6 +25,10 @@ def calc_usage(blockdir):
|
||||||
class PruneTest(BitcoinTestFramework):
|
class PruneTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 3
|
||||||
|
|
||||||
self.utxo = []
|
self.utxo = []
|
||||||
self.address = ["",""]
|
self.address = ["",""]
|
||||||
|
|
||||||
|
@ -46,10 +50,6 @@ class PruneTest(BitcoinTestFramework):
|
||||||
self.txouts = self.txouts + script_pubkey
|
self.txouts = self.txouts + script_pubkey
|
||||||
|
|
||||||
|
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
|
||||||
initialize_chain_clean(self.options.tmpdir, 3)
|
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.nodes = []
|
self.nodes = []
|
||||||
self.is_network_split = False
|
self.is_network_split = False
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, initialize_chain_clean, \
|
from test_framework.util import assert_equal, \
|
||||||
start_nodes, connect_nodes_bi, assert_raises
|
start_nodes, connect_nodes_bi, assert_raises
|
||||||
|
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
@ -18,12 +18,13 @@ from decimal import Decimal
|
||||||
# Create one-input, one-output, no-fee transaction:
|
# Create one-input, one-output, no-fee transaction:
|
||||||
class RawTransactionsTest(BitcoinTestFramework):
|
class RawTransactionsTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 3)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 3
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(3, self.options.tmpdir)
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||||
|
|
||||||
#connect to a local machine for debugging
|
#connect to a local machine for debugging
|
||||||
#url = "http://bitcoinrpc:DP6DvqZtqXarpeNWyN3LZTFchCCyCUuHwNF7E8pX99x1@%s:%d" % ('127.0.0.1', 18232)
|
#url = "http://bitcoinrpc:DP6DvqZtqXarpeNWyN3LZTFchCCyCUuHwNF7E8pX99x1@%s:%d" % ('127.0.0.1', 18232)
|
||||||
|
|
|
@ -53,6 +53,11 @@ def check_array_result(object_array, to_match, expected, should_not_find = False
|
||||||
|
|
||||||
class ReceivedByTest(BitcoinTestFramework):
|
class ReceivedByTest(BitcoinTestFramework):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
'''
|
'''
|
||||||
listreceivedbyaddress Test
|
listreceivedbyaddress Test
|
||||||
|
|
|
@ -8,15 +8,16 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, initialize_chain_clean, \
|
from test_framework.util import assert_equal, \
|
||||||
start_node, stop_node, wait_bitcoinds
|
start_node, stop_node, wait_bitcoinds
|
||||||
|
|
||||||
|
|
||||||
class ReindexTest(BitcoinTestFramework):
|
class ReindexTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 1)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 1
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.nodes = []
|
self.nodes = []
|
||||||
|
|
|
@ -8,7 +8,6 @@ from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import (
|
from test_framework.util import (
|
||||||
assert_equal,
|
assert_equal,
|
||||||
initialize_chain,
|
|
||||||
start_nodes, get_coinbase_address,
|
start_nodes, get_coinbase_address,
|
||||||
wait_and_assert_operationid_status,
|
wait_and_assert_operationid_status,
|
||||||
nuparams, BLOSSOM_BRANCH_ID, HEARTWOOD_BRANCH_ID, CANOPY_BRANCH_ID
|
nuparams, BLOSSOM_BRANCH_ID, HEARTWOOD_BRANCH_ID, CANOPY_BRANCH_ID
|
||||||
|
@ -23,12 +22,8 @@ HAS_CANOPY = ['-nurejectoldversions=false',
|
||||||
]
|
]
|
||||||
class RemoveSproutShieldingTest (BitcoinTestFramework):
|
class RemoveSproutShieldingTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
|
||||||
initialize_chain(self.options.tmpdir)
|
|
||||||
|
|
||||||
def setup_nodes(self):
|
def setup_nodes(self):
|
||||||
return start_nodes(4, self.options.tmpdir, extra_args=[HAS_CANOPY]*4)
|
return start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[HAS_CANOPY] * self.num_nodes)
|
||||||
|
|
||||||
def run_test (self):
|
def run_test (self):
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, assert_greater_than, \
|
from test_framework.util import assert_equal, assert_greater_than, \
|
||||||
initialize_chain_clean, start_nodes, connect_nodes_bi
|
start_nodes, connect_nodes_bi
|
||||||
|
|
||||||
import struct
|
import struct
|
||||||
import binascii
|
import binascii
|
||||||
|
@ -51,12 +51,13 @@ def http_post_call(host, port, path, requestdata = '', response_object = 0):
|
||||||
class RESTTest (BitcoinTestFramework):
|
class RESTTest (BitcoinTestFramework):
|
||||||
FORMAT_SEPARATOR = "."
|
FORMAT_SEPARATOR = "."
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 3)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 3
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(3, self.options.tmpdir)
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||||
connect_nodes_bi(self.nodes,0,1)
|
connect_nodes_bi(self.nodes,0,1)
|
||||||
connect_nodes_bi(self.nodes,1,2)
|
connect_nodes_bi(self.nodes,1,2)
|
||||||
connect_nodes_bi(self.nodes,0,2)
|
connect_nodes_bi(self.nodes,0,2)
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
# file COPYING or https://www.opensource.org/licenses/mit-license.php .
|
# file COPYING or https://www.opensource.org/licenses/mit-license.php .
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, initialize_chain_clean, \
|
from test_framework.util import assert_equal, \
|
||||||
start_nodes, start_node, connect_nodes_bi, bitcoind_processes, \
|
start_nodes, start_node, connect_nodes_bi, bitcoind_processes, \
|
||||||
nuparams, OVERWINTER_BRANCH_ID, SAPLING_BRANCH_ID
|
nuparams, OVERWINTER_BRANCH_ID, SAPLING_BRANCH_ID
|
||||||
|
|
||||||
|
@ -15,15 +15,16 @@ FAKE_OVERWINTER = [nuparams(OVERWINTER_BRANCH_ID, 10), nuparams(SAPLING_BRANCH_I
|
||||||
|
|
||||||
class RewindBlockIndexTest (BitcoinTestFramework):
|
class RewindBlockIndexTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 3)
|
self.num_nodes = 3
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
# Node 0 - Overwinter, then Sprout, then Overwinter again
|
# Node 0 - Overwinter, then Sprout, then Overwinter again
|
||||||
# Node 1 - Sprout
|
# Node 1 - Sprout
|
||||||
# Node 2 - Overwinter
|
# Node 2 - Overwinter
|
||||||
self.nodes = start_nodes(3, self.options.tmpdir, extra_args=[
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[
|
||||||
FAKE_OVERWINTER,
|
FAKE_OVERWINTER,
|
||||||
FAKE_SPROUT,
|
FAKE_SPROUT,
|
||||||
FAKE_OVERWINTER,
|
FAKE_OVERWINTER,
|
||||||
|
|
|
@ -37,7 +37,7 @@ def run_bind_test(tmpdir, allow_ips, connect_to, addresses, expected):
|
||||||
if allow_ips:
|
if allow_ips:
|
||||||
base_args += ['-rpcallowip=' + x for x in allow_ips]
|
base_args += ['-rpcallowip=' + x for x in allow_ips]
|
||||||
binds = ['-rpcbind='+addr for addr in addresses]
|
binds = ['-rpcbind='+addr for addr in addresses]
|
||||||
nodes = start_nodes(1, tmpdir, [base_args + binds], connect_to)
|
nodes = start_nodes(self.num_nodes, tmpdir, [base_args + binds], connect_to)
|
||||||
try:
|
try:
|
||||||
pid = bitcoind_processes[0].pid
|
pid = bitcoind_processes[0].pid
|
||||||
assert_equal(set(get_bind_addrs(pid)), set(expected))
|
assert_equal(set(get_bind_addrs(pid)), set(expected))
|
||||||
|
@ -51,7 +51,7 @@ def run_allowip_test(tmpdir, allow_ips, rpchost, rpcport):
|
||||||
at a non-localhost IP.
|
at a non-localhost IP.
|
||||||
'''
|
'''
|
||||||
base_args = ['-disablewallet', '-nolisten'] + ['-rpcallowip='+x for x in allow_ips]
|
base_args = ['-disablewallet', '-nolisten'] + ['-rpcallowip='+x for x in allow_ips]
|
||||||
nodes = start_nodes(1, tmpdir, [base_args])
|
nodes = start_nodes(self.num_nodes, tmpdir, [base_args])
|
||||||
try:
|
try:
|
||||||
# connect to node through non-loopback interface
|
# connect to node through non-loopback interface
|
||||||
url = "http://rt:rt@%s:%d" % (rpchost, rpcport,)
|
url = "http://rt:rt@%s:%d" % (rpchost, rpcport,)
|
||||||
|
|
|
@ -28,7 +28,7 @@ length computation (40b5d5e3ea4b602c34c4efaba0b9f6171dddfef5) corrects the issue
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import (assert_equal, assert_true,
|
from test_framework.util import (assert_equal, assert_true,
|
||||||
initialize_chain_clean, start_nodes, start_node, connect_nodes_bi,
|
start_nodes, start_node, connect_nodes_bi,
|
||||||
bitcoind_processes,
|
bitcoind_processes,
|
||||||
nuparams, OVERWINTER_BRANCH_ID, SAPLING_BRANCH_ID)
|
nuparams, OVERWINTER_BRANCH_ID, SAPLING_BRANCH_ID)
|
||||||
|
|
||||||
|
@ -39,14 +39,15 @@ HAS_SAPLING = [nuparams(OVERWINTER_BRANCH_ID, 10), nuparams(SAPLING_BRANCH_ID, 1
|
||||||
NO_SAPLING = [nuparams(OVERWINTER_BRANCH_ID, 10), nuparams(SAPLING_BRANCH_ID, 150)]
|
NO_SAPLING = [nuparams(OVERWINTER_BRANCH_ID, 10), nuparams(SAPLING_BRANCH_ID, 150)]
|
||||||
|
|
||||||
class SaplingRewindTest(BitcoinTestFramework):
|
class SaplingRewindTest(BitcoinTestFramework):
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
logging.info("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.num_nodes = 3
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
# This mirrors how the network was setup in the bash test
|
# This mirrors how the network was setup in the bash test
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
logging.info("Initializing the network in "+self.options.tmpdir)
|
logging.info("Initializing the network in "+self.options.tmpdir)
|
||||||
self.nodes = start_nodes(3, self.options.tmpdir, extra_args=[
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[
|
||||||
HAS_SAPLING, # The first two nodes have a correct view of the network,
|
HAS_SAPLING, # The first two nodes have a correct view of the network,
|
||||||
HAS_SAPLING, # the third will rewind after upgrading.
|
HAS_SAPLING, # the third will rewind after upgrading.
|
||||||
NO_SAPLING
|
NO_SAPLING
|
||||||
|
|
|
@ -8,21 +8,21 @@ from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import (
|
from test_framework.util import (
|
||||||
assert_equal,
|
assert_equal,
|
||||||
get_coinbase_address,
|
get_coinbase_address,
|
||||||
initialize_chain_clean,
|
|
||||||
start_nodes,
|
start_nodes,
|
||||||
wait_and_assert_operationid_status,
|
wait_and_assert_operationid_status,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ShorterBlockTimes(BitcoinTestFramework):
|
class ShorterBlockTimes(BitcoinTestFramework):
|
||||||
def setup_nodes(self):
|
def __init__(self):
|
||||||
return start_nodes(4, self.options.tmpdir, [[
|
super().__init__()
|
||||||
'-nuparams=2bb40e60:106', # Blossom
|
self.num_nodes = 4
|
||||||
]] * 4)
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_chain(self):
|
def setup_nodes(self):
|
||||||
print("Initializing test directory " + self.options.tmpdir)
|
return start_nodes(self.num_nodes, self.options.tmpdir, [[
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
'-nuparams=2bb40e60:106', # Blossom
|
||||||
|
]] * self.num_nodes)
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
print("Mining blocks...")
|
print("Mining blocks...")
|
||||||
|
|
|
@ -4,19 +4,19 @@
|
||||||
# file COPYING or https://www.opensource.org/licenses/mit-license.php .
|
# file COPYING or https://www.opensource.org/licenses/mit-license.php .
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, initialize_chain_clean, \
|
from test_framework.util import assert_equal, start_nodes
|
||||||
start_nodes
|
|
||||||
|
|
||||||
|
|
||||||
class SignRawTransactionsTest(BitcoinTestFramework):
|
class SignRawTransactionsTest(BitcoinTestFramework):
|
||||||
"""Tests transaction signing via RPC command "signrawtransaction"."""
|
"""Tests transaction signing via RPC command "signrawtransaction"."""
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print('Initializing test directory ' + self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 1)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 1
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(1, self.options.tmpdir)
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||||
self.is_network_split = False
|
self.is_network_split = False
|
||||||
|
|
||||||
def successful_signing_test(self):
|
def successful_signing_test(self):
|
||||||
|
|
|
@ -142,6 +142,11 @@ def check_estimates(node, fees_seen, max_invalid, print_estimates = True):
|
||||||
|
|
||||||
class EstimateFeeTest(BitcoinTestFramework):
|
class EstimateFeeTest(BitcoinTestFramework):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 3
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
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.
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal, assert_true, get_coinbase_address, \
|
from test_framework.util import assert_equal, assert_true, get_coinbase_address, \
|
||||||
initialize_chain_clean, start_nodes, wait_and_assert_operationid_status, \
|
start_nodes, wait_and_assert_operationid_status, \
|
||||||
wait_and_assert_operationid_status_result
|
wait_and_assert_operationid_status_result
|
||||||
|
|
||||||
SAPLING_ADDR = 'zregtestsapling1ssqj3f3majnl270985gqcdqedd9t4nlttjqskccwevj2v20sc25deqspv3masufnwcdy67cydyy'
|
SAPLING_ADDR = 'zregtestsapling1ssqj3f3majnl270985gqcdqedd9t4nlttjqskccwevj2v20sc25deqspv3masufnwcdy67cydyy'
|
||||||
|
@ -49,9 +49,14 @@ def check_migration_status(node, destination_address, migration_state):
|
||||||
|
|
||||||
|
|
||||||
class SproutSaplingMigration(BitcoinTestFramework):
|
class SproutSaplingMigration(BitcoinTestFramework):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_nodes(self):
|
def setup_nodes(self):
|
||||||
extra_args = [[
|
extra_args = [[
|
||||||
]] * 4
|
]] * self.num_nodes
|
||||||
# Add migration parameters to nodes[0]
|
# Add migration parameters to nodes[0]
|
||||||
extra_args[0] = extra_args[0] + [
|
extra_args[0] = extra_args[0] + [
|
||||||
'-migration',
|
'-migration',
|
||||||
|
@ -60,11 +65,7 @@ class SproutSaplingMigration(BitcoinTestFramework):
|
||||||
]
|
]
|
||||||
assert_equal(3, len(extra_args[0]))
|
assert_equal(3, len(extra_args[0]))
|
||||||
assert_equal(0, len(extra_args[1]))
|
assert_equal(0, len(extra_args[1]))
|
||||||
return start_nodes(4, self.options.tmpdir, extra_args)
|
return start_nodes(self.num_nodes, self.options.tmpdir, extra_args)
|
||||||
|
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing test directory " + self.options.tmpdir)
|
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
|
||||||
|
|
||||||
def run_migration_test(self, node, sproutAddr, saplingAddr, target_height):
|
def run_migration_test(self, node, sproutAddr, saplingAddr, target_height):
|
||||||
# Make sure we are in a good state to run the test
|
# Make sure we are in a good state to run the test
|
||||||
|
|
|
@ -16,7 +16,6 @@ import traceback
|
||||||
from .authproxy import JSONRPCException
|
from .authproxy import JSONRPCException
|
||||||
from .util import (
|
from .util import (
|
||||||
initialize_chain,
|
initialize_chain,
|
||||||
assert_equal,
|
|
||||||
start_nodes,
|
start_nodes,
|
||||||
connect_nodes_bi,
|
connect_nodes_bi,
|
||||||
sync_blocks,
|
sync_blocks,
|
||||||
|
@ -32,21 +31,26 @@ from .util import (
|
||||||
|
|
||||||
class BitcoinTestFramework(object):
|
class BitcoinTestFramework(object):
|
||||||
|
|
||||||
# These may be over-ridden by subclasses:
|
def __init__(self):
|
||||||
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
self.nodes = None
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
for node in self.nodes:
|
raise NotImplementedError
|
||||||
assert_equal(node.getblockcount(), 200)
|
|
||||||
assert_equal(node.getbalance(), 25*10)
|
|
||||||
|
|
||||||
def add_options(self, parser):
|
def add_options(self, parser):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def setup_chain(self):
|
def setup_chain(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
print("Initializing test directory "+self.options.tmpdir)
|
||||||
initialize_chain(self.options.tmpdir)
|
if self.setup_clean_chain:
|
||||||
|
initialize_chain_clean(self.options.tmpdir, self.num_nodes)
|
||||||
|
else:
|
||||||
|
initialize_chain(self.options.tmpdir, self.num_nodes)
|
||||||
|
|
||||||
def setup_nodes(self):
|
def setup_nodes(self):
|
||||||
return start_nodes(4, self.options.tmpdir)
|
return start_nodes(self.num_nodes, self.options.tmpdir)
|
||||||
|
|
||||||
def setup_network(self, split = False):
|
def setup_network(self, split = False):
|
||||||
self.nodes = self.setup_nodes()
|
self.nodes = self.setup_nodes()
|
||||||
|
@ -181,9 +185,10 @@ class BitcoinTestFramework(object):
|
||||||
|
|
||||||
class ComparisonTestFramework(BitcoinTestFramework):
|
class ComparisonTestFramework(BitcoinTestFramework):
|
||||||
|
|
||||||
# Can override the num_nodes variable to indicate how many nodes to run.
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def add_options(self, parser):
|
def add_options(self, parser):
|
||||||
parser.add_option("--testbinary", dest="testbinary",
|
parser.add_option("--testbinary", dest="testbinary",
|
||||||
|
@ -193,10 +198,6 @@ class ComparisonTestFramework(BitcoinTestFramework):
|
||||||
default=os.getenv("BITCOIND", "bitcoind"),
|
default=os.getenv("BITCOIND", "bitcoind"),
|
||||||
help="bitcoind binary to use for reference nodes (if any)")
|
help="bitcoind binary to use for reference nodes (if any)")
|
||||||
|
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
|
||||||
initialize_chain_clean(self.options.tmpdir, self.num_nodes)
|
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.nodes = start_nodes(
|
self.nodes = start_nodes(
|
||||||
self.num_nodes, self.options.tmpdir,
|
self.num_nodes, self.options.tmpdir,
|
||||||
|
|
|
@ -186,10 +186,10 @@ def wait_for_bitcoind_start(process, url, i):
|
||||||
raise # unknown JSON RPC exception
|
raise # unknown JSON RPC exception
|
||||||
time.sleep(0.25)
|
time.sleep(0.25)
|
||||||
|
|
||||||
def initialize_chain(test_dir):
|
def initialize_chain(test_dir, num_nodes):
|
||||||
"""
|
"""
|
||||||
Create (or copy from cache) a 200-block-long chain and
|
Create a cache of a 200-block-long chain (with wallet) for MAX_NODES
|
||||||
4 wallets.
|
Afterward, create num_nodes copies from the cache
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Due to the consensus change fix for the timejacking attack, we need to
|
# Due to the consensus change fix for the timejacking attack, we need to
|
||||||
|
@ -213,18 +213,22 @@ def initialize_chain(test_dir):
|
||||||
print("initialize_chain(): Removing stale cache")
|
print("initialize_chain(): Removing stale cache")
|
||||||
shutil.rmtree("cache")
|
shutil.rmtree("cache")
|
||||||
|
|
||||||
if (not os.path.isdir(os.path.join("cache","node0"))
|
assert num_nodes <= MAX_NODES
|
||||||
or not os.path.isdir(os.path.join("cache","node1"))
|
create_cache = False
|
||||||
or not os.path.isdir(os.path.join("cache","node2"))
|
for i in range(MAX_NODES):
|
||||||
or not os.path.isdir(os.path.join("cache","node3"))):
|
if not os.path.isdir(os.path.join('cache', 'node'+str(i))):
|
||||||
|
create_cache = True
|
||||||
|
break
|
||||||
|
|
||||||
|
if create_cache:
|
||||||
|
|
||||||
#find and delete old cache directories if any exist
|
#find and delete old cache directories if any exist
|
||||||
for i in range(4):
|
for i in range(MAX_NODES):
|
||||||
if os.path.isdir(os.path.join("cache","node"+str(i))):
|
if os.path.isdir(os.path.join("cache","node"+str(i))):
|
||||||
shutil.rmtree(os.path.join("cache","node"+str(i)))
|
shutil.rmtree(os.path.join("cache","node"+str(i)))
|
||||||
|
|
||||||
# Create cache directories, run bitcoinds:
|
# Create cache directories, run bitcoinds:
|
||||||
for i in range(4):
|
for i in range(MAX_NODES):
|
||||||
datadir=initialize_datadir("cache", i)
|
datadir=initialize_datadir("cache", i)
|
||||||
args = [ os.getenv("BITCOIND", "bitcoind"), "-keypool=1", "-datadir="+datadir, "-discover=0" ]
|
args = [ os.getenv("BITCOIND", "bitcoind"), "-keypool=1", "-datadir="+datadir, "-discover=0" ]
|
||||||
args.extend([
|
args.extend([
|
||||||
|
@ -241,15 +245,18 @@ def initialize_chain(test_dir):
|
||||||
print("initialize_chain: RPC successfully started")
|
print("initialize_chain: RPC successfully started")
|
||||||
|
|
||||||
rpcs = []
|
rpcs = []
|
||||||
for i in range(4):
|
for i in range(MAX_NODES):
|
||||||
try:
|
try:
|
||||||
rpcs.append(get_rpc_proxy(rpc_url(i), i))
|
rpcs.append(get_rpc_proxy(rpc_url(i), i))
|
||||||
except:
|
except:
|
||||||
sys.stderr.write("Error connecting to "+rpc_url(i)+"\n")
|
sys.stderr.write("Error connecting to "+rpc_url(i)+"\n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Create a 200-block-long chain; each of the 4 nodes
|
# Create a 200-block-long chain; each of the 4 first nodes
|
||||||
# gets 25 mature blocks and 25 immature.
|
# gets 25 mature blocks and 25 immature.
|
||||||
|
# Note: To preserve compatibility with older versions of
|
||||||
|
# initialize_chain, only 4 nodes will generate coins.
|
||||||
|
#
|
||||||
# Blocks are created with timestamps 2.5 minutes apart (matching the
|
# Blocks are created with timestamps 2.5 minutes apart (matching the
|
||||||
# chain defaulting above to Sapling active), starting 200 * 2.5 minutes
|
# chain defaulting above to Sapling active), starting 200 * 2.5 minutes
|
||||||
# before the current time.
|
# before the current time.
|
||||||
|
@ -268,13 +275,13 @@ def initialize_chain(test_dir):
|
||||||
# Shut them down, and clean up cache directories:
|
# Shut them down, and clean up cache directories:
|
||||||
stop_nodes(rpcs)
|
stop_nodes(rpcs)
|
||||||
wait_bitcoinds()
|
wait_bitcoinds()
|
||||||
for i in range(4):
|
for i in range(MAX_NODES):
|
||||||
os.remove(log_filename("cache", i, "debug.log"))
|
os.remove(log_filename("cache", i, "debug.log"))
|
||||||
os.remove(log_filename("cache", i, "db.log"))
|
os.remove(log_filename("cache", i, "db.log"))
|
||||||
os.remove(log_filename("cache", i, "peers.dat"))
|
os.remove(log_filename("cache", i, "peers.dat"))
|
||||||
os.remove(log_filename("cache", i, "fee_estimates.dat"))
|
os.remove(log_filename("cache", i, "fee_estimates.dat"))
|
||||||
|
|
||||||
for i in range(4):
|
for i in range(num_nodes):
|
||||||
from_dir = os.path.join("cache", "node"+str(i))
|
from_dir = os.path.join("cache", "node"+str(i))
|
||||||
to_dir = os.path.join(test_dir, "node"+str(i))
|
to_dir = os.path.join(test_dir, "node"+str(i))
|
||||||
shutil.copytree(from_dir, to_dir)
|
shutil.copytree(from_dir, to_dir)
|
||||||
|
|
|
@ -32,7 +32,7 @@ from test_framework.util import (
|
||||||
get_coinbase_address,
|
get_coinbase_address,
|
||||||
start_node, start_nodes,
|
start_node, start_nodes,
|
||||||
sync_blocks, sync_mempools,
|
sync_blocks, sync_mempools,
|
||||||
initialize_chain_clean, connect_nodes_bi,
|
connect_nodes_bi,
|
||||||
wait_and_assert_operationid_status,
|
wait_and_assert_operationid_status,
|
||||||
bitcoind_processes,
|
bitcoind_processes,
|
||||||
check_node_log
|
check_node_log
|
||||||
|
@ -44,12 +44,13 @@ TURNSTILE_ARGS = ['-experimentalfeatures',
|
||||||
|
|
||||||
class TurnstileTest (BitcoinTestFramework):
|
class TurnstileTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory " + self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 3)
|
self.num_nodes = 3
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(3, self.options.tmpdir)
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||||
connect_nodes_bi(self.nodes,0,1)
|
connect_nodes_bi(self.nodes,0,1)
|
||||||
connect_nodes_bi(self.nodes,1,2)
|
connect_nodes_bi(self.nodes,1,2)
|
||||||
self.is_network_split=False
|
self.is_network_split=False
|
||||||
|
|
|
@ -14,6 +14,11 @@ from test_framework.util import assert_equal, connect_nodes, \
|
||||||
|
|
||||||
class TxnMallTest(BitcoinTestFramework):
|
class TxnMallTest(BitcoinTestFramework):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
|
||||||
def add_options(self, parser):
|
def add_options(self, parser):
|
||||||
parser.add_option("--mineblock", dest="mine_block", default=False, action="store_true",
|
parser.add_option("--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")
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, assert_greater_than, \
|
from test_framework.util import assert_equal, assert_greater_than, \
|
||||||
initialize_chain_clean, start_nodes, start_node, connect_nodes_bi, \
|
start_nodes, start_node, connect_nodes_bi, \
|
||||||
stop_nodes, sync_blocks, sync_mempools, wait_and_assert_operationid_status, \
|
stop_nodes, sync_blocks, sync_mempools, wait_and_assert_operationid_status, \
|
||||||
wait_bitcoinds
|
wait_bitcoinds
|
||||||
|
|
||||||
|
@ -14,9 +14,10 @@ from decimal import Decimal
|
||||||
|
|
||||||
class WalletTest (BitcoinTestFramework):
|
class WalletTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 4
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(3, self.options.tmpdir)
|
self.nodes = start_nodes(3, self.options.tmpdir)
|
||||||
|
|
|
@ -13,8 +13,8 @@ from decimal import Decimal
|
||||||
class WalletNullifiersTest (BitcoinTestFramework):
|
class WalletNullifiersTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_nodes(self):
|
def setup_nodes(self):
|
||||||
return start_nodes(4, self.options.tmpdir,
|
return start_nodes(self.num_nodes, self.options.tmpdir,
|
||||||
extra_args=[['-experimentalfeatures', '-developerencryptwallet']] * 4)
|
extra_args=[['-experimentalfeatures', '-developerencryptwallet']] * self.num_nodes)
|
||||||
|
|
||||||
def run_test (self):
|
def run_test (self):
|
||||||
# add zaddr to node 0
|
# add zaddr to node 0
|
||||||
|
|
|
@ -9,7 +9,6 @@ from test_framework.util import (
|
||||||
assert_greater_than,
|
assert_greater_than,
|
||||||
connect_nodes_bi,
|
connect_nodes_bi,
|
||||||
get_coinbase_address,
|
get_coinbase_address,
|
||||||
initialize_chain_clean,
|
|
||||||
start_nodes,
|
start_nodes,
|
||||||
wait_and_assert_operationid_status,
|
wait_and_assert_operationid_status,
|
||||||
)
|
)
|
||||||
|
@ -19,16 +18,17 @@ from decimal import Decimal
|
||||||
|
|
||||||
class WalletOverwinterTxTest (BitcoinTestFramework):
|
class WalletOverwinterTxTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.num_nodes = 4
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(4, self.options.tmpdir, extra_args=[[
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[[
|
||||||
"-nuparams=2bb40e60:200",
|
"-nuparams=2bb40e60:200",
|
||||||
"-debug=zrpcunsafe",
|
"-debug=zrpcunsafe",
|
||||||
"-txindex",
|
"-txindex",
|
||||||
]] * 4 )
|
]] * self.num_nodes)
|
||||||
connect_nodes_bi(self.nodes,0,1)
|
connect_nodes_bi(self.nodes,0,1)
|
||||||
connect_nodes_bi(self.nodes,1,2)
|
connect_nodes_bi(self.nodes,1,2)
|
||||||
connect_nodes_bi(self.nodes,0,2)
|
connect_nodes_bi(self.nodes,0,2)
|
||||||
|
|
|
@ -8,7 +8,6 @@ from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import (
|
from test_framework.util import (
|
||||||
assert_equal,
|
assert_equal,
|
||||||
get_coinbase_address,
|
get_coinbase_address,
|
||||||
start_nodes,
|
|
||||||
wait_and_assert_operationid_status,
|
wait_and_assert_operationid_status,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -17,9 +16,6 @@ from decimal import Decimal
|
||||||
# Test wallet behaviour with Sapling addresses
|
# Test wallet behaviour with Sapling addresses
|
||||||
class WalletSaplingTest(BitcoinTestFramework):
|
class WalletSaplingTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_nodes(self):
|
|
||||||
return start_nodes(4, self.options.tmpdir)
|
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# Sanity-check the test harness
|
# Sanity-check the test harness
|
||||||
assert_equal(self.nodes[0].getblockcount(), 200)
|
assert_equal(self.nodes[0].getblockcount(), 200)
|
||||||
|
|
|
@ -35,7 +35,7 @@ and confirm again balances are correct.
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, initialize_chain_clean, \
|
from test_framework.util import assert_equal, \
|
||||||
start_nodes, start_node, connect_nodes, stop_node, \
|
start_nodes, start_node, connect_nodes, stop_node, \
|
||||||
sync_blocks, sync_mempools
|
sync_blocks, sync_mempools
|
||||||
|
|
||||||
|
@ -50,9 +50,10 @@ logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO, str
|
||||||
|
|
||||||
class WalletBackupTest(BitcoinTestFramework):
|
class WalletBackupTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
logging.info("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 4)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 4
|
||||||
|
|
||||||
# This mirrors how the network was setup in the bash test
|
# This mirrors how the network was setup in the bash test
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
|
@ -63,7 +64,7 @@ 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
|
||||||
extra_args = [["-keypool=100", ed0], ["-keypool=100", ed1], ["-keypool=100", ed2], []]
|
extra_args = [["-keypool=100", ed0], ["-keypool=100", ed1], ["-keypool=100", ed2], []]
|
||||||
self.nodes = start_nodes(4, self.options.tmpdir, extra_args)
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args)
|
||||||
connect_nodes(self.nodes[0], 3)
|
connect_nodes(self.nodes[0], 3)
|
||||||
connect_nodes(self.nodes[1], 3)
|
connect_nodes(self.nodes[1], 3)
|
||||||
connect_nodes(self.nodes[2], 3)
|
connect_nodes(self.nodes[2], 3)
|
||||||
|
|
|
@ -5,18 +5,19 @@
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, initialize_chain_clean, \
|
from test_framework.util import assert_equal, \
|
||||||
start_nodes, start_node, connect_nodes_bi, bitcoind_processes
|
start_nodes, start_node, connect_nodes_bi, bitcoind_processes
|
||||||
|
|
||||||
|
|
||||||
class ZapWalletTXesTest (BitcoinTestFramework):
|
class ZapWalletTXesTest (BitcoinTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
def __init__(self):
|
||||||
print("Initializing test directory "+self.options.tmpdir)
|
super().__init__()
|
||||||
initialize_chain_clean(self.options.tmpdir, 3)
|
self.setup_clean_chain = True
|
||||||
|
self.num_nodes = 3
|
||||||
|
|
||||||
def setup_network(self, split=False):
|
def setup_network(self, split=False):
|
||||||
self.nodes = start_nodes(3, self.options.tmpdir)
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||||
connect_nodes_bi(self.nodes,0,1)
|
connect_nodes_bi(self.nodes,0,1)
|
||||||
connect_nodes_bi(self.nodes,1,2)
|
connect_nodes_bi(self.nodes,1,2)
|
||||||
connect_nodes_bi(self.nodes,0,2)
|
connect_nodes_bi(self.nodes,0,2)
|
||||||
|
|
|
@ -10,6 +10,10 @@ from test_framework.util import assert_equal, start_node, \
|
||||||
|
|
||||||
|
|
||||||
class JoinSplitTest(BitcoinTestFramework):
|
class JoinSplitTest(BitcoinTestFramework):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 1
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
self.nodes = []
|
self.nodes = []
|
||||||
self.is_network_split = False
|
self.is_network_split = False
|
||||||
|
|
|
@ -15,6 +15,10 @@ import struct
|
||||||
|
|
||||||
class ZMQTest(BitcoinTestFramework):
|
class ZMQTest(BitcoinTestFramework):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.num_nodes = 4
|
||||||
|
|
||||||
port = 28332
|
port = 28332
|
||||||
|
|
||||||
def setup_nodes(self):
|
def setup_nodes(self):
|
||||||
|
@ -23,7 +27,7 @@ class ZMQTest(BitcoinTestFramework):
|
||||||
self.zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"hashblock")
|
self.zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"hashblock")
|
||||||
self.zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"hashtx")
|
self.zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"hashtx")
|
||||||
self.zmqSubSocket.connect("tcp://127.0.0.1:%i" % self.port)
|
self.zmqSubSocket.connect("tcp://127.0.0.1:%i" % self.port)
|
||||||
return start_nodes(4, self.options.tmpdir, extra_args=[
|
return start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[
|
||||||
['-zmqpubhashtx=tcp://127.0.0.1:'+str(self.port), '-zmqpubhashblock=tcp://127.0.0.1:'+str(self.port)],
|
['-zmqpubhashtx=tcp://127.0.0.1:'+str(self.port), '-zmqpubhashblock=tcp://127.0.0.1:'+str(self.port)],
|
||||||
[],
|
[],
|
||||||
[],
|
[],
|
||||||
|
|
Loading…
Reference in New Issue