diff options
author | fanquake <fanquake@gmail.com> | 2020-06-14 12:54:16 +0800 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2020-06-14 13:31:17 +0800 |
commit | 195822f1e05e2f36002c906667d4c639663f23b5 (patch) | |
tree | 11b4a7e3efea0baf6bf07ea0b83ec9d18c63d0a8 | |
parent | eac65d99ddb27061e6ae0f9448887db86e2c0734 (diff) | |
parent | 49236be099c5e8b3cadbc98d5216313e7e1a5a45 (diff) |
Merge #19264: [tests] Don't import asyncio to test magic bytes
49236be099c5e8b3cadbc98d5216313e7e1a5a45 [tests] Don't import asyncio to test magic bytes (John Newbery)
Pull request description:
Simplify the test for invalid start bytes. No need to import asyncio and the Network thread.
ACKs for top commit:
MarcoFalke:
review ACK 49236be099c5e8b3cadbc98d5216313e7e1a5a45
jonatack:
ACK 49236be099c5e8b3cadbc98d5216313e7e1a5a45
troygiorshev:
ACK 49236be. +0.1 on the additional `cut_len` reformat.
Tree-SHA512: 75cb695603cdc1be7035d7b5117dbef2a1fdb29fd4414a73d75b53d563d6fa800c31bfa9475004622c8bdea4978b51b2055d6fa7be0fe47c7ae34ccc2b0e89a0
-rwxr-xr-x | test/functional/p2p_invalid_messages.py | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/test/functional/p2p_invalid_messages.py b/test/functional/p2p_invalid_messages.py index 771fac08ca..402f72685c 100755 --- a/test/functional/p2p_invalid_messages.py +++ b/test/functional/p2p_invalid_messages.py @@ -3,20 +3,16 @@ # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. """Test node responses to invalid network messages.""" -import asyncio - from test_framework.messages import ( CBlockHeader, CInv, msg_getdata, msg_headers, msg_inv, - msg_ping, MSG_TX, ser_string, ) from test_framework.mininode import ( - NetworkThread, P2PDataStore, P2PInterface, ) @@ -55,17 +51,11 @@ class InvalidMessagesTest(BitcoinTestFramework): def test_magic_bytes(self): conn = self.nodes[0].add_p2p_connection(P2PDataStore()) - - async def swap_magic_bytes(): - conn._on_data = lambda: None # Need to ignore all incoming messages from now, since they come with "invalid" magic bytes - conn.magic_bytes = b'\x00\x11\x22\x32' - - # Call .result() to block until the atomic swap is complete, otherwise - # we might run into races later on - asyncio.run_coroutine_threadsafe(swap_magic_bytes(), NetworkThread.network_event_loop).result() - - with self.nodes[0].assert_debug_log(['PROCESSMESSAGE: INVALID MESSAGESTART ping']): - conn.send_message(msg_ping(nonce=0xff)) + with self.nodes[0].assert_debug_log(['PROCESSMESSAGE: INVALID MESSAGESTART badmsg']): + msg = conn.build_message(msg_unrecognized(str_data="d")) + # modify magic bytes + msg = b'\xff' * 4 + msg[4:] + conn.send_raw_message(msg) conn.wait_for_disconnect(timeout=1) self.nodes[0].disconnect_p2ps() @@ -73,11 +63,8 @@ class InvalidMessagesTest(BitcoinTestFramework): conn = self.nodes[0].add_p2p_connection(P2PDataStore()) with self.nodes[0].assert_debug_log(['CHECKSUM ERROR (badmsg, 2 bytes), expected 78df0a04 was ffffffff']): msg = conn.build_message(msg_unrecognized(str_data="d")) - cut_len = ( - 4 + # magic - 12 + # msgtype - 4 #len - ) + # Checksum is after start bytes (4B), message type (12B), len (4B) + cut_len = 4 + 12 + 4 # modify checksum msg = msg[:cut_len] + b'\xff' * 4 + msg[cut_len + 4:] self.nodes[0].p2p.send_raw_message(msg) @@ -88,7 +75,7 @@ class InvalidMessagesTest(BitcoinTestFramework): conn = self.nodes[0].add_p2p_connection(P2PDataStore()) with self.nodes[0].assert_debug_log(['']): # Create a message with oversized payload - msg = msg_unrecognized(str_data="d"*(VALID_DATA_LIMIT + 1)) + msg = msg_unrecognized(str_data="d" * (VALID_DATA_LIMIT + 1)) msg = conn.build_message(msg) self.nodes[0].p2p.send_raw_message(msg) conn.wait_for_disconnect(timeout=1) |