Merge bitcoin/bitcoin#23207: test: Delete generate* calls from TestNode

fac62e6ff5 test: Delete generate* calls from TestNode (MarcoFalke)
fac7f6102f test: Use generate* node RPC, not wallet RPC (MarcoFalke)
faac1cda6e test: Use generate* from TestFramework, not TestNode (MarcoFalke)

Pull request description:

  Deleting the methods is needed for #22567 to pave the way to make it easier to implicitly call the `sync_all` member function.

  Without the methods being deleted, nothing prevents developers from adding calls to it. As history showed, developers *will* add calls to it. For example, see commit eb02dbba3c from today or the first commit in this pull request.

ACKs for top commit:
  stratospher:
    Tested ACK fac62e6.
  brunoerg:
    tACK fac62e6ff5
  promag:
    Code review ACK fac62e6ff5.

Tree-SHA512: 6d4dea8f95ead954acfef2e6a5d98897ce0c2d02265c5b137bb149d0265543bd51d7e8403e1945b9af75df5524ca50064fe1d2a432b25c8abc71bbb28ed6ed53
This commit is contained in:
MarcoFalke committed 2021-10-18 13:06:03 +02:00
commit 2e82af46e2
7 files changed
+28 -16

No files matched your search

+1 -1
View File
@@ -244,7 +244,7 @@ class MempoolPackageLimitsTest(BitcoinTestFramework):
assert_equal(txres["package-error"], "package-mempool-limits") assert_equal(txres["package-error"], "package-mempool-limits")
# Clear mempool and check that the package passes now # Clear mempool and check that the package passes now
node.generate(1) self.generate(node, 1)
assert all([res["allowed"] for res in node.testmempoolaccept(rawtxs=package_hex)]) assert all([res["allowed"] for res in node.testmempoolaccept(rawtxs=package_hex)])
def test_anc_count_limits(self): def test_anc_count_limits(self):
@@ -628,19 +628,19 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
self.sync_all() self.sync_all()
def generate(self, generator, *args, **kwargs): def generate(self, generator, *args, **kwargs):
blocks = generator.generate(*args, **kwargs) blocks = generator.generate(*args, invalid_call=False, **kwargs)
return blocks return blocks
def generateblock(self, generator, *args, **kwargs): def generateblock(self, generator, *args, **kwargs):
blocks = generator.generateblock(*args, **kwargs) blocks = generator.generateblock(*args, invalid_call=False, **kwargs)
return blocks return blocks
def generatetoaddress(self, generator, *args, **kwargs): def generatetoaddress(self, generator, *args, **kwargs):
blocks = generator.generatetoaddress(*args, **kwargs) blocks = generator.generatetoaddress(*args, invalid_call=False, **kwargs)
return blocks return blocks
def generatetodescriptor(self, generator, *args, **kwargs): def generatetodescriptor(self, generator, *args, **kwargs):
blocks = generator.generatetodescriptor(*args, **kwargs) blocks = generator.generatetodescriptor(*args, invalid_call=False, **kwargs)
return blocks return blocks
def sync_blocks(self, nodes=None, wait=1, timeout=60): def sync_blocks(self, nodes=None, wait=1, timeout=60):
+14 -2
View File
@@ -297,9 +297,21 @@ class TestNode():
time.sleep(1.0 / poll_per_s) time.sleep(1.0 / poll_per_s)
self._raise_assertion_error("Unable to retrieve cookie credentials after {}s".format(self.rpc_timeout)) self._raise_assertion_error("Unable to retrieve cookie credentials after {}s".format(self.rpc_timeout))
def generate(self, nblocks, maxtries=1000000): def generate(self, nblocks, maxtries=1000000, **kwargs):
self.log.debug("TestNode.generate() dispatches `generate` call to `generatetoaddress`") self.log.debug("TestNode.generate() dispatches `generate` call to `generatetoaddress`")
return self.generatetoaddress(nblocks=nblocks, address=self.get_deterministic_priv_key().address, maxtries=maxtries) return self.generatetoaddress(nblocks=nblocks, address=self.get_deterministic_priv_key().address, maxtries=maxtries, **kwargs)
def generateblock(self, *args, invalid_call, **kwargs):
assert not invalid_call
return self.__getattr__('generateblock')(*args, **kwargs)
def generatetoaddress(self, *args, invalid_call, **kwargs):
assert not invalid_call
return self.__getattr__('generatetoaddress')(*args, **kwargs)
def generatetodescriptor(self, *args, invalid_call, **kwargs):
assert not invalid_call
return self.__getattr__('generatetodescriptor')(*args, **kwargs)
def get_wallet_rpc(self, wallet_name): def get_wallet_rpc(self, wallet_name):
if self.use_cli: if self.use_cli:
+2 -2
View File
@@ -111,9 +111,9 @@ class MiniWallet:
break break
tx.vin[0].scriptSig = CScript([der_sig + bytes(bytearray([SIGHASH_ALL]))]) tx.vin[0].scriptSig = CScript([der_sig + bytes(bytearray([SIGHASH_ALL]))])
def generate(self, num_blocks): def generate(self, num_blocks, **kwargs):
"""Generate blocks with coinbase outputs to the internal address, and append the outputs to the internal list""" """Generate blocks with coinbase outputs to the internal address, and append the outputs to the internal list"""
blocks = self._test_node.generatetodescriptor(num_blocks, self.get_descriptor()) blocks = self._test_node.generatetodescriptor(num_blocks, self.get_descriptor(), **kwargs)
for b in blocks: for b in blocks:
cb_tx = self._test_node.getblock(blockhash=b, verbosity=2)['tx'][0] cb_tx = self._test_node.getblock(blockhash=b, verbosity=2)['tx'][0]
self._utxos.append({'txid': cb_tx['txid'], 'vout': 0, 'value': cb_tx['vout'][0]['value']}) self._utxos.append({'txid': cb_tx['txid'], 'vout': 0, 'value': cb_tx['vout'][0]['value']})
+1 -1
View File
@@ -84,7 +84,7 @@ class WalletDescriptorTest(BitcoinTestFramework):
send_wrpc = self.nodes[0].get_wallet_rpc("desc1") send_wrpc = self.nodes[0].get_wallet_rpc("desc1")
# Generate some coins # Generate some coins
self.generatetoaddress(send_wrpc, COINBASE_MATURITY + 1, send_wrpc.getnewaddress()) self.generatetoaddress(self.nodes[0], COINBASE_MATURITY + 1, send_wrpc.getnewaddress())
# Make transactions # Make transactions
self.log.info("Test sending and receiving") self.log.info("Test sending and receiving")
+2 -2
View File
@@ -74,7 +74,7 @@ class ImportDescriptorsTest(BitcoinTestFramework):
assert_equal(wpriv.getwalletinfo()['keypoolsize'], 0) assert_equal(wpriv.getwalletinfo()['keypoolsize'], 0)
self.log.info('Mining coins') self.log.info('Mining coins')
self.generatetoaddress(w0, COINBASE_MATURITY + 1, w0.getnewaddress()) self.generatetoaddress(self.nodes[0], COINBASE_MATURITY + 1, w0.getnewaddress())
# RPC importdescriptors ----------------------------------------------- # RPC importdescriptors -----------------------------------------------
@@ -405,7 +405,7 @@ class ImportDescriptorsTest(BitcoinTestFramework):
solvable=True, solvable=True,
ismine=True) ismine=True)
txid = w0.sendtoaddress(address, 49.99995540) txid = w0.sendtoaddress(address, 49.99995540)
self.generatetoaddress(w0, 6, w0.getnewaddress()) self.generatetoaddress(self.nodes[0], 6, w0.getnewaddress())
self.sync_blocks() self.sync_blocks()
tx = wpriv.createrawtransaction([{"txid": txid, "vout": 0}], {w0.getnewaddress(): 49.999}) tx = wpriv.createrawtransaction([{"txid": txid, "vout": 0}], {w0.getnewaddress(): 49.999})
signed_tx = wpriv.signrawtransactionwithwallet(tx) signed_tx = wpriv.signrawtransactionwithwallet(tx)
@@ -63,7 +63,7 @@ class TransactionTimeRescanTest(BitcoinTestFramework):
# generate some btc to create transactions and check blockcount # generate some btc to create transactions and check blockcount
initial_mine = COINBASE_MATURITY + 1 initial_mine = COINBASE_MATURITY + 1
minernode.generatetoaddress(initial_mine, m1) self.generatetoaddress(minernode, initial_mine, m1)
assert_equal(minernode.getblockcount(), initial_mine + 200) assert_equal(minernode.getblockcount(), initial_mine + 200)
# synchronize nodes and time # synchronize nodes and time
@@ -76,7 +76,7 @@ class TransactionTimeRescanTest(BitcoinTestFramework):
miner_wallet.sendtoaddress(wo1, 10) miner_wallet.sendtoaddress(wo1, 10)
# generate blocks and check blockcount # generate blocks and check blockcount
minernode.generatetoaddress(COINBASE_MATURITY, m1) self.generatetoaddress(minernode, COINBASE_MATURITY, m1)
assert_equal(minernode.getblockcount(), initial_mine + 300) assert_equal(minernode.getblockcount(), initial_mine + 300)
# synchronize nodes and time # synchronize nodes and time
@@ -89,7 +89,7 @@ class TransactionTimeRescanTest(BitcoinTestFramework):
miner_wallet.sendtoaddress(wo2, 5) miner_wallet.sendtoaddress(wo2, 5)
# generate blocks and check blockcount # generate blocks and check blockcount
minernode.generatetoaddress(COINBASE_MATURITY, m1) self.generatetoaddress(minernode, COINBASE_MATURITY, m1)
assert_equal(minernode.getblockcount(), initial_mine + 400) assert_equal(minernode.getblockcount(), initial_mine + 400)
# synchronize nodes and time # synchronize nodes and time
@@ -102,7 +102,7 @@ class TransactionTimeRescanTest(BitcoinTestFramework):
miner_wallet.sendtoaddress(wo3, 1) miner_wallet.sendtoaddress(wo3, 1)
# generate more blocks and check blockcount # generate more blocks and check blockcount
minernode.generatetoaddress(COINBASE_MATURITY, m1) self.generatetoaddress(minernode, COINBASE_MATURITY, m1)
assert_equal(minernode.getblockcount(), initial_mine + 500) assert_equal(minernode.getblockcount(), initial_mine + 500)
self.log.info('Check user\'s final balance and transaction count') self.log.info('Check user\'s final balance and transaction count')