mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-08 10:31:50 -05:00
test: Pass at most one node group to sync_all
This commit is contained in:
parent
fa4680ed09
commit
fafe008cb4
5 changed files with 28 additions and 29 deletions
|
@ -117,7 +117,7 @@ class ExampleTest(BitcoinTestFramework):
|
|||
# sync_all() should not include node2, since we're not expecting it to
|
||||
# sync.
|
||||
connect_nodes(self.nodes[0], 1)
|
||||
self.sync_all([self.nodes[0:2]])
|
||||
self.sync_all(self.nodes[0:2])
|
||||
|
||||
# Use setup_nodes() to customize the node start behaviour (for example if
|
||||
# you don't want to start all nodes at the start of the test).
|
||||
|
@ -141,7 +141,7 @@ class ExampleTest(BitcoinTestFramework):
|
|||
|
||||
# Generating a block on one of the nodes will get us out of IBD
|
||||
blocks = [int(self.nodes[0].generate(nblocks=1)[0], 16)]
|
||||
self.sync_all([self.nodes[0:2]])
|
||||
self.sync_all(self.nodes[0:2])
|
||||
|
||||
# Notice above how we called an RPC by calling a method with the same
|
||||
# name on the node object. Notice also how we used a keyword argument
|
||||
|
|
|
@ -28,7 +28,8 @@ class GetChainTipsTest (BitcoinTestFramework):
|
|||
self.split_network()
|
||||
self.nodes[0].generatetoaddress(10, self.nodes[0].get_deterministic_priv_key().address)
|
||||
self.nodes[2].generatetoaddress(20, self.nodes[2].get_deterministic_priv_key().address)
|
||||
self.sync_all([self.nodes[:2], self.nodes[2:]])
|
||||
self.sync_all(self.nodes[:2])
|
||||
self.sync_all(self.nodes[2:])
|
||||
|
||||
tips = self.nodes[1].getchaintips ()
|
||||
assert_equal (len (tips), 1)
|
||||
|
|
|
@ -396,7 +396,8 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||
"""
|
||||
disconnect_nodes(self.nodes[1], 2)
|
||||
disconnect_nodes(self.nodes[2], 1)
|
||||
self.sync_all([self.nodes[:2], self.nodes[2:]])
|
||||
self.sync_all(self.nodes[:2])
|
||||
self.sync_all(self.nodes[2:])
|
||||
|
||||
def join_network(self):
|
||||
"""
|
||||
|
@ -405,13 +406,9 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||
connect_nodes_bi(self.nodes, 1, 2)
|
||||
self.sync_all()
|
||||
|
||||
def sync_all(self, node_groups=None):
|
||||
if not node_groups:
|
||||
node_groups = [self.nodes]
|
||||
|
||||
for group in node_groups:
|
||||
sync_blocks(group)
|
||||
sync_mempools(group)
|
||||
def sync_all(self, nodes=None, **kwargs):
|
||||
sync_blocks(nodes or self.nodes, **kwargs)
|
||||
sync_mempools(nodes or self.nodes, **kwargs)
|
||||
|
||||
# Private helper methods. These should not be accessed by the subclass test scripts.
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ class WalletTest(BitcoinTestFramework):
|
|||
connect_nodes_bi(self.nodes, 0, 1)
|
||||
connect_nodes_bi(self.nodes, 1, 2)
|
||||
connect_nodes_bi(self.nodes, 0, 2)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
|
||||
def check_fee_amount(self, curr_balance, balance_with_fee, fee_per_byte, tx_size):
|
||||
"""Return curr_balance after asserting the fee was in range"""
|
||||
|
@ -58,9 +58,9 @@ class WalletTest(BitcoinTestFramework):
|
|||
assert_equal(walletinfo['immature_balance'], 50)
|
||||
assert_equal(walletinfo['balance'], 0)
|
||||
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
self.nodes[1].generate(101)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
|
||||
assert_equal(self.nodes[0].getbalance(), 50)
|
||||
assert_equal(self.nodes[1].getbalance(), 50)
|
||||
|
@ -107,7 +107,7 @@ class WalletTest(BitcoinTestFramework):
|
|||
|
||||
# Have node0 mine a block, thus it will collect its own fee.
|
||||
self.nodes[0].generate(1)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
|
||||
# Exercise locking of unspent outputs
|
||||
unspent_0 = self.nodes[2].listunspent()[0]
|
||||
|
@ -143,7 +143,7 @@ class WalletTest(BitcoinTestFramework):
|
|||
|
||||
# Have node1 generate 100 blocks (so node0 can recover the fee)
|
||||
self.nodes[1].generate(100)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
|
||||
# node0 should end up with 100 btc in block rewards plus fees, but
|
||||
# minus the 21 plus fees sent to node2
|
||||
|
@ -172,7 +172,7 @@ class WalletTest(BitcoinTestFramework):
|
|||
|
||||
# Have node1 mine a block to confirm transactions:
|
||||
self.nodes[1].generate(1)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
|
||||
assert_equal(self.nodes[0].getbalance(), 0)
|
||||
assert_equal(self.nodes[2].getbalance(), 94)
|
||||
|
@ -187,14 +187,14 @@ class WalletTest(BitcoinTestFramework):
|
|||
self.nodes[2].settxfee(fee_per_byte * 1000)
|
||||
txid = self.nodes[2].sendtoaddress(address, 10, "", "", False)
|
||||
self.nodes[2].generate(1)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
node_2_bal = self.check_fee_amount(self.nodes[2].getbalance(), Decimal('84'), fee_per_byte, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))
|
||||
assert_equal(self.nodes[0].getbalance(), Decimal('10'))
|
||||
|
||||
# Send 10 BTC with subtract fee from amount
|
||||
txid = self.nodes[2].sendtoaddress(address, 10, "", "", True)
|
||||
self.nodes[2].generate(1)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
node_2_bal -= Decimal('10')
|
||||
assert_equal(self.nodes[2].getbalance(), node_2_bal)
|
||||
node_0_bal = self.check_fee_amount(self.nodes[0].getbalance(), Decimal('20'), fee_per_byte, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))
|
||||
|
@ -202,7 +202,7 @@ class WalletTest(BitcoinTestFramework):
|
|||
# Sendmany 10 BTC
|
||||
txid = self.nodes[2].sendmany('', {address: 10}, 0, "", [])
|
||||
self.nodes[2].generate(1)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
node_0_bal += Decimal('10')
|
||||
node_2_bal = self.check_fee_amount(self.nodes[2].getbalance(), node_2_bal - Decimal('10'), fee_per_byte, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))
|
||||
assert_equal(self.nodes[0].getbalance(), node_0_bal)
|
||||
|
@ -210,7 +210,7 @@ class WalletTest(BitcoinTestFramework):
|
|||
# Sendmany 10 BTC with subtract fee from amount
|
||||
txid = self.nodes[2].sendmany('', {address: 10}, 0, "", [address])
|
||||
self.nodes[2].generate(1)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
node_2_bal -= Decimal('10')
|
||||
assert_equal(self.nodes[2].getbalance(), node_2_bal)
|
||||
node_0_bal = self.check_fee_amount(self.nodes[0].getbalance(), node_0_bal + Decimal('10'), fee_per_byte, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))
|
||||
|
@ -254,18 +254,18 @@ class WalletTest(BitcoinTestFramework):
|
|||
connect_nodes_bi(self.nodes, 0, 1)
|
||||
connect_nodes_bi(self.nodes, 1, 2)
|
||||
connect_nodes_bi(self.nodes, 0, 2)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
|
||||
txid_not_broadcast = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 2)
|
||||
tx_obj_not_broadcast = self.nodes[0].gettransaction(txid_not_broadcast)
|
||||
self.nodes[1].generate(1) # mine a block, tx should not be in there
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
assert_equal(self.nodes[2].getbalance(), node_2_bal) # should not be changed because tx was not broadcasted
|
||||
|
||||
# now broadcast from another node, mine a block, sync, and check the balance
|
||||
self.nodes[1].sendrawtransaction(tx_obj_not_broadcast['hex'])
|
||||
self.nodes[1].generate(1)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
node_2_bal += 2
|
||||
tx_obj_not_broadcast = self.nodes[0].gettransaction(txid_not_broadcast)
|
||||
assert_equal(self.nodes[2].getbalance(), node_2_bal)
|
||||
|
@ -341,7 +341,7 @@ class WalletTest(BitcoinTestFramework):
|
|||
address_to_import = self.nodes[2].getnewaddress()
|
||||
txid = self.nodes[0].sendtoaddress(address_to_import, 1)
|
||||
self.nodes[0].generate(1)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
|
||||
# 2. Import address from node2 to node1
|
||||
self.nodes[1].importaddress(address_to_import)
|
||||
|
@ -367,15 +367,15 @@ class WalletTest(BitcoinTestFramework):
|
|||
coinbase_addr = self.nodes[1].getnewaddress()
|
||||
block_hash = self.nodes[0].generatetoaddress(1, coinbase_addr)[0]
|
||||
coinbase_txid = self.nodes[0].getblock(block_hash)['tx'][0]
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
|
||||
# Check that the txid and balance is found by node1
|
||||
self.nodes[1].gettransaction(coinbase_txid)
|
||||
|
||||
# check if wallet or blockchain maintenance changes the balance
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
blocks = self.nodes[0].generate(2)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
self.sync_all(self.nodes[0:3])
|
||||
balance_nodes = [self.nodes[i].getbalance() for i in range(3)]
|
||||
block_count = self.nodes[0].getblockcount()
|
||||
|
||||
|
|
|
@ -98,7 +98,8 @@ class ListSinceBlockTest (BitcoinTestFramework):
|
|||
self.nodes[2].generate(7)
|
||||
self.log.info('lastblockhash=%s' % (lastblockhash))
|
||||
|
||||
self.sync_all([self.nodes[:2], self.nodes[2:]])
|
||||
self.sync_all(self.nodes[:2])
|
||||
self.sync_all(self.nodes[2:])
|
||||
|
||||
self.join_network()
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue