scripted-diff: Rename mininode_lock to p2p_lock

-BEGIN VERIFY SCRIPT-
sed -i 's/mininode_lock/p2p_lock/g' $(git grep -l "mininode_lock")
-END VERIFY SCRIPT-
This commit is contained in:
John Newbery 2020-07-19 14:47:05 +07:00
parent d254e6e795
commit 9e2897d020
14 changed files with 97 additions and 97 deletions

View file

@ -18,7 +18,7 @@ from test_framework.blocktools import (create_block, create_coinbase)
from test_framework.messages import CInv, MSG_BLOCK from test_framework.messages import CInv, MSG_BLOCK
from test_framework.mininode import ( from test_framework.mininode import (
P2PInterface, P2PInterface,
mininode_lock, p2p_lock,
msg_block, msg_block,
msg_getdata, msg_getdata,
) )
@ -203,13 +203,13 @@ class ExampleTest(BitcoinTestFramework):
# wait_until() will loop until a predicate condition is met. Use it to test properties of the # wait_until() will loop until a predicate condition is met. Use it to test properties of the
# P2PInterface objects. # P2PInterface objects.
wait_until(lambda: sorted(blocks) == sorted(list(self.nodes[2].p2p.block_receive_map.keys())), timeout=5, lock=mininode_lock) wait_until(lambda: sorted(blocks) == sorted(list(self.nodes[2].p2p.block_receive_map.keys())), timeout=5, lock=p2p_lock)
self.log.info("Check that each block was received only once") self.log.info("Check that each block was received only once")
# The network thread uses a global lock on data access to the P2PConnection objects when sending and receiving # The network thread uses a global lock on data access to the P2PConnection objects when sending and receiving
# messages. The test thread should acquire the global lock before accessing any P2PConnection data to avoid locking # messages. The test thread should acquire the global lock before accessing any P2PConnection data to avoid locking
# and synchronization issues. Note wait_until() acquires this global lock when testing the predicate. # and synchronization issues. Note wait_until() acquires this global lock when testing the predicate.
with mininode_lock: with p2p_lock:
for block in self.nodes[2].p2p.block_receive_map.values(): for block in self.nodes[2].p2p.block_receive_map.values():
assert_equal(block, 1) assert_equal(block, 1)

View file

@ -12,7 +12,7 @@ import re
from test_framework.blocktools import create_block, create_coinbase from test_framework.blocktools import create_block, create_coinbase
from test_framework.messages import msg_block from test_framework.messages import msg_block
from test_framework.mininode import P2PInterface, mininode_lock from test_framework.mininode import P2PInterface, p2p_lock
from test_framework.test_framework import BitcoinTestFramework from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import wait_until from test_framework.util import wait_until
@ -91,7 +91,7 @@ class VersionBitsWarningTest(BitcoinTestFramework):
# Generating one block guarantees that we'll get out of IBD # Generating one block guarantees that we'll get out of IBD
node.generatetoaddress(1, node_deterministic_address) node.generatetoaddress(1, node_deterministic_address)
wait_until(lambda: not node.getblockchaininfo()['initialblockdownload'], timeout=10, lock=mininode_lock) wait_until(lambda: not node.getblockchaininfo()['initialblockdownload'], timeout=10, lock=p2p_lock)
# Generating one more block will be enough to generate an error. # Generating one more block will be enough to generate an error.
node.generatetoaddress(1, node_deterministic_address) node.generatetoaddress(1, node_deterministic_address)
# Check that get*info() shows the versionbits unknown rules warning # Check that get*info() shows the versionbits unknown rules warning

View file

