mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-03 09:56:38 -05:00
Merge bitcoin/bitcoin#26892: test: refactor: simplify p2p_permissions.py by using MiniWallet
8cbd926a2c
test: refactor: simplify p2p_permissions.py by using MiniWallet (Sebastian Falbesoner) Pull request description: This PR simplies the functional test p2p_permissions.py by using MiniWallet in order to avoid manual low-level tx creation. Also, rather than mining 100 blocks manually, the pre-mined chain of the test framework is used, which speeds up the test a little (~2-3 seconds faster on my machine). ACKs for top commit: MarcoFalke: ACK8cbd926a2c
Tree-SHA512: 36cbc2a0f6fb0251c8696cd017163ed30529690736bafd36e80b53007bd02b9030b68fe93b90dc50323526c8b7d8e0abd8f20890d46ff6015d5c632b64a08535
This commit is contained in:
commit
ac4c79a267
1 changed files with 6 additions and 22 deletions
|
@ -7,30 +7,27 @@
|
||||||
Test that permissions are correctly calculated and applied
|
Test that permissions are correctly calculated and applied
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from test_framework.address import ADDRESS_BCRT1_P2WSH_OP_TRUE
|
|
||||||
from test_framework.messages import (
|
from test_framework.messages import (
|
||||||
CTxInWitness,
|
SEQUENCE_FINAL,
|
||||||
tx_from_hex,
|
|
||||||
)
|
)
|
||||||
from test_framework.p2p import P2PDataStore
|
from test_framework.p2p import P2PDataStore
|
||||||
from test_framework.script import (
|
|
||||||
CScript,
|
|
||||||
OP_TRUE,
|
|
||||||
)
|
|
||||||
from test_framework.test_node import ErrorMatch
|
from test_framework.test_node import ErrorMatch
|
||||||
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,
|
||||||
p2p_port,
|
p2p_port,
|
||||||
)
|
)
|
||||||
|
from test_framework.wallet import MiniWallet
|
||||||
|
|
||||||
|
|
||||||
class P2PPermissionsTests(BitcoinTestFramework):
|
class P2PPermissionsTests(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.setup_clean_chain = True
|
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
|
self.wallet.rescan_utxos()
|
||||||
|
|
||||||
self.check_tx_relay()
|
self.check_tx_relay()
|
||||||
|
|
||||||
self.checkpermission(
|
self.checkpermission(
|
||||||
|
@ -94,8 +91,6 @@ class P2PPermissionsTests(BitcoinTestFramework):
|
||||||
self.nodes[1].assert_start_raises_init_error(["-whitebind=noban@127.0.0.1", "-bind=127.0.0.1", "-listen=0"], "Cannot set -bind or -whitebind together with -listen=0", match=ErrorMatch.PARTIAL_REGEX)
|
self.nodes[1].assert_start_raises_init_error(["-whitebind=noban@127.0.0.1", "-bind=127.0.0.1", "-listen=0"], "Cannot set -bind or -whitebind together with -listen=0", match=ErrorMatch.PARTIAL_REGEX)
|
||||||
|
|
||||||
def check_tx_relay(self):
|
def check_tx_relay(self):
|
||||||
block_op_true = self.nodes[0].getblock(self.generatetoaddress(self.nodes[0], 100, ADDRESS_BCRT1_P2WSH_OP_TRUE)[0])
|
|
||||||
|
|
||||||
self.log.debug("Create a connection from a forcerelay peer that rebroadcasts raw txs")
|
self.log.debug("Create a connection from a forcerelay peer that rebroadcasts raw txs")
|
||||||
# A test framework p2p connection is needed to send the raw transaction directly. If a full node was used, it could only
|
# A test framework p2p connection is needed to send the raw transaction directly. If a full node was used, it could only
|
||||||
# rebroadcast via the inv-getdata mechanism. However, even for forcerelay connections, a full node would
|
# rebroadcast via the inv-getdata mechanism. However, even for forcerelay connections, a full node would
|
||||||
|
@ -104,18 +99,7 @@ class P2PPermissionsTests(BitcoinTestFramework):
|
||||||
p2p_rebroadcast_wallet = self.nodes[1].add_p2p_connection(P2PDataStore())
|
p2p_rebroadcast_wallet = self.nodes[1].add_p2p_connection(P2PDataStore())
|
||||||
|
|
||||||
self.log.debug("Send a tx from the wallet initially")
|
self.log.debug("Send a tx from the wallet initially")
|
||||||
tx = tx_from_hex(
|
tx = self.wallet.create_self_transfer(sequence=SEQUENCE_FINAL)['tx']
|
||||||
self.nodes[0].createrawtransaction(
|
|
||||||
inputs=[{
|
|
||||||
'txid': block_op_true['tx'][0],
|
|
||||||
'vout': 0,
|
|
||||||
}], outputs=[{
|
|
||||||
ADDRESS_BCRT1_P2WSH_OP_TRUE: 5,
|
|
||||||
}],
|
|
||||||
replaceable=False),
|
|
||||||
)
|
|
||||||
tx.wit.vtxinwit = [CTxInWitness()]
|
|
||||||
tx.wit.vtxinwit[0].scriptWitness.stack = [CScript([OP_TRUE])]
|
|
||||||
txid = tx.rehash()
|
txid = tx.rehash()
|
||||||
|
|
||||||
self.log.debug("Wait until tx is in node[1]'s mempool")
|
self.log.debug("Wait until tx is in node[1]'s mempool")
|
||||||
|
|
Loading…
Add table
Reference in a new issue