Skip to content

Commit

Permalink
Merge bitcoin/bitcoin#28485: test: Extends MEMPOOL msg functional test
Browse files Browse the repository at this point in the history
97c0dfa test: Extends MEMPOOL msg functional test (Sergi Delgado Segura)

Pull request description:

  Currently, p2p_filter.py::test_msg_mempool is not testing much. This extends the tests so the interaction between sending `MEMPOOL` messages with a filter that does not include all transactions in the mempool reacts, plus how it interacts with `INV` messages, especially after the changes introduced by #27675

ACKs for top commit:
  instagibbs:
    ACK bitcoin/bitcoin@97c0dfa
  theStack:
    re-ACK 97c0dfa

Tree-SHA512: 746fdc867630f40509e6341f484a238dd855ae6d1be5eca121974491e4ca272dee88af4b90dda55ea9a5a19cbff198fa91ffa0c5bf1ddf0232b2c1b215b05b9a
  • Loading branch information
fanquake committed Dec 8, 2023
2 parents a7f4f1a + 97c0dfa commit 1f352cf
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions test/functional/p2p_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
COIN,
MAX_BLOOM_FILTER_SIZE,
MAX_BLOOM_HASH_FUNCS,
MSG_WTX,
MSG_BLOCK,
MSG_FILTERED_BLOCK,
msg_filteradd,
Expand Down Expand Up @@ -135,14 +136,22 @@ def test_msg_mempool(self):
self.log.info("Check that a node with bloom filters enabled services p2p mempool messages")
filter_peer = P2PBloomFilter()

self.log.debug("Create a tx relevant to the peer before connecting")
txid = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=filter_peer.watch_script_pubkey, amount=9 * COIN)["txid"]
self.log.info("Create two tx before connecting, one relevant to the node another that is not")
rel_txid = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=filter_peer.watch_script_pubkey, amount=1 * COIN)["txid"]
irr_result = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=getnewdestination()[1], amount=2 * COIN)
irr_txid = irr_result["txid"]
irr_wtxid = irr_result["wtxid"]

self.log.debug("Send a mempool msg after connecting and check that the tx is received")
self.log.info("Send a mempool msg after connecting and check that the relevant tx is announced")
self.nodes[0].add_p2p_connection(filter_peer)
filter_peer.send_and_ping(filter_peer.watch_filter_init)
filter_peer.send_message(msg_mempool())
filter_peer.wait_for_tx(txid)
filter_peer.wait_for_tx(rel_txid)

self.log.info("Request the irrelevant transaction even though it was not announced")
filter_peer.send_message(msg_getdata([CInv(t=MSG_WTX, h=int(irr_wtxid, 16))]))
self.log.info("We should get it anyway because it was in the mempool on connection to peer")
filter_peer.wait_for_tx(irr_txid)

def test_frelay_false(self, filter_peer):
self.log.info("Check that a node with fRelay set to false does not receive invs until the filter is set")
Expand Down

0 comments on commit 1f352cf

Please sign in to comment.