@ -11,7 +11,7 @@ import random
from test_framework.blocktools import create_block, create_coinbase, add_witness_commitment from test_framework.blocktools import create_block, create_coinbase, add_witness_commitment
from test_framework.messages import BlockTransactions, BlockTransactionsRequest, calculate_shortid, CBlock, CBlockHeader, CInv, COutPoint, CTransaction, CTxIn, CTxInWitness, CTxOut, FromHex, HeaderAndShortIDs, msg_no_witness_block, msg_no_witness_blocktxn, msg_cmpctblock, msg_getblocktxn, msg_getdata, msg_getheaders, msg_headers, msg_inv, msg_sendcmpct, msg_sendheaders, msg_tx, msg_block, msg_blocktxn, MSG_BLOCK, MSG_CMPCT_BLOCK, MSG_WITNESS_FLAG, NODE_NETWORK, P2PHeaderAndShortIDs, PrefilledTransaction, ser_uint256, ToHex from test_framework.messages import BlockTransactions, BlockTransactionsRequest, calculate_shortid, CBlock, CBlockHeader, CInv, COutPoint, CTransaction, CTxIn, CTxInWitness, CTxOut, FromHex, HeaderAndShortIDs, msg_no_witness_block, msg_no_witness_blocktxn, msg_cmpctblock, msg_getblocktxn, msg_getdata, msg_getheaders, msg_headers, msg_inv, msg_sendcmpct, msg_sendheaders, msg_tx, msg_block, msg_blocktxn, MSG_BLOCK, MSG_CMPCT_BLOCK, MSG_WITNESS_FLAG, NODE_NETWORK, P2PHeaderAndShortIDs, PrefilledTransaction, ser_uint256, ToHex
from test_framework.mininode import mininode_lock, P2PInterface from test_framework.mininode import p2p_lock, P2PInterface
from test_framework.script import CScript, OP_TRUE, OP_DROP from test_framework.script import CScript, OP_TRUE, OP_DROP
from test_framework.test_framework import BitcoinTestFramework from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import assert_equal, wait_until, softfork_active from test_framework.util import assert_equal, wait_until, softfork_active
@ -48,12 +48,12 @@ class TestP2PConn(P2PInterface):
self.block_announced = True self.block_announced = True
self.announced_blockhashes.add(x.hash) self.announced_blockhashes.add(x.hash)
# Requires caller to hold mininode_lock # Requires caller to hold p2p_lock
def received_block_announcement(self): def received_block_announcement(self):
return self.block_announced return self.block_announced
def clear_block_announcement(self): def clear_block_announcement(self):
with mininode_lock: with p2p_lock:
self.block_announced = False self.block_announced = False
self.last_message.pop("inv", None) self.last_message.pop("inv", None)
self.last_message.pop("headers", None) self.last_message.pop("headers", None)
@ -73,7 +73,7 @@ class TestP2PConn(P2PInterface):
def request_headers_and_sync(self, locator, hashstop=0): def request_headers_and_sync(self, locator, hashstop=0):
self.clear_block_announcement() self.clear_block_announcement()
self.get_headers(locator, hashstop) self.get_headers(locator, hashstop)
wait_until(self.received_block_announcement, timeout=30, lock=mininode_lock) wait_until(self.received_block_announcement, timeout=30, lock=p2p_lock)
self.clear_block_announcement() self.clear_block_announcement()
# Block until a block announcement for a particular block hash is # Block until a block announcement for a particular block hash is
@ -81,7 +81,7 @@ class TestP2PConn(P2PInterface):
def wait_for_block_announcement(self, block_hash, timeout=30): def wait_for_block_announcement(self, block_hash, timeout=30):
def received_hash(): def received_hash():
return (block_hash in self.announced_blockhashes) return (block_hash in self.announced_blockhashes)
wait_until(received_hash, timeout=timeout, lock=mininode_lock) wait_until(received_hash, timeout=timeout, lock=p2p_lock)
def send_await_disconnect(self, message, timeout=30): def send_await_disconnect(self, message, timeout=30):
"""Sends a message to the node and wait for disconnect. """Sends a message to the node and wait for disconnect.
@ -89,7 +89,7 @@ class TestP2PConn(P2PInterface):
This is used when we want to send a message into the node that we expect This is used when we want to send a message into the node that we expect
will get us disconnected, eg an invalid block.""" will get us disconnected, eg an invalid block."""
self.send_message(message) self.send_message(message)
wait_until(lambda: not self.is_connected, timeout=timeout, lock=mininode_lock) wait_until(lambda: not self.is_connected, timeout=timeout, lock=p2p_lock)
class CompactBlocksTest(BitcoinTestFramework): class CompactBlocksTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
@ -154,8 +154,8 @@ class CompactBlocksTest(BitcoinTestFramework):
# Make sure we get a SENDCMPCT message from our peer # Make sure we get a SENDCMPCT message from our peer
def received_sendcmpct(): def received_sendcmpct():
return (len(test_node.last_sendcmpct) > 0) return (len(test_node.last_sendcmpct) > 0)
wait_until(received_sendcmpct, timeout=30, lock=mininode_lock) wait_until(received_sendcmpct, timeout=30, lock=p2p_lock)
with mininode_lock: with p2p_lock:
# Check that the first version received is the preferred one # Check that the first version received is the preferred one
assert_equal(test_node.last_sendcmpct[0].version, preferred_version) assert_equal(test_node.last_sendcmpct[0].version, preferred_version)
# And that we receive versions down to 1. # And that we receive versions down to 1.
@ -170,7 +170,7 @@ class CompactBlocksTest(BitcoinTestFramework):
peer.wait_for_block_announcement(block_hash, timeout=30) peer.wait_for_block_announcement(block_hash, timeout=30)
assert peer.block_announced assert peer.block_announced
with mininode_lock: with p2p_lock:
assert predicate(peer), ( assert predicate(peer), (
"block_hash={!r}, cmpctblock={!r}, inv={!r}".format( "block_hash={!r}, cmpctblock={!r}, inv={!r}".format(
block_hash, peer.last_message.get("cmpctblock", None), peer.last_message.get("inv", None))) block_hash, peer.last_message.get("cmpctblock", None), peer.last_message.get("inv", None)))
@ -294,11 +294,11 @@ class CompactBlocksTest(BitcoinTestFramework):
block.rehash() block.rehash()
# Wait until the block was announced (via compact blocks) # Wait until the block was announced (via compact blocks)
wait_until(lambda: "cmpctblock" in test_node.last_message, timeout=30, lock=mininode_lock) wait_until(lambda: "cmpctblock" in test_node.last_message, timeout=30, lock=p2p_lock)
# Now fetch and check the compact block # Now fetch and check the compact block
header_and_shortids = None header_and_shortids = None
with mininode_lock: with p2p_lock:
# Convert the on-the-wire representation to absolute indexes # Convert the on-the-wire representation to absolute indexes
header_and_shortids = HeaderAndShortIDs(test_node.last_message["cmpctblock"].header_and_shortids) header_and_shortids = HeaderAndShortIDs(test_node.last_message["cmpctblock"].header_and_shortids)
self.check_compactblock_construction_from_block(version, header_and_shortids, block_hash, block) self.check_compactblock_construction_from_block(version, header_and_shortids, block_hash, block)
@ -308,11 +308,11 @@ class CompactBlocksTest(BitcoinTestFramework):
inv = CInv(MSG_CMPCT_BLOCK, block_hash) inv = CInv(MSG_CMPCT_BLOCK, block_hash)
test_node.send_message(msg_getdata([inv])) test_node.send_message(msg_getdata([inv]))
wait_until(lambda: "cmpctblock" in test_node.last_message, timeout=30, lock=mininode_lock) wait_until(lambda: "cmpctblock" in test_node.last_message, timeout=30, lock=p2p_lock)
# Now fetch and check the compact block # Now fetch and check the compact block
header_and_shortids = None header_and_shortids = None
with mininode_lock: with p2p_lock:
# Convert the on-the-wire representation to absolute indexes # Convert the on-the-wire representation to absolute indexes
header_and_shortids = HeaderAndShortIDs(test_node.last_message["cmpctblock"].header_and_shortids) header_and_shortids = HeaderAndShortIDs(test_node.last_message["cmpctblock"].header_and_shortids)
self.check_compactblock_construction_from_block(version, header_and_shortids, block_hash, block) self.check_compactblock_construction_from_block(version, header_and_shortids, block_hash, block)
@ -378,7 +378,7 @@ class CompactBlocksTest(BitcoinTestFramework):
if announce == "inv": if announce == "inv":
test_node.send_message(msg_inv([CInv(MSG_BLOCK, block.sha256)])) test_node.send_message(msg_inv([CInv(MSG_BLOCK, block.sha256)]))
wait_until(lambda: "getheaders" in test_node.last_message, timeout=30, lock=mininode_lock) wait_until(lambda: "getheaders" in test_node.last_message, timeout=30, lock=p2p_lock)
test_node.send_header_for_blocks([block]) test_node.send_header_for_blocks([block])
else: else:
test_node.send_header_for_blocks([block]) test_node.send_header_for_blocks([block])
@ -397,7 +397,7 @@ class CompactBlocksTest(BitcoinTestFramework):
test_node.send_and_ping(msg_cmpctblock(comp_block.to_p2p())) test_node.send_and_ping(msg_cmpctblock(comp_block.to_p2p()))
assert_equal(int(node.getbestblockhash(), 16), block.hashPrevBlock) assert_equal(int(node.getbestblockhash(), 16), block.hashPrevBlock)
# Expect a getblocktxn message. # Expect a getblocktxn message.
with mininode_lock: with p2p_lock:
assert "getblocktxn" in test_node.last_message assert "getblocktxn" in test_node.last_message
absolute_indexes = test_node.last_message["getblocktxn"].block_txn_request.to_absolute() absolute_indexes = test_node.last_message["getblocktxn"].block_txn_request.to_absolute()
assert_equal(absolute_indexes, [0]) # should be a coinbase request assert_equal(absolute_indexes, [0]) # should be a coinbase request
@ -439,7 +439,7 @@ class CompactBlocksTest(BitcoinTestFramework):
def test_getblocktxn_response(compact_block, peer, expected_result): def test_getblocktxn_response(compact_block, peer, expected_result):
msg = msg_cmpctblock(compact_block.to_p2p()) msg = msg_cmpctblock(compact_block.to_p2p())
peer.send_and_ping(msg) peer.send_and_ping(msg)
with mininode_lock: with p2p_lock:
assert "getblocktxn" in peer.last_message assert "getblocktxn" in peer.last_message
absolute_indexes = peer.last_message["getblocktxn"].block_txn_request.to_absolute() absolute_indexes = peer.last_message["getblocktxn"].block_txn_request.to_absolute()
assert_equal(absolute_indexes, expected_result) assert_equal(absolute_indexes, expected_result)
@ -504,13 +504,13 @@ class CompactBlocksTest(BitcoinTestFramework):
assert tx.hash in mempool assert tx.hash in mempool
# Clear out last request. # Clear out last request.
with mininode_lock: with p2p_lock:
test_node.last_message.pop("getblocktxn", None) test_node.last_message.pop("getblocktxn", None)
# Send compact block # Send compact block
comp_block.initialize_from_block(block, prefill_list=[0], use_witness=with_witness) comp_block.initialize_from_block(block, prefill_list=[0], use_witness=with_witness)
test_tip_after_message(node, test_node, msg_cmpctblock(comp_block.to_p2p()), block.sha256) test_tip_after_message(node, test_node, msg_cmpctblock(comp_block.to_p2p()), block.sha256)
with mininode_lock: with p2p_lock:
# Shouldn't have gotten a request for any transaction # Shouldn't have gotten a request for any transaction
assert "getblocktxn" not in test_node.last_message assert "getblocktxn" not in test_node.last_message
@ -537,7 +537,7 @@ class CompactBlocksTest(BitcoinTestFramework):
comp_block.initialize_from_block(block, prefill_list=[0], use_witness=(version == 2)) comp_block.initialize_from_block(block, prefill_list=[0], use_witness=(version == 2))
test_node.send_and_ping(msg_cmpctblock(comp_block.to_p2p())) test_node.send_and_ping(msg_cmpctblock(comp_block.to_p2p()))
absolute_indexes = [] absolute_indexes = []
with mininode_lock: with p2p_lock:
assert "getblocktxn" in test_node.last_message assert "getblocktxn" in test_node.last_message
absolute_indexes = test_node.last_message["getblocktxn"].block_txn_request.to_absolute() absolute_indexes = test_node.last_message["getblocktxn"].block_txn_request.to_absolute()
assert_equal(absolute_indexes, [6, 7, 8, 9, 10]) assert_equal(absolute_indexes, [6, 7, 8, 9, 10])
@ -588,10 +588,10 @@ class CompactBlocksTest(BitcoinTestFramework):
num_to_request = random.randint(1, len(block.vtx)) num_to_request = random.randint(1, len(block.vtx))
msg.block_txn_request.from_absolute(sorted(random.sample(range(len(block.vtx)), num_to_request))) msg.block_txn_request.from_absolute(sorted(random.sample(range(len(block.vtx)), num_to_request)))
test_node.send_message(msg) test_node.send_message(msg)
wait_until(lambda: "blocktxn" in test_node.last_message, timeout=10, lock=mininode_lock) wait_until(lambda: "blocktxn" in test_node.last_message, timeout=10, lock=p2p_lock)
[tx.calc_sha256() for tx in block.vtx] [tx.calc_sha256() for tx in block.vtx]
with mininode_lock: with p2p_lock:
assert_equal(test_node.last_message["blocktxn"].block_transactions.blockhash, int(block_hash, 16)) assert_equal(test_node.last_message["blocktxn"].block_transactions.blockhash, int(block_hash, 16))
all_indices = msg.block_txn_request.to_absolute() all_indices = msg.block_txn_request.to_absolute()
for index in all_indices: for index in all_indices:
@ -611,11 +611,11 @@ class CompactBlocksTest(BitcoinTestFramework):
# allowed depth for a blocktxn response. # allowed depth for a blocktxn response.
block_hash = node.getblockhash(current_height) block_hash = node.getblockhash(current_height)
msg.block_txn_request = BlockTransactionsRequest(int(block_hash, 16), [0]) msg.block_txn_request = BlockTransactionsRequest(int(block_hash, 16), [0])
with mininode_lock: with p2p_lock:
test_node.last_message.pop("block", None) test_node.last_message.pop("block", None)
test_node.last_message.pop("blocktxn", None) test_node.last_message.pop("blocktxn", None)
test_node.send_and_ping(msg) test_node.send_and_ping(msg)
with mininode_lock: with p2p_lock:
test_node.last_message["block"].block.calc_sha256() test_node.last_message["block"].block.calc_sha256()
assert_equal(test_node.last_message["block"].block.sha256, int(block_hash, 16)) assert_equal(test_node.last_message["block"].block.sha256, int(block_hash, 16))
assert "blocktxn" not in test_node.last_message assert "blocktxn" not in test_node.last_message
@ -628,21 +628,21 @@ class CompactBlocksTest(BitcoinTestFramework):
for _ in range(MAX_CMPCTBLOCK_DEPTH + 1): for _ in range(MAX_CMPCTBLOCK_DEPTH + 1):
test_node.clear_block_announcement() test_node.clear_block_announcement()
new_blocks.append(node.generate(1)[0]) new_blocks.append(node.generate(1)[0])
wait_until(test_node.received_block_announcement, timeout=30, lock=mininode_lock) wait_until(test_node.received_block_announcement, timeout=30, lock=p2p_lock)
test_node.clear_block_announcement() test_node.clear_block_announcement()
test_node.send_message(msg_getdata([CInv(MSG_CMPCT_BLOCK, int(new_blocks[0], 16))])) test_node.send_message(msg_getdata([CInv(MSG_CMPCT_BLOCK, int(new_blocks[0], 16))]))
wait_until(lambda: "cmpctblock" in test_node.last_message, timeout=30, lock=mininode_lock) wait_until(lambda: "cmpctblock" in test_node.last_message, timeout=30, lock=p2p_lock)
test_node.clear_block_announcement() test_node.clear_block_announcement()
node.generate(1) node.generate(1)
wait_until(test_node.received_block_announcement, timeout=30, lock=mininode_lock) wait_until(test_node.received_block_announcement, timeout=30, lock=p2p_lock)
test_node.clear_block_announcement() test_node.clear_block_announcement()
with mininode_lock: with p2p_lock:
test_node.last_message.pop("block", None) test_node.last_message.pop("block", None)
test_node.send_message(msg_getdata([CInv(MSG_CMPCT_BLOCK, int(new_blocks[0], 16))])) test_node.send_message(msg_getdata([CInv(MSG_CMPCT_BLOCK, int(new_blocks[0], 16))]))
wait_until(lambda: "block" in test_node.last_message, timeout=30, lock=mininode_lock) wait_until(lambda: "block" in test_node.last_message, timeout=30, lock=p2p_lock)
with mininode_lock: with p2p_lock:
test_node.last_message["block"].block.calc_sha256() test_node.last_message["block"].block.calc_sha256()
assert_equal(test_node.last_message["block"].block.sha256, int(new_blocks[0], 16)) assert_equal(test_node.last_message["block"].block.sha256, int(new_blocks[0], 16))
@ -670,10 +670,10 @@ class CompactBlocksTest(BitcoinTestFramework):
# (to avoid fingerprinting attacks). # (to avoid fingerprinting attacks).
msg = msg_getblocktxn() msg = msg_getblocktxn()
msg.block_txn_request = BlockTransactionsRequest(block.sha256, [0]) msg.block_txn_request = BlockTransactionsRequest(block.sha256, [0])
with mininode_lock: with p2p_lock:
test_node.last_message.pop("blocktxn", None) test_node.last_message.pop("blocktxn", None)
test_node.send_and_ping(msg) test_node.send_and_ping(msg)
with mininode_lock: with p2p_lock:
assert "blocktxn" not in test_node.last_message assert "blocktxn" not in test_node.last_message
def test_end_to_end_block_relay(self, listeners): def test_end_to_end_block_relay(self, listeners):
@ -689,8 +689,8 @@ class CompactBlocksTest(BitcoinTestFramework):
node.submitblock(ToHex(block)) node.submitblock(ToHex(block))
for l in listeners: for l in listeners:
wait_until(lambda: "cmpctblock" in l.last_message, timeout=30, lock=mininode_lock) wait_until(lambda: "cmpctblock" in l.last_message, timeout=30, lock=p2p_lock)
with mininode_lock: with p2p_lock:
for l in listeners: for l in listeners:
l.last_message["cmpctblock"].header_and_shortids.header.calc_sha256() l.last_message["cmpctblock"].header_and_shortids.header.calc_sha256()
assert_equal(l.last_message["cmpctblock"].header_and_shortids.header.sha256, block.sha256) assert_equal(l.last_message["cmpctblock"].header_and_shortids.header.sha256, block.sha256)
@ -747,7 +747,7 @@ class CompactBlocksTest(BitcoinTestFramework):
cmpct_block.initialize_from_block(block) cmpct_block.initialize_from_block(block)
msg = msg_cmpctblock(cmpct_block.to_p2p()) msg = msg_cmpctblock(cmpct_block.to_p2p())
peer.send_and_ping(msg) peer.send_and_ping(msg)
with mininode_lock: with p2p_lock:
assert "getblocktxn" in peer.last_message assert "getblocktxn" in peer.last_message
return block, cmpct_block return block, cmpct_block

