mirror of
https://github.com/Retropex/bitcoin.git
synced 2025-05-28 21:12:29 +02:00
QA/Mininode: Support node-to-test connections
This commit is contained in:
parent
a7b600d1e9
commit
b4e037ee01
@ -24,6 +24,7 @@ import asyncio
|
||||
from collections import defaultdict
|
||||
from io import BytesIO
|
||||
import logging
|
||||
import socket
|
||||
import struct
|
||||
import sys
|
||||
import threading
|
||||
@ -180,12 +181,32 @@ class P2PConnection(asyncio.Protocol):
|
||||
self.recvbuf = b""
|
||||
self.magic_bytes = MAGIC_BYTES[net]
|
||||
|
||||
def peer_connect(self, dstaddr, dstport, *, net, timeout_factor):
|
||||
def peer_connect(self, dstaddr, dstport, *, net, timeout_factor, node_outgoing=False):
|
||||
self.peer_connect_helper(dstaddr, dstport, net, timeout_factor)
|
||||
|
||||
self.node_outgoing = node_outgoing
|
||||
loop = NetworkThread.network_event_loop
|
||||
logger.debug('Connecting to Bitcoin Node: %s:%d' % (self.dstaddr, self.dstport))
|
||||
coroutine = loop.create_connection(lambda: self, host=self.dstaddr, port=self.dstport)
|
||||
|
||||
if self.node_outgoing:
|
||||
logger.debug('Connecting from Bitcoin Node: %s:%d' % (self.dstaddr, self.dstport))
|
||||
|
||||
listen_sock = socket.socket()
|
||||
listen_sock.bind(('127.0.0.1', 0))
|
||||
listen_sock.listen(1)
|
||||
listen_port = listen_sock.getsockname()[1]
|
||||
self.rpc.addnode('127.0.0.1:%u' % (listen_port,), 'onetry', 'outbound-full-relay')
|
||||
(sock, addr) = listen_sock.accept()
|
||||
assert sock
|
||||
listen_sock.close()
|
||||
|
||||
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
|
||||
sock.setblocking(False)
|
||||
coroutine = loop.create_connection(lambda: self, sock=sock)
|
||||
else:
|
||||
logger.debug('Connecting to Bitcoin Node: %s:%d' % (self.dstaddr, self.dstport))
|
||||
|
||||
coroutine = loop.create_connection(lambda: self, host=self.dstaddr, port=self.dstport)
|
||||
|
||||
return lambda: loop.call_soon_threadsafe(loop.create_task, coroutine)
|
||||
|
||||
def peer_accept_connection(self, connect_id, connect_cb=lambda: None, *, net, timeout_factor):
|
||||
|
@ -644,6 +644,7 @@ class TestNode():
|
||||
if 'dstaddr' not in kwargs:
|
||||
kwargs['dstaddr'] = '127.0.0.1'
|
||||
|
||||
p2p_conn.rpc = self
|
||||
p2p_conn.peer_connect(**kwargs, net=self.chain, timeout_factor=self.timeout_factor)()
|
||||
self.p2ps.append(p2p_conn)
|
||||
p2p_conn.wait_until(lambda: p2p_conn.is_connected, check_connected=False)
|
||||
|
Loading…
Reference in New Issue
Block a user