diff options
author | gzhao408 <gzhao408@berkeley.edu> | 2020-05-26 15:35:58 -0700 |
---|---|---|
committer | gzhao408 <gzhao408@berkeley.edu> | 2020-06-10 07:28:04 -0700 |
commit | 4ef80f0827392a1310ca5a29cc1f8f5ca5d16f95 (patch) | |
tree | 5b143722097c765c9f5765be0b57779f16e085c3 /test/functional/p2p_nobloomfilter_messages.py | |
parent | 497a619386008dfaec0db15ecaebcdfaf75f5011 (diff) | |
download | bitcoin-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-x | test/functional/p2p_nobloomfilter_messages.py | 43 |
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() |