View file

@ -7,7 +7,7 @@
from decimal import Decimal from decimal import Decimal
from test_framework.messages import MSG_TX, MSG_WTX, msg_feefilter from test_framework.messages import MSG_TX, MSG_WTX, msg_feefilter
from test_framework.mininode import mininode_lock, P2PInterface from test_framework.mininode import p2p_lock, P2PInterface
from test_framework.test_framework import BitcoinTestFramework from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import assert_equal from test_framework.util import assert_equal
@ -23,7 +23,7 @@ class FeefilterConn(P2PInterface):
self.feefilter_received = True self.feefilter_received = True
def assert_feefilter_received(self, recv: bool): def assert_feefilter_received(self, recv: bool):
with mininode_lock: with p2p_lock:
assert_equal(self.feefilter_received, recv) assert_equal(self.feefilter_received, recv)
@ -42,7 +42,7 @@ class TestP2PConn(P2PInterface):
self.wait_until(lambda: invs_expected == sorted(self.txinvs), timeout=60) self.wait_until(lambda: invs_expected == sorted(self.txinvs), timeout=60)
def clear_invs(self): def clear_invs(self):
with mininode_lock: with p2p_lock:
self.txinvs = [] self.txinvs = []

View file

@ -19,7 +19,7 @@ from test_framework.messages import (
msg_mempool, msg_mempool,
msg_version, msg_version,
) )
from test_framework.mininode import P2PInterface, mininode_lock from test_framework.mininode import P2PInterface, p2p_lock
from test_framework.script import MAX_SCRIPT_ELEMENT_SIZE from test_framework.script import MAX_SCRIPT_ELEMENT_SIZE
from test_framework.test_framework import BitcoinTestFramework from test_framework.test_framework import BitcoinTestFramework
@ -60,22 +60,22 @@ class P2PBloomFilter(P2PInterface):
@property @property
def tx_received(self): def tx_received(self):
with mininode_lock: with p2p_lock:
return self._tx_received return self._tx_received
@tx_received.setter @tx_received.setter
def tx_received(self, value): def tx_received(self, value):
with mininode_lock: with p2p_lock:
self._tx_received = value self._tx_received = value
@property @property
def merkleblock_received(self): def merkleblock_received(self):
with mininode_lock: with p2p_lock:
return self._merkleblock_received return self._merkleblock_received
@merkleblock_received.setter @merkleblock_received.setter
def merkleblock_received(self, value): def merkleblock_received(self, value):
with mininode_lock: with p2p_lock:
self._merkleblock_received = value self._merkleblock_received = value

