Skip to content

Commit

Permalink
test: add conflicting topology test case
Browse files Browse the repository at this point in the history
We want to ensure that even if topologies
that are acceptable are relaxed, like
removing package-not-child-with-unconfirmed-parents,
that we don't end up accepting packages we shouldn't.
  • Loading branch information
instagibbs committed May 8, 2024
1 parent 43a66c5 commit d612e8c
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions test/functional/rpc_packages.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
fill_mempool,
)
from test_framework.wallet import (
COIN,
DEFAULT_FEE,
MiniWallet,
)
Expand Down Expand Up @@ -237,6 +238,34 @@ def test_conflicting(self):
{"txid": tx2["txid"], "wtxid": tx2["wtxid"], "package-error": "conflict-in-package"}
])

# Add a child that spends both at high feerate to submit via submitpackage
tx_child = self.wallet.create_self_transfer_multi(
fee_per_output=int(DEFAULT_FEE * 5 * COIN),
utxos_to_spend=[tx1["new_utxo"], tx2["new_utxo"]],
)

testres = node.testmempoolaccept([tx1["hex"], tx2["hex"], tx_child["hex"]])

assert_equal(testres, [
{"txid": tx1["txid"], "wtxid": tx1["wtxid"], "package-error": "conflict-in-package"},
{"txid": tx2["txid"], "wtxid": tx2["wtxid"], "package-error": "conflict-in-package"},
{"txid": tx_child["txid"], "wtxid": tx_child["wtxid"], "package-error": "conflict-in-package"}
])

submitres = node.submitpackage([tx1["hex"], tx2["hex"], tx_child["hex"]])
assert_equal(submitres, {'package_msg': 'conflict-in-package', 'tx-results': {}, 'replaced-transactions': []})

# Submit tx1 to mempool, then try the same package again
node.sendrawtransaction(tx1["hex"])

submitres = node.submitpackage([tx1["hex"], tx2["hex"], tx_child["hex"]])
assert_equal(submitres, {'package_msg': 'conflict-in-package', 'tx-results': {}, 'replaced-transactions': []})

# ... and without the in-mempool ancestor tx1 included in the call
submitres = node.submitpackage([tx2["hex"], tx_child["hex"]])

assert_equal(submitres, {'package_msg': 'package-not-child-with-unconfirmed-parents', 'tx-results': {}, 'replaced-transactions': []})

def test_rbf(self):
node = self.nodes[0]

Expand Down

0 comments on commit d612e8c

Please sign in to comment.