aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2019-04-23 13:12:48 -0400
committerMarcoFalke <falke.marco@gmail.com>2019-04-23 13:12:54 -0400
commit40a720acb8472f6e8afdf8b8d1897f35d58daf1f (patch)
treed4c2fca4420bdfae9f99be5b8f06011cb59e4f24 /test
parent4bd7187da81767ecb8aadcb86c9e53dc8636695f (diff)
parentfaca95effd91117ba1c0578ce4235a6a528f3511 (diff)
downloadbitcoin-40a720acb8472f6e8afdf8b8d1897f35d58daf1f.tar.xz
Merge #15697: qa: Make swap_magic_bytes in p2p_invalid_messages atomic
faca95effd qa: Make swap_magic_bytes in p2p_invalid_messages atomic (MarcoFalke) Pull request description: Otherwise, this will lead to errors logged in the network thread: https://travis-ci.org/MarcoFalke/bitcoin/jobs/513076282#L2765 ACKs for commit faca95: Tree-SHA512: 8bc8280f9c0e8d40bc68c0ff1cab1c3386cbfef0728dbab5f29c2606dd65a9ac3c695b0c286be707a9f2bd62a6f87ac2032d7749fc2cf8b9fa1eba3c4cf70933
Diffstat (limited to 'test')
-rwxr-xr-xtest/functional/p2p_invalid_messages.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/test/functional/p2p_invalid_messages.py b/test/functional/p2p_invalid_messages.py
index 700fdf6e04..481d697e63 100755
--- a/test/functional/p2p_invalid_messages.py
+++ b/test/functional/p2p_invalid_messages.py
@@ -3,11 +3,12 @@
# 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
import os
import struct
from test_framework import messages
-from test_framework.mininode import P2PDataStore
+from test_framework.mininode import P2PDataStore, NetworkThread
from test_framework.test_framework import BitcoinTestFramework
@@ -143,8 +144,15 @@ class InvalidMessagesTest(BitcoinTestFramework):
def test_magic_bytes(self):
conn = self.nodes[0].add_p2p_connection(P2PDataStore())
- 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'
+
+ 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(asyncio.coroutine(swap_magic_bytes)(), NetworkThread.network_event_loop).result()
+
with self.nodes[0].assert_debug_log(['PROCESSMESSAGE: INVALID MESSAGESTART ping']):
conn.send_message(messages.msg_ping(nonce=0xff))
conn.wait_for_disconnect(timeout=1)