aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2023-12-08 11:25:20 +0000
committerfanquake <fanquake@gmail.com>2023-12-08 11:28:59 +0000
commit1f352cf2fd7c616480e403ecebb52597e61dbfb1 (patch)
tree2f8632bbbcf22d749dd5a57ca87cea13994ea9ea
parenta7f4f1a09c767e8f6921d24505d868744026091b (diff)
parent97c0dfa8942c7fd62c920deee03b4d0c59aba641 (diff)
Merge bitcoin/bitcoin#28485: test: Extends MEMPOOL msg functional test
97c0dfa8942c7fd62c920deee03b4d0c59aba641 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 https://github.com/bitcoin/bitcoin/pull/28485/commits/97c0dfa8942c7fd62c920deee03b4d0c59aba641 theStack: re-ACK 97c0dfa8942c7fd62c920deee03b4d0c59aba641 Tree-SHA512: 746fdc867630f40509e6341f484a238dd855ae6d1be5eca121974491e4ca272dee88af4b90dda55ea9a5a19cbff198fa91ffa0c5bf1ddf0232b2c1b215b05b9a
-rwxr-xr-xtest/functional/p2p_filter.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/test/functional/p2p_filter.py b/test/functional/p2p_filter.py
index 665f57365f..62d55cc101 100755
--- a/test/functional/p2p_filter.py
+++ b/test/functional/p2p_filter.py
@@ -11,6 +11,7 @@ from test_framework.messages import (
COIN,
MAX_BLOOM_FILTER_SIZE,
MAX_BLOOM_HASH_FUNCS,
+ MSG_WTX,
MSG_BLOCK,
MSG_FILTERED_BLOCK,
msg_filteradd,
@@ -135,14 +136,22 @@ class FilterTest(BitcoinTestFramework):
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")