test: add p2p_lock acquires in p2p_leak_tx.py

This commit is contained in:
Sebastian Falbesoner 2020-10-12 00:22:16 +02:00
parent cc8c6823b4
commit 5b77f8098d

View File

@ -5,7 +5,7 @@
"""Test that we don't leak txs to inbound peers that we haven't yet announced to""" """Test that we don't leak txs to inbound peers that we haven't yet announced to"""
from test_framework.messages import msg_getdata, CInv, MSG_TX from test_framework.messages import msg_getdata, CInv, MSG_TX
from test_framework.p2p import P2PDataStore from test_framework.p2p import p2p_lock, P2PDataStore
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,
@ -39,14 +39,16 @@ class P2PLeakTxTest(BitcoinTestFramework):
want_tx = msg_getdata() want_tx = msg_getdata()
want_tx.inv.append(CInv(t=MSG_TX, h=int(txid, 16))) want_tx.inv.append(CInv(t=MSG_TX, h=int(txid, 16)))
inbound_peer.last_message.pop('notfound', None) with p2p_lock:
inbound_peer.last_message.pop('notfound', None)
inbound_peer.send_and_ping(want_tx) inbound_peer.send_and_ping(want_tx)
if inbound_peer.last_message.get('notfound'): if inbound_peer.last_message.get('notfound'):
self.log.debug('tx {} was not yet announced to us.'.format(txid)) self.log.debug('tx {} was not yet announced to us.'.format(txid))
self.log.debug("node has responded with a notfound message. End test.") self.log.debug("node has responded with a notfound message. End test.")
assert_equal(inbound_peer.last_message['notfound'].vec[0].hash, int(txid, 16)) assert_equal(inbound_peer.last_message['notfound'].vec[0].hash, int(txid, 16))
inbound_peer.last_message.pop('notfound') with p2p_lock:
inbound_peer.last_message.pop('notfound')
break break
else: else:
self.log.debug('tx {} was already announced to us. Try test again.'.format(txid)) self.log.debug('tx {} was already announced to us. Try test again.'.format(txid))