View file

@ -14,7 +14,7 @@ from test_framework.messages import (
) )
from test_framework.mininode import ( from test_framework.mininode import (
P2PInterface, P2PInterface,
mininode_lock p2p_lock
) )
from test_framework.test_framework import BitcoinTestFramework from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import ( from test_framework.util import (
@ -44,7 +44,7 @@ class AddrReceiver(P2PInterface):
self.received_addrs = None self.received_addrs = None
def get_received_addrs(self): def get_received_addrs(self):
with mininode_lock: with p2p_lock:
return self.received_addrs return self.received_addrs
def on_addr(self, message): def on_addr(self, message):

View file

@ -17,7 +17,7 @@ from test_framework.messages import (
msg_ping, msg_ping,
msg_version, msg_version,
) )
from test_framework.mininode import mininode_lock, P2PInterface from test_framework.mininode import p2p_lock, P2PInterface
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,
@ -114,9 +114,9 @@ class P2PLeakTest(BitcoinTestFramework):
# verack, since we never sent one # verack, since we never sent one
no_verack_idle_peer.wait_for_verack() no_verack_idle_peer.wait_for_verack()
wait_until(lambda: no_version_disconnect_peer.ever_connected, timeout=10, lock=mininode_lock) wait_until(lambda: no_version_disconnect_peer.ever_connected, timeout=10, lock=p2p_lock)
wait_until(lambda: no_version_idle_peer.ever_connected, timeout=10, lock=mininode_lock) wait_until(lambda: no_version_idle_peer.ever_connected, timeout=10, lock=p2p_lock)
wait_until(lambda: no_verack_idle_peer.version_received, timeout=10, lock=mininode_lock) wait_until(lambda: no_verack_idle_peer.version_received, timeout=10, lock=p2p_lock)
# Mine a block and make sure that it's not sent to the connected peers # Mine a block and make sure that it's not sent to the connected peers
self.nodes[0].generate(nblocks=1) self.nodes[0].generate(nblocks=1)

View file

@ -9,7 +9,7 @@ and that it responds to getdata requests for blocks correctly:
- send a block within 288 + 2 of the tip - send a block within 288 + 2 of the tip
- disconnect peers who request blocks older than that.""" - disconnect peers who request blocks older than that."""
from test_framework.messages import CInv, MSG_BLOCK, msg_getdata, msg_verack, NODE_NETWORK_LIMITED, NODE_WITNESS from test_framework.messages import CInv, MSG_BLOCK, msg_getdata, msg_verack, NODE_NETWORK_LIMITED, NODE_WITNESS
from test_framework.mininode import P2PInterface, mininode_lock from test_framework.mininode import P2PInterface, p2p_lock
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,
@ -28,7 +28,7 @@ class P2PIgnoreInv(P2PInterface):
self.firstAddrnServices = message.addrs[0].nServices self.firstAddrnServices = message.addrs[0].nServices
def wait_for_addr(self, timeout=5): def wait_for_addr(self, timeout=5):
test_function = lambda: self.last_message.get("addr") test_function = lambda: self.last_message.get("addr")
wait_until(test_function, timeout=timeout, lock=mininode_lock) wait_until(test_function, timeout=timeout, lock=p2p_lock)
def send_getdata_for_block(self, blockhash): def send_getdata_for_block(self, blockhash):
getdata_request = msg_getdata() getdata_request = msg_getdata()
getdata_request.inv.append(CInv(MSG_BLOCK, int(blockhash, 16))) getdata_request.inv.append(CInv(MSG_BLOCK, int(blockhash, 16)))

View file

@ -44,7 +44,7 @@ from test_framework.messages import (
) )
from test_framework.mininode import ( from test_framework.mininode import (
P2PInterface, P2PInterface,
mininode_lock, p2p_lock,
) )
from test_framework.script import ( from test_framework.script import (
CScript, CScript,
@ -177,7 +177,7 @@ class TestP2PConn(P2PInterface):
if success: if success:
# sanity check # sanity check
assert (self.wtxidrelay and use_wtxid) or (not self.wtxidrelay and not use_wtxid) assert (self.wtxidrelay and use_wtxid) or (not self.wtxidrelay and not use_wtxid)
with mininode_lock: with p2p_lock:
self.last_message.pop("getdata", None) self.last_message.pop("getdata", None)
if use_wtxid: if use_wtxid:
wtxid = tx.calc_sha256(True) wtxid = tx.calc_sha256(True)
@ -195,7 +195,7 @@ class TestP2PConn(P2PInterface):
assert not self.last_message.get("getdata") assert not self.last_message.get("getdata")
def announce_block_and_wait_for_getdata(self, block, use_header, timeout=60): def announce_block_and_wait_for_getdata(self, block, use_header, timeout=60):
with mininode_lock: with p2p_lock:
self.last_message.pop("getdata", None) self.last_message.pop("getdata", None)
self.last_message.pop("getheaders", None) self.last_message.pop("getheaders", None)
msg = msg_headers() msg = msg_headers()
@ -209,7 +209,7 @@ class TestP2PConn(P2PInterface):
self.wait_for_getdata([block.sha256]) self.wait_for_getdata([block.sha256])
def request_block(self, blockhash, inv_type, timeout=60): def request_block(self, blockhash, inv_type, timeout=60):
with mininode_lock: with p2p_lock:
self.last_message.pop("block", None) self.last_message.pop("block", None)
self.send_message(msg_getdata(inv=[CInv(inv_type, blockhash)])) self.send_message(msg_getdata(inv=[CInv(inv_type, blockhash)]))
self.wait_for_block(blockhash, timeout) self.wait_for_block(blockhash, timeout)
@ -2114,7 +2114,7 @@ class SegWitTest(BitcoinTestFramework):
# Check wtxidrelay feature negotiation message through connecting a new peer # Check wtxidrelay feature negotiation message through connecting a new peer
def received_wtxidrelay(): def received_wtxidrelay():
return (len(self.wtx_node.last_wtxidrelay) > 0) return (len(self.wtx_node.last_wtxidrelay) > 0)
wait_until(received_wtxidrelay, timeout=60, lock=mininode_lock) wait_until(received_wtxidrelay, timeout=60, lock=p2p_lock)
# Create a Segwit output from the latest UTXO # Create a Segwit output from the latest UTXO
# and announce it to the network # and announce it to the network
@ -2138,25 +2138,25 @@ class SegWitTest(BitcoinTestFramework):
# Announce Segwit transaction with wtxid # Announce Segwit transaction with wtxid
# and wait for getdata # and wait for getdata
self.wtx_node.announce_tx_and_wait_for_getdata(tx2, use_wtxid=True) self.wtx_node.announce_tx_and_wait_for_getdata(tx2, use_wtxid=True)
with mininode_lock: with p2p_lock:
lgd = self.wtx_node.lastgetdata[:] lgd = self.wtx_node.lastgetdata[:]
assert_equal(lgd, [CInv(MSG_WTX, tx2.calc_sha256(True))]) assert_equal(lgd, [CInv(MSG_WTX, tx2.calc_sha256(True))])
# Announce Segwit transaction from non wtxidrelay peer # Announce Segwit transaction from non wtxidrelay peer
# and wait for getdata # and wait for getdata
self.tx_node.announce_tx_and_wait_for_getdata(tx2, use_wtxid=False) self.tx_node.announce_tx_and_wait_for_getdata(tx2, use_wtxid=False)
with mininode_lock: with p2p_lock:
lgd = self.tx_node.lastgetdata[:] lgd = self.tx_node.lastgetdata[:]
assert_equal(lgd, [CInv(MSG_TX|MSG_WITNESS_FLAG, tx2.sha256)]) assert_equal(lgd, [CInv(MSG_TX|MSG_WITNESS_FLAG, tx2.sha256)])
# Send tx2 through; it's an orphan so won't be accepted # Send tx2 through; it's an orphan so won't be accepted
with mininode_lock: with p2p_lock:
self.wtx_node.last_message.pop("getdata", None) self.wtx_node.last_message.pop("getdata", None)
test_transaction_acceptance(self.nodes[0], self.wtx_node, tx2, with_witness=True, accepted=False) test_transaction_acceptance(self.nodes[0], self.wtx_node, tx2, with_witness=True, accepted=False)
# Expect a request for parent (tx) by txid despite use of WTX peer # Expect a request for parent (tx) by txid despite use of WTX peer
self.wtx_node.wait_for_getdata([tx.sha256], 60) self.wtx_node.wait_for_getdata([tx.sha256], 60)
with mininode_lock: with p2p_lock:
lgd = self.wtx_node.lastgetdata[:] lgd = self.wtx_node.lastgetdata[:]
assert_equal(lgd, [CInv(MSG_TX|MSG_WITNESS_FLAG, tx.sha256)]) assert_equal(lgd, [CInv(MSG_TX|MSG_WITNESS_FLAG, tx.sha256)])

View file

@ -91,7 +91,7 @@ from test_framework.mininode import (
CBlockHeader, CBlockHeader,
NODE_WITNESS, NODE_WITNESS,
P2PInterface, P2PInterface,
mininode_lock, p2p_lock,
MSG_BLOCK, MSG_BLOCK,
msg_block, msg_block,
msg_getblocks, msg_getblocks,
@ -147,7 +147,7 @@ class BaseNode(P2PInterface):
def wait_for_block_announcement(self, block_hash, timeout=60): def wait_for_block_announcement(self, block_hash, timeout=60):
test_function = lambda: self.last_blockhash_announced == block_hash test_function = lambda: self.last_blockhash_announced == block_hash
wait_until(test_function, timeout=timeout, lock=mininode_lock) wait_until(test_function, timeout=timeout, lock=p2p_lock)
def on_inv(self, message): def on_inv(self, message):
self.block_announced = True self.block_announced = True
@ -163,7 +163,7 @@ class BaseNode(P2PInterface):
self.last_blockhash_announced = message.headers[-1].sha256 self.last_blockhash_announced = message.headers[-1].sha256
def clear_block_announcements(self): def clear_block_announcements(self):
with mininode_lock: with p2p_lock:
self.block_announced = False self.block_announced = False
self.last_message.pop("inv", None) self.last_message.pop("inv", None)
self.last_message.pop("headers", None) self.last_message.pop("headers", None)
@ -174,8 +174,8 @@ class BaseNode(P2PInterface):
"""Test whether the last headers announcements received are right. """Test whether the last headers announcements received are right.
Headers may be announced across more than one message.""" Headers may be announced across more than one message."""
test_function = lambda: (len(self.recent_headers_announced) >= len(headers)) test_function = lambda: (len(self.recent_headers_announced) >= len(headers))
wait_until(test_function, timeout=60, lock=mininode_lock) wait_until(test_function, timeout=60, lock=p2p_lock)
with mininode_lock: with p2p_lock:
assert_equal(self.recent_headers_announced, headers) assert_equal(self.recent_headers_announced, headers)
self.block_announced = False self.block_announced = False
self.last_message.pop("headers", None) self.last_message.pop("headers", None)
@ -186,9 +186,9 @@ class BaseNode(P2PInterface):
inv should be a list of block hashes.""" inv should be a list of block hashes."""
test_function = lambda: self.block_announced test_function = lambda: self.block_announced
wait_until(test_function, timeout=60, lock=mininode_lock) wait_until(test_function, timeout=60, lock=p2p_lock)
with mininode_lock: with p2p_lock:
compare_inv = [] compare_inv = []
if "inv" in self.last_message: if "inv" in self.last_message:
compare_inv = [x.hash for x in self.last_message["inv"].inv] compare_inv = [x.hash for x in self.last_message["inv"].inv]
@ -298,7 +298,7 @@ class SendHeadersTest(BitcoinTestFramework):
test_node.send_header_for_blocks([new_block]) test_node.send_header_for_blocks([new_block])
test_node.wait_for_getdata([new_block.sha256]) test_node.wait_for_getdata([new_block.sha256])
test_node.send_and_ping(msg_block(new_block)) # make sure this block is processed test_node.send_and_ping(msg_block(new_block)) # make sure this block is processed
wait_until(lambda: inv_node.block_announced, timeout=60, lock=mininode_lock) wait_until(lambda: inv_node.block_announced, timeout=60, lock=p2p_lock)
inv_node.clear_block_announcements() inv_node.clear_block_announcements()
test_node.clear_block_announcements() test_node.clear_block_announcements()
@ -456,7 +456,7 @@ class SendHeadersTest(BitcoinTestFramework):
test_node.send_header_for_blocks(blocks) test_node.send_header_for_blocks(blocks)
test_node.sync_with_ping() test_node.sync_with_ping()
# should not have received any getdata messages # should not have received any getdata messages
with mininode_lock: with p2p_lock:
assert "getdata" not in test_node.last_message assert "getdata" not in test_node.last_message
# This time, direct fetch should work # This time, direct fetch should work
@ -494,7 +494,7 @@ class SendHeadersTest(BitcoinTestFramework):
test_node.last_message.pop("getdata", None) test_node.last_message.pop("getdata", None)
test_node.send_header_for_blocks(blocks[0:1]) test_node.send_header_for_blocks(blocks[0:1])
test_node.sync_with_ping() test_node.sync_with_ping()
with mininode_lock: with p2p_lock:
assert "getdata" not in test_node.last_message assert "getdata" not in test_node.last_message
# Announcing one more block on fork should trigger direct fetch for # Announcing one more block on fork should trigger direct fetch for
@ -513,7 +513,7 @@ class SendHeadersTest(BitcoinTestFramework):
test_node.last_message.pop("getdata", None) test_node.last_message.pop("getdata", None)
test_node.send_header_for_blocks(blocks[18:19]) test_node.send_header_for_blocks(blocks[18:19])
test_node.sync_with_ping() test_node.sync_with_ping()
with mininode_lock: with p2p_lock:
assert "getdata" not in test_node.last_message assert "getdata" not in test_node.last_message
self.log.info("Part 4: success!") self.log.info("Part 4: success!")
@ -536,7 +536,7 @@ class SendHeadersTest(BitcoinTestFramework):
block_time += 1 block_time += 1
height += 1 height += 1
# Send the header of the second block -> this won't connect. # Send the header of the second block -> this won't connect.
with mininode_lock: with p2p_lock:
test_node.last_message.pop("getheaders", None) test_node.last_message.pop("getheaders", None)
test_node.send_header_for_blocks([blocks[1]]) test_node.send_header_for_blocks([blocks[1]])
test_node.wait_for_getheaders() test_node.wait_for_getheaders()
@ -559,7 +559,7 @@ class SendHeadersTest(BitcoinTestFramework):
for i in range(1, MAX_UNCONNECTING_HEADERS): for i in range(1, MAX_UNCONNECTING_HEADERS):
# Send a header that doesn't connect, check that we get a getheaders. # Send a header that doesn't connect, check that we get a getheaders.
with mininode_lock: with p2p_lock:
test_node.last_message.pop("getheaders", None) test_node.last_message.pop("getheaders", None)
test_node.send_header_for_blocks([blocks[i]]) test_node.send_header_for_blocks([blocks[i]])
test_node.wait_for_getheaders() test_node.wait_for_getheaders()
@ -574,7 +574,7 @@ class SendHeadersTest(BitcoinTestFramework):
# before we get disconnected. Should be 5*MAX_UNCONNECTING_HEADERS # before we get disconnected. Should be 5*MAX_UNCONNECTING_HEADERS
for i in range(5 * MAX_UNCONNECTING_HEADERS - 1): for i in range(5 * MAX_UNCONNECTING_HEADERS - 1):
# Send a header that doesn't connect, check that we get a getheaders. # Send a header that doesn't connect, check that we get a getheaders.
with mininode_lock: with p2p_lock:
test_node.last_message.pop("getheaders", None) test_node.last_message.pop("getheaders", None)
test_node.send_header_for_blocks([blocks[i % len(blocks)]]) test_node.send_header_for_blocks([blocks[i % len(blocks)]])
test_node.wait_for_getheaders() test_node.wait_for_getheaders()

View file

@ -18,7 +18,7 @@ from test_framework.messages import (
) )
from test_framework.mininode import ( from test_framework.mininode import (
P2PInterface, P2PInterface,
mininode_lock, p2p_lock,
) )
from test_framework.test_framework import BitcoinTestFramework from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import ( from test_framework.util import (
@ -73,7 +73,7 @@ class TxDownloadTest(BitcoinTestFramework):
def getdata_found(peer_index): def getdata_found(peer_index):
p = self.nodes[0].p2ps[peer_index] p = self.nodes[0].p2ps[peer_index]
with mininode_lock: with p2p_lock:
return p.last_message.get("getdata") and p.last_message["getdata"].inv[-1].hash == txid return p.last_message.get("getdata") and p.last_message["getdata"].inv[-1].hash == txid
node_0_mocktime = int(time.time()) node_0_mocktime = int(time.time())
@ -134,18 +134,18 @@ class TxDownloadTest(BitcoinTestFramework):
p = self.nodes[0].p2ps[0] p = self.nodes[0].p2ps[0]
with mininode_lock: with p2p_lock:
p.tx_getdata_count = 0 p.tx_getdata_count = 0
p.send_message(msg_inv([CInv(t=MSG_WTX, h=i) for i in txids])) p.send_message(msg_inv([CInv(t=MSG_WTX, h=i) for i in txids]))
wait_until(lambda: p.tx_getdata_count >= MAX_GETDATA_IN_FLIGHT, lock=mininode_lock) wait_until(lambda: p.tx_getdata_count >= MAX_GETDATA_IN_FLIGHT, lock=p2p_lock)
with mininode_lock: with p2p_lock:
assert_equal(p.tx_getdata_count, MAX_GETDATA_IN_FLIGHT) assert_equal(p.tx_getdata_count, MAX_GETDATA_IN_FLIGHT)
self.log.info("Now check that if we send a NOTFOUND for a transaction, we'll get one more request") self.log.info("Now check that if we send a NOTFOUND for a transaction, we'll get one more request")
p.send_message(msg_notfound(vec=[CInv(t=MSG_WTX, h=txids[0])])) p.send_message(msg_notfound(vec=[CInv(t=MSG_WTX, h=txids[0])]))
wait_until(lambda: p.tx_getdata_count >= MAX_GETDATA_IN_FLIGHT + 1, timeout=10, lock=mininode_lock) wait_until(lambda: p.tx_getdata_count >= MAX_GETDATA_IN_FLIGHT + 1, timeout=10, lock=p2p_lock)
with mininode_lock: with p2p_lock:
assert_equal(p.tx_getdata_count, MAX_GETDATA_IN_FLIGHT + 1) assert_equal(p.tx_getdata_count, MAX_GETDATA_IN_FLIGHT + 1)
WAIT_TIME = TX_EXPIRY_INTERVAL // 2 + TX_EXPIRY_INTERVAL WAIT_TIME = TX_EXPIRY_INTERVAL // 2 + TX_EXPIRY_INTERVAL

View file

@ -55,7 +55,7 @@ import time
from test_framework.blocktools import create_block, create_coinbase, create_tx_with_script from test_framework.blocktools import create_block, create_coinbase, create_tx_with_script
from test_framework.messages import CBlockHeader, CInv, MSG_BLOCK, msg_block, msg_headers, msg_inv from test_framework.messages import CBlockHeader, CInv, MSG_BLOCK, msg_block, msg_headers, msg_inv
from test_framework.mininode import mininode_lock, P2PInterface from test_framework.mininode import p2p_lock, P2PInterface
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,
@ -199,13 +199,13 @@ class AcceptBlockTest(BitcoinTestFramework):
# 6. Try to get node to request the missing block. # 6. Try to get node to request the missing block.
# Poke the node with an inv for block at height 3 and see if that # Poke the node with an inv for block at height 3 and see if that
# triggers a getdata on block 2 (it should if block 2 is missing). # triggers a getdata on block 2 (it should if block 2 is missing).
with mininode_lock: with p2p_lock:
# Clear state so we can check the getdata request # Clear state so we can check the getdata request
test_node.last_message.pop("getdata", None) test_node.last_message.pop("getdata", None)
test_node.send_message(msg_inv([CInv(MSG_BLOCK, block_h3.sha256)])) test_node.send_message(msg_inv([CInv(MSG_BLOCK, block_h3.sha256)]))
test_node.sync_with_ping() test_node.sync_with_ping()
with mininode_lock: with p2p_lock:
getdata = test_node.last_message["getdata"] getdata = test_node.last_message["getdata"]
# Check that the getdata includes the right block # Check that the getdata includes the right block

View file

@ -320,7 +320,7 @@ class P2PInterface(P2PConnection):
We keep a count of how many of each message type has been received We keep a count of how many of each message type has been received
and the most recent message of each type.""" and the most recent message of each type."""
with mininode_lock: with p2p_lock:
try: try:
msgtype = message.msgtype.decode('ascii') msgtype = message.msgtype.decode('ascii')
self.message_count[msgtype] += 1 self.message_count[msgtype] += 1
@ -394,7 +394,7 @@ class P2PInterface(P2PConnection):
assert self.is_connected assert self.is_connected
return test_function_in() return test_function_in()
wait_until(test_function, timeout=timeout, lock=mininode_lock, timeout_factor=self.timeout_factor) wait_until(test_function, timeout=timeout, lock=p2p_lock, timeout_factor=self.timeout_factor)
def wait_for_disconnect(self, timeout=60): def wait_for_disconnect(self, timeout=60):
test_function = lambda: not self.is_connected test_function = lambda: not self.is_connected
@ -498,7 +498,7 @@ class P2PInterface(P2PConnection):
# P2PConnection acquires this lock whenever delivering a message to a P2PInterface. # P2PConnection acquires this lock whenever delivering a message to a P2PInterface.
# This lock should be acquired in the thread running the test logic to synchronize # This lock should be acquired in the thread running the test logic to synchronize
# access to any data shared with the P2PInterface or P2PConnection. # access to any data shared with the P2PInterface or P2PConnection.
mininode_lock = threading.Lock() p2p_lock = threading.Lock()
class NetworkThread(threading.Thread): class NetworkThread(threading.Thread):
@ -592,7 +592,7 @@ class P2PDataStore(P2PInterface):
- if success is False: assert that the node's tip doesn't advance - if success is False: assert that the node's tip doesn't advance
- if reject_reason is set: assert that the correct reject message is logged""" - if reject_reason is set: assert that the correct reject message is logged"""
with mininode_lock: with p2p_lock:
for block in blocks: for block in blocks:
self.block_store[block.sha256] = block self.block_store[block.sha256] = block
self.last_block_hash = block.sha256 self.last_block_hash = block.sha256
@ -629,7 +629,7 @@ class P2PDataStore(P2PInterface):
- if expect_disconnect is True: Skip the sync with ping - if expect_disconnect is True: Skip the sync with ping
- if reject_reason is set: assert that the correct reject message is logged.""" - if reject_reason is set: assert that the correct reject message is logged."""
with mininode_lock: with p2p_lock:
for tx in txs: for tx in txs:
self.tx_store[tx.sha256] = tx self.tx_store[tx.sha256] = tx
@ -668,7 +668,7 @@ class P2PTxInvStore(P2PInterface):
self.tx_invs_received[i.hash] += 1 self.tx_invs_received[i.hash] += 1
def get_invs(self): def get_invs(self):
with mininode_lock: with p2p_lock:
return list(self.tx_invs_received.keys()) return list(self.tx_invs_received.keys())
def wait_for_broadcast(self, txns, timeout=60): def wait_for_broadcast(self, txns, timeout=60):

View file

@ -7,7 +7,7 @@ import time
from test_framework.blocktools import create_block, create_coinbase from test_framework.blocktools import create_block, create_coinbase
from test_framework.messages import ToHex from test_framework.messages import ToHex
from test_framework.mininode import P2PTxInvStore, mininode_lock from test_framework.mininode import P2PTxInvStore, p2p_lock
from test_framework.test_framework import BitcoinTestFramework from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import assert_equal, wait_until from test_framework.util import assert_equal, wait_until
@ -33,7 +33,7 @@ class ResendWalletTransactionsTest(BitcoinTestFramework):
time.sleep(1.1) time.sleep(1.1)
# Can take a few seconds due to transaction trickling # Can take a few seconds due to transaction trickling
wait_until(lambda: node.p2p.tx_invs_received[txid] >= 1, lock=mininode_lock) wait_until(lambda: node.p2p.tx_invs_received[txid] >= 1, lock=p2p_lock)
# Add a second peer since txs aren't rebroadcast to the same peer (see filterInventoryKnown) # Add a second peer since txs aren't rebroadcast to the same peer (see filterInventoryKnown)
node.add_p2p_connection(P2PTxInvStore()) node.add_p2p_connection(P2PTxInvStore())
@ -64,7 +64,7 @@ class ResendWalletTransactionsTest(BitcoinTestFramework):
# Transaction should be rebroadcast approximately 24 hours in the future, # Transaction should be rebroadcast approximately 24 hours in the future,
# but can range from 12-36. So bump 36 hours to be sure. # but can range from 12-36. So bump 36 hours to be sure.
node.setmocktime(now + 36 * 60 * 60) node.setmocktime(now + 36 * 60 * 60)
wait_until(lambda: node.p2ps[1].tx_invs_received[txid] >= 1, lock=mininode_lock) wait_until(lambda: node.p2ps[1].tx_invs_received[txid] >= 1, lock=p2p_lock)
if __name__ == '__main__': if __name__ == '__main__':