mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-14 12:43:40 +02:00
Merge 7794d9d93f into merged_master (Bitcoin PR bitcoin/bitcoin#27735)
This commit is contained in:
commit
c862d3cdba
3 changed files with 33 additions and 15 deletions
|
|
@ -28,9 +28,6 @@ assert CUSTOM_DESCENDANT_LIMIT >= CUSTOM_ANCESTOR_LIMIT
|
|||
|
||||
|
||||
class MempoolPackagesTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.extra_args = [
|
||||
|
|
@ -49,10 +46,6 @@ class MempoolPackagesTest(BitcoinTestFramework):
|
|||
self.wallet = MiniWallet(self.nodes[0])
|
||||
self.wallet.rescan_utxos()
|
||||
|
||||
if self.is_specified_wallet_compiled():
|
||||
self.nodes[0].createwallet("watch_wallet", disable_private_keys=True)
|
||||
self.nodes[0].importaddress(self.wallet.get_address())
|
||||
|
||||
peer_inv_store = self.nodes[0].add_p2p_connection(P2PTxInvStore()) # keep track of invs
|
||||
|
||||
# DEFAULT_ANCESTOR_LIMIT transactions off a confirmed tx should be fine
|
||||
|
|
@ -65,13 +58,6 @@ class MempoolPackagesTest(BitcoinTestFramework):
|
|||
ancestor_vsize += t["tx"].get_vsize()
|
||||
ancestor_fees += t["fee"]
|
||||
self.wallet.sendrawtransaction(from_node=self.nodes[0], tx_hex=t["hex"])
|
||||
# Check that listunspent ancestor{count, size, fees} yield the correct results
|
||||
if self.is_specified_wallet_compiled():
|
||||
wallet_unspent = self.nodes[0].listunspent(minconf=0)
|
||||
this_unspent = next(utxo_info for utxo_info in wallet_unspent if utxo_info["txid"] == t["txid"])
|
||||
assert_equal(this_unspent['ancestorcount'], i + 1)
|
||||
assert_equal(this_unspent['ancestorsize'], ancestor_vsize)
|
||||
assert_equal(this_unspent['ancestorfees'], ancestor_fees) # ELEMENTS
|
||||
|
||||
# Wait until mempool transactions have passed initial broadcast (sent inv and received getdata)
|
||||
# Otherwise, getrawmempool may be inconsistent with getmempoolentry if unbroadcast changes in between
|
||||
|
|
|
|||
|
|
@ -297,7 +297,7 @@ BASE_SCRIPTS = [
|
|||
'rpc_invalidateblock.py',
|
||||
'feature_utxo_set_hash.py',
|
||||
'feature_rbf.py',
|
||||
'mempool_packages.py --descriptors', # ELEMENTS: specify descriptors until it's default
|
||||
'mempool_packages.py',
|
||||
'mempool_package_onemore.py',
|
||||
'mempool_package_limits.py',
|
||||
# ELEMENTS: no versionbits in use
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@ from itertools import product
|
|||
|
||||
from test_framework.blocktools import COINBASE_MATURITY
|
||||
from test_framework.descriptors import descsum_create
|
||||
from test_framework.messages import (
|
||||
DEFAULT_ANCESTOR_LIMIT,
|
||||
)
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import (
|
||||
assert_array_result,
|
||||
|
|
@ -17,6 +20,7 @@ from test_framework.util import (
|
|||
find_vout_for_address,
|
||||
)
|
||||
from test_framework.wallet_util import test_address
|
||||
from test_framework.wallet import MiniWallet
|
||||
|
||||
NOT_A_NUMBER_OR_STRING = "Amount is not a number or string"
|
||||
OUT_OF_RANGE = "Amount out of range"
|
||||
|
|
@ -800,6 +804,34 @@ class WalletTest(BitcoinTestFramework):
|
|||
|
||||
# zeroconf_wallet.sendtoaddress(zeroconf_wallet.getnewaddress(), Decimal('0.5'))
|
||||
|
||||
self.test_chain_listunspent()
|
||||
|
||||
def test_chain_listunspent(self):
|
||||
if not self.options.descriptors:
|
||||
return
|
||||
self.wallet = MiniWallet(self.nodes[0])
|
||||
self.nodes[0].get_wallet_rpc(self.default_wallet_name).sendtoaddress(self.wallet.get_address(), "5")
|
||||
self.generate(self.wallet, 1, sync_fun=self.no_op)
|
||||
self.nodes[0].createwallet("watch_wallet", disable_private_keys=True)
|
||||
watch_wallet = self.nodes[0].get_wallet_rpc("watch_wallet")
|
||||
watch_wallet.importaddress(self.wallet.get_address())
|
||||
|
||||
# DEFAULT_ANCESTOR_LIMIT transactions off a confirmed tx should be fine
|
||||
chain = self.wallet.create_self_transfer_chain(chain_length=DEFAULT_ANCESTOR_LIMIT)
|
||||
ancestor_vsize = 0
|
||||
ancestor_fees = Decimal(0)
|
||||
|
||||
for i, t in enumerate(chain):
|
||||
ancestor_vsize += t["tx"].get_vsize()
|
||||
ancestor_fees += t["fee"]
|
||||
self.wallet.sendrawtransaction(from_node=self.nodes[0], tx_hex=t["hex"])
|
||||
# Check that listunspent ancestor{count, size, fees} yield the correct results
|
||||
wallet_unspent = watch_wallet.listunspent(minconf=0)
|
||||
this_unspent = next(utxo_info for utxo_info in wallet_unspent if utxo_info["txid"] == t["txid"])
|
||||
assert_equal(this_unspent['ancestorcount'], i + 1)
|
||||
assert_equal(this_unspent['ancestorsize'], ancestor_vsize)
|
||||
assert_equal(this_unspent['ancestorfees'], ancestor_fees) # ELEMENTS
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
WalletTest().main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue