[qa] Remove hardcoded "4 nodes" from test_framework

Zcash: Applied changes to our RPC tests.
This commit is contained in:
MarcoFalke 2016-05-14 13:01:31 +02:00 committed by Jack Grigg
parent 5a12bc9d83
commit 818d2de39b
66 changed files with 358 additions and 260 deletions

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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()

View File

@ -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 = [

View File

@ -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):

View File

@ -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()

View File

@ -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()

View File

@ -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)

View File

@ -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):

View File

@ -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 = []

View File

@ -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)

View File

@ -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()

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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):

View File

@ -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 = []

View File

@ -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):

View File

@ -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)

View File

@ -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()

View File

@ -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:

View File

@ -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])

View File

@ -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()

View File

@ -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()

View File

@ -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

View File

@ -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"]

View File

@ -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"]

View File

@ -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

View File

@ -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 = []

View File

@ -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 = [

View File

@ -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):
################################################## ##################################################

View File

@ -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 #

View File

@ -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

View File

@ -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()

View File

@ -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

View File

@ -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()

View File

@ -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']

View File

@ -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,

View File

@ -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 = []

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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 = []

View File

@ -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):

View File

@ -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)

View File

@ -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,

View File

@ -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,)

View File

@ -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

View File

@ -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...")

View File

@ -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):

View File

@ -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.

View File

@ -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

View File

@ -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,

View File

@ -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)

View File

@ -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

View File

@ -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")

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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)],
[], [],
[], [],