aboutsummaryrefslogtreecommitdiff
path: root/test/functional/p2p_nobloomfilter_messages.py
diff options
context:
space:
mode:
authorgzhao408 <gzhao408@berkeley.edu>2020-05-26 15:35:58 -0700
committergzhao408 <gzhao408@berkeley.edu>2020-06-10 07:28:04 -0700
commit4ef80f0827392a1310ca5a29cc1f8f5ca5d16f95 (patch)
tree5b143722097c765c9f5765be0b57779f16e085c3 /test/functional/p2p_nobloomfilter_messages.py
parent497a619386008dfaec0db15ecaebcdfaf75f5011 (diff)
downloadbitcoin-4ef80f0827392a1310ca5a29cc1f8f5ca5d16f95.tar.xz
[test] sending invalid msgs to node with bloomfilters=0 causes disconnect
-A node with bloomfilters disabled should disconnect peers that send msg_mempool, msg_filterload, or msg_filteradd. -Renamed the test because it now has a wider scope and msg_mempool's actual functionality makes more sense for p2p_filter.py.
Diffstat (limited to 'test/functional/p2p_nobloomfilter_messages.py')
-rwxr-xr-xtest/functional/p2p_nobloomfilter_messages.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/test/functional/p2p_nobloomfilter_messages.py b/test/functional/p2p_nobloomfilter_messages.py
new file mode 100755
index 0000000000..41af74ebb8
--- /dev/null
+++ b/test/functional/p2p_nobloomfilter_messages.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python3
+# Copyright (c) 2015-2018 The Bitcoin Core developers
+# Distributed under the MIT software license, see the accompanying
+# file COPYING or http://www.opensource.org/licenses/mit-license.php.
+"""Test invalid p2p messages for nodes with bloom filters disabled.
+
+Test that, when bloom filters are not enabled, nodes are disconnected if:
+1. They send a p2p mempool message
+2. They send a p2p filterload message
+3. They send a p2p filteradd message
+"""
+
+from test_framework.messages import msg_mempool, msg_filteradd, msg_filterload
+from test_framework.mininode import P2PInterface
+from test_framework.test_framework import BitcoinTestFramework
+from test_framework.util import assert_equal
+
+
+class P2PNobloomfilterMessages(BitcoinTestFramework):
+ def set_test_params(self):
+ self.setup_clean_chain = True
+ self.num_nodes = 1
+ self.extra_args = [["-peerbloomfilters=0"]]
+
+ def test_message_causes_disconnect(self, message):
+ # Add a p2p connection that sends a message and check that it disconnects
+ peer = self.nodes[0].add_p2p_connection(P2PInterface())
+ peer.send_message(message)
+ peer.wait_for_disconnect()
+ assert_equal(len(self.nodes[0].getpeerinfo()), 0)
+
+ def run_test(self):
+ self.log.info("Test that node is disconnected if it sends mempool message")
+ self.test_message_causes_disconnect(msg_mempool())
+
+ self.log.info("Test that node is disconnected if it sends filterload message")
+ self.test_message_causes_disconnect(msg_filterload())
+
+ self.log.info("Test that node is disconnected if it sends filteradd message")
+ self.test_message_causes_disconnect(msg_filteradd(data=b'\xcc'))
+
+if __name__ == '__main__':
+ P2PNobloomfilterMessages().main()