Use peer address struct in requests (#1004)

* Update connect peer and disconnect peer rpc to use peer addrss struct

* Update get connected peer rpc to use peer addrss struct

* Use peer address struct in create saved peer rpc

* Use peer address struct in squeak peer struct

* Use peer address for requests functions in frontend

* Update frontend build
This commit is contained in:
Jonathan Zernik 2021-08-21 00:54:48 -07:00 committed by GitHub
parent a9c66be62c
commit b9ac4b86b4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 159 additions and 171 deletions

View file

@ -63,7 +63,7 @@ export default function SavedPeerListItem({
<CardHeader
avatar={<ComputerIcon/>}
title={`Name: ${peer.getPeerName()}`}
subheader={`Address: ${peer.getHost()}:${peer.getPort()}`}
subheader={`Address: ${peer.getPeerAddress().getHost()}:${peer.getPeerAddress().getPort()}`}
// action={<Button size="small">View Peer</Button>}
/>
</Card>

View file

@ -75,7 +75,7 @@ export default function PeerPage() {
Peer name: {peer.getPeerName()}
</p>
<p>
Address: {peer.getHost()}:{peer.getPort()}
Address: {peer.getPeerAddress().getHost()}:{peer.getPeerAddress().getPort()}
</p>
{PeerSettingsForm()}
{DeletePeerButton()}

View file

@ -117,6 +117,7 @@ import {
DownloadRepliesRequest,
DownloadRepliesReply,
SubscribeConnectedPeersRequest,
PeerAddress,
} from "../proto/squeak_admin_pb"
import { SqueakAdminClient } from "../proto/squeak_admin_grpc_web_pb"
@ -676,15 +677,11 @@ export function importSigningProfileRequest(profileName, privateKey, handleRespo
export function createPeerRequest(peerName, host, port, handleResponse) {
var request = new CreatePeerRequest();
var peerAddress = new PeerAddress();
peerAddress.setHost(host);
peerAddress.setPort(port);
request.setPeerName(peerName);
request.setHost(host);
request.setPort(port);
// makeRequest(
// 'createpeer',
// request,
// CreatePeerReply.deserializeBinary,
// handleResponse,
// );
request.setPeerAddress(peerAddress);
client.createPeer(request, {}, (err, response) => {
handleResponse(response);
});
@ -976,16 +973,10 @@ export function getConnectedPeersRequest(handleResponse) {
export function getConnectedPeerRequest(host, port, handleResponse) {
var request = new GetConnectedPeerRequest();
request.setHost(host);
request.setPort(port);
// makeRequest(
// 'getconnectedpeer',
// request,
// GetConnectedPeerReply.deserializeBinary,
// (response) => {
// handleResponse(response.getConnectedPeer());
// }
// );
var peerAddress = new PeerAddress();
peerAddress.setHost(host);
peerAddress.setPort(port);
request.setPeerAddress(peerAddress);
client.getConnectedPeer(request, {}, (err, response) => {
handleResponse(response.getConnectedPeer());
});
@ -993,14 +984,10 @@ export function getConnectedPeerRequest(host, port, handleResponse) {
export function connectSqueakPeerRequest(host, port, handleResponse) {
var request = new ConnectSqueakPeerRequest();
request.setHost(host);
request.setPort(port);
// makeRequest(
// 'connectpeer',
// request,
// ConnectSqueakPeerReply.deserializeBinary,
// handleResponse,
// );
var peerAddress = new PeerAddress();
peerAddress.setHost(host);
peerAddress.setPort(port);
request.setPeerAddress(peerAddress);
client.connectPeer(request, {}, (err, response) => {
handleResponse(response);
});
@ -1008,14 +995,10 @@ export function connectSqueakPeerRequest(host, port, handleResponse) {
export function disconnectSqueakPeerRequest(host, port, handleResponse) {
var request = new DisconnectSqueakPeerRequest();
request.setHost(host);
request.setPort(port);
// makeRequest(
// 'disconnectpeer',
// request,
// DisconnectSqueakPeerReply.deserializeBinary,
// handleResponse,
// );
var peerAddress = new PeerAddress();
peerAddress.setHost(host);
peerAddress.setPort(port);
request.setPeerAddress(peerAddress);
client.disconnectPeer(request, {}, (err, response) => {
handleResponse(response);
});

View file

@ -8,6 +8,7 @@ from squeak.params import SelectParams
from proto import squeak_admin_pb2
from proto import squeak_admin_pb2_grpc
from tests.util import bytes_to_base64_string
from tests.util import create_saved_peer
from tests.util import generate_signing_key
from tests.util import get_address
from tests.util import load_lightning_client
@ -113,14 +114,12 @@ def saved_squeak_hash(admin_stub, signing_profile_id):
@pytest.fixture
def peer_id(admin_stub, random_name):
# Create a new peer
create_peer_response = admin_stub.CreatePeer(
squeak_admin_pb2.CreatePeerRequest(
peer_name=random_name,
host=random_name,
port=1234,
)
peer_id = create_saved_peer(
admin_stub,
random_name,
random_name,
1234,
)
peer_id = create_peer_response.peer_id
yield peer_id
# Delete the peer
admin_stub.DeletePeer(

View file

@ -10,6 +10,7 @@ from squeak.core import CSqueak
from proto import lnd_pb2 as ln
from proto import squeak_admin_pb2
from tests.util import connect_peer
from tests.util import create_saved_peer
from tests.util import get_connected_peer
from tests.util import get_connected_peers
from tests.util import get_hash
@ -477,14 +478,12 @@ def test_delete_squeak(admin_stub, saved_squeak_hash):
def test_create_peer(admin_stub):
# Add a new peer
create_peer_response = admin_stub.CreatePeer(
squeak_admin_pb2.CreatePeerRequest(
peer_name="fake_peer_name",
host="fake_host",
port=1234,
)
peer_id = create_saved_peer(
admin_stub,
"fake_peer_name",
"fake_host",
1234,
)
peer_id = create_peer_response.peer_id
# Get the new peer
get_peer_response = admin_stub.GetPeer(
@ -492,26 +491,27 @@ def test_create_peer(admin_stub):
peer_id=peer_id,
)
)
assert get_peer_response.squeak_peer.host == "fake_host"
assert get_peer_response.squeak_peer.port == 1234
assert get_peer_response.squeak_peer.peer_address.host == "fake_host"
assert get_peer_response.squeak_peer.peer_address.port == 1234
# Get all peers
get_peers_response = admin_stub.GetPeers(
squeak_admin_pb2.GetPeersRequest())
peer_hosts = [
squeak_peer.host for squeak_peer in get_peers_response.squeak_peers]
squeak_peer.peer_address.host
for squeak_peer in get_peers_response.squeak_peers
]
assert "fake_host" in peer_hosts
def test_create_peer_empty_name(admin_stub):
# Try to create a new signing profile with an empty name
with pytest.raises(Exception) as excinfo:
admin_stub.CreatePeer(
squeak_admin_pb2.CreatePeerRequest(
peer_name="",
host="another_fake_host",
port=1234,
)
create_saved_peer(
admin_stub,
"",
"another_fake_host",
1234,
)
assert "Peer name cannot be empty." in str(excinfo.value)

View file

@ -132,20 +132,20 @@ def open_channel(lightning_client, remote_pubkey, amount):
@contextmanager
def open_peer_connection(node_stub, peer_name, peer_host, peer_port):
# Add the main node as a peer
create_peer_response = node_stub.CreatePeer(
squeak_admin_pb2.CreatePeerRequest(
peer_name=peer_name,
host=peer_host,
port=peer_port,
)
peer_id = create_saved_peer(
node_stub,
peer_name,
peer_host,
peer_port,
)
peer_id = create_peer_response.peer_id
try:
# Connect the peer
node_stub.ConnectPeer(
squeak_admin_pb2.ConnectPeerRequest(
host=peer_host,
port=peer_port,
peer_address=squeak_admin_pb2.PeerAddress(
host=peer_host,
port=peer_port,
)
)
)
yield peer_id
@ -157,8 +157,10 @@ def open_peer_connection(node_stub, peer_name, peer_host, peer_port):
# Disconnect the peer
node_stub.DisconnectPeer(
squeak_admin_pb2.DisconnectPeerRequest(
host=peer_host,
port=peer_port,
peer_address=squeak_admin_pb2.PeerAddress(
host=peer_host,
port=peer_port,
)
)
)
# Delete the peer
@ -179,13 +181,28 @@ def get_connected_peers(node_stub):
def get_connected_peer(node_stub, host, port):
get_connected_peer_response = node_stub.GetConnectedPeer(
squeak_admin_pb2.GetConnectedPeerRequest(
host=host,
port=port,
peer_address=squeak_admin_pb2.PeerAddress(
host=host,
port=port,
)
)
)
return get_connected_peer_response.connected_peer
def create_saved_peer(node_stub, name, host, port):
create_peer_response = node_stub.CreatePeer(
squeak_admin_pb2.CreatePeerRequest(
peer_name=name,
peer_address=squeak_admin_pb2.PeerAddress(
host=host,
port=port,
)
)
)
return create_peer_response.peer_id
@contextmanager
def subscribe_connected_peers(node_stub):
q = queue.Queue()

View file

@ -548,11 +548,8 @@ message CreatePeerRequest {
/// Name of the peer
string peer_name = 1;
/// Host
string host = 2;
/// Port
int32 port = 3;
/// Peer address
PeerAddress peer_address = 2;
}
message CreatePeerReply {
@ -585,14 +582,11 @@ message SqueakPeer {
/// The peer name
string peer_name = 2;
/// Host
string host = 3;
/// Port
int32 port = 4;
/// Peer address
PeerAddress peer_address = 3;
/// Autoconnect
bool autoconnect = 5;
bool autoconnect = 4;
}
message SetPeerAutoconnectRequest {
@ -666,6 +660,7 @@ message OfferDisplayEntry {
/// The seller node pubkey
string node_pubkey = 4;
// TODO: replace with LightningAddress from lnd.proto
/// The host of the seller lightning node
string node_host = 5;
@ -897,11 +892,8 @@ message GetLikedSqueakDisplaysReply {
}
message ConnectPeerRequest {
/// Host
string host = 1;
/// Port
int32 port = 2;
/// Peer address
PeerAddress peer_address = 1;
}
message ConnectPeerReply {
@ -932,11 +924,8 @@ message GetConnectedPeersReply {
}
message GetConnectedPeerRequest {
/// Host
string host = 1;
/// Port
int32 port = 2;
/// Peer address
PeerAddress peer_address = 1;
}
message GetConnectedPeerReply {
@ -944,11 +933,8 @@ message GetConnectedPeerReply {
}
message DisconnectPeerRequest {
/// Host
string host = 1;
/// Port
int32 port = 2;
/// Peer address
PeerAddress peer_address = 1;
}
message DisconnectPeerReply {

View file

@ -78,8 +78,7 @@ def squeak_peer_to_message(squeak_peer: SqueakPeer) -> squeak_admin_pb2.SqueakPe
return squeak_admin_pb2.SqueakPeer(
peer_id=squeak_peer.peer_id,
peer_name=squeak_peer.peer_name,
host=squeak_peer.address.host,
port=squeak_peer.address.port,
peer_address=peer_address_to_message(squeak_peer.address),
autoconnect=squeak_peer.autoconnect,
)
@ -179,3 +178,10 @@ def peer_address_to_message(peer_address: PeerAddress) -> squeak_admin_pb2.PeerA
host=peer_address.host,
port=peer_address.port,
)
def message_to_peer_address(peer_address: squeak_admin_pb2.PeerAddress) -> PeerAddress:
return PeerAddress(
host=peer_address.host,
port=peer_address.port,
)

View file

@ -3,6 +3,7 @@ import sys
from proto import squeak_admin_pb2
from squeaknode.admin.messages import connected_peer_to_message
from squeaknode.admin.messages import message_to_peer_address
from squeaknode.admin.messages import offer_entry_to_message
from squeaknode.admin.messages import payment_summary_to_message
from squeaknode.admin.messages import received_payments_to_message
@ -385,19 +386,16 @@ class SqueakAdminServerHandler(object):
def handle_create_peer(self, request):
peer_name = request.peer_name
host = request.host
port = request.port
peer_address = message_to_peer_address(request.peer_address)
logger.info(
"Handle create peer with name: {}, host: {}, port: {}".format(
"Handle create peer with name: {}, address: {}".format(
peer_name,
host,
port,
peer_address,
)
)
peer_id = self.squeak_controller.create_peer(
peer_name,
host,
port,
peer_address,
)
return squeak_admin_pb2.CreatePeerReply(
peer_id=peer_id,
@ -666,11 +664,10 @@ class SqueakAdminServerHandler(object):
)
def handle_connect_peer(self, request):
host = request.host
port = request.port
peer_address = message_to_peer_address(request.peer_address)
logger.info(
"Handle connect peer with host: {}, port: {}".format(host, port))
self.squeak_controller.connect_peer(host, port)
"Handle connect peer with peer address: {}".format(peer_address))
self.squeak_controller.connect_peer(peer_address)
return squeak_admin_pb2.ConnectPeerReply()
def handle_get_connected_peers(self, request):
@ -687,12 +684,12 @@ class SqueakAdminServerHandler(object):
)
def handle_get_connected_peer(self, request):
host = request.host
port = request.port
logger.info("Handle get connected peer host: {}, port: {}".format(
host, port
peer_address = message_to_peer_address(request.peer_address)
logger.info("Handle get connected peer for address: {}".format(
peer_address,
))
connected_peer = self.squeak_controller.get_connected_peer(host, port)
connected_peer = self.squeak_controller.get_connected_peer(
peer_address)
logger.info("Connected peer: {}".format(
connected_peer,
))
@ -706,11 +703,10 @@ class SqueakAdminServerHandler(object):
)
def handle_disconnect_peer(self, request):
host = request.host
port = request.port
peer_address = message_to_peer_address(request.peer_address)
logger.info(
"Handle connect peer with host: {}, port: {}".format(host, port))
self.squeak_controller.disconnect_peer(host, port)
"Handle connect peer with peer address: {}".format(peer_address))
self.squeak_controller.disconnect_peer(peer_address)
return squeak_admin_pb2.DisconnectPeerReply()
def handle_subscribe_connected_peers(self, request, stopped):

View file

@ -1,14 +1,14 @@
{
"files": {
"main.js": "/static/js/main.dd078910.chunk.js",
"main.js.map": "/static/js/main.dd078910.chunk.js.map",
"main.js": "/static/js/main.a66175b6.chunk.js",
"main.js.map": "/static/js/main.a66175b6.chunk.js.map",
"runtime-main.js": "/static/js/runtime-main.9f0ba400.js",
"runtime-main.js.map": "/static/js/runtime-main.9f0ba400.js.map",
"static/css/2.ea4ba2f0.chunk.css": "/static/css/2.ea4ba2f0.chunk.css",
"static/js/2.ec475cb5.chunk.js": "/static/js/2.ec475cb5.chunk.js",
"static/js/2.ec475cb5.chunk.js.map": "/static/js/2.ec475cb5.chunk.js.map",
"index.html": "/index.html",
"precache-manifest.a14377ec9407125fe4225bde0608031b.js": "/precache-manifest.a14377ec9407125fe4225bde0608031b.js",
"precache-manifest.db471457a58ceabe0d2bb86037634907.js": "/precache-manifest.db471457a58ceabe0d2bb86037634907.js",
"service-worker.js": "/service-worker.js",
"static/css/2.ea4ba2f0.chunk.css.map": "/static/css/2.ea4ba2f0.chunk.css.map",
"static/js/2.ec475cb5.chunk.js.LICENSE.txt": "/static/js/2.ec475cb5.chunk.js.LICENSE.txt",
@ -20,6 +20,6 @@
"static/js/runtime-main.9f0ba400.js",
"static/css/2.ea4ba2f0.chunk.css",
"static/js/2.ec475cb5.chunk.js",
"static/js/main.dd078910.chunk.js"
"static/js/main.a66175b6.chunk.js"
]
}

View file

@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/manifest.json"/><title>Squeak Node</title><meta name="description" content="Squeak Node is a frontend for accessing a squeak node"><meta name="keywords" content="squeak, bitcoin, lightning"><meta name="author" content="Flatlogic LLC."><link href="/static/css/2.ea4ba2f0.chunk.css" rel="stylesheet"></head><body style="font-family:Roboto,sans-serif"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,f,l=r[0],a=r[1],i=r[2],c=0,s=[];c<l.length;c++)f=l[c],Object.prototype.hasOwnProperty.call(o,f)&&o[f]&&s.push(o[f][0]),o[f]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,i||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var a=t[l];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=f(f.s=t[0]))}return e}var n={},o={1:0},u=[];function f(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.m=e,f.c=n,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)f.d(t,n,function(r){return e[r]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/";var l=this["webpackJsonpsqueak-node-frontend"]=this["webpackJsonpsqueak-node-frontend"]||[],a=l.push.bind(l);l.push=r,l=l.slice();for(var i=0;i<l.length;i++)r(l[i]);var p=a;t()}([])</script><script src="/static/js/2.ec475cb5.chunk.js"></script><script src="/static/js/main.dd078910.chunk.js"></script></body></html>
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/manifest.json"/><title>Squeak Node</title><meta name="description" content="Squeak Node is a frontend for accessing a squeak node"><meta name="keywords" content="squeak, bitcoin, lightning"><meta name="author" content="Flatlogic LLC."><link href="/static/css/2.ea4ba2f0.chunk.css" rel="stylesheet"></head><body style="font-family:Roboto,sans-serif"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,f,l=r[0],a=r[1],i=r[2],c=0,s=[];c<l.length;c++)f=l[c],Object.prototype.hasOwnProperty.call(o,f)&&o[f]&&s.push(o[f][0]),o[f]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,i||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var a=t[l];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=f(f.s=t[0]))}return e}var n={},o={1:0},u=[];function f(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.m=e,f.c=n,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)f.d(t,n,function(r){return e[r]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/";var l=this["webpackJsonpsqueak-node-frontend"]=this["webpackJsonpsqueak-node-frontend"]||[],a=l.push.bind(l);l.push=r,l=l.slice();for(var i=0;i<l.length;i++)r(l[i]);var p=a;t()}([])</script><script src="/static/js/2.ec475cb5.chunk.js"></script><script src="/static/js/main.a66175b6.chunk.js"></script></body></html>

View file

@ -1,6 +1,6 @@
self.__precacheManifest = (self.__precacheManifest || []).concat([
{
"revision": "6c5cdfcab1c01b37639fdea4d28f88c9",
"revision": "435e086eedd6c0b852dbb8c637e6d6ac",
"url": "/index.html"
},
{
@ -16,8 +16,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "/static/js/2.ec475cb5.chunk.js.LICENSE.txt"
},
{
"revision": "c3ddd076bf622825d31c",
"url": "/static/js/main.dd078910.chunk.js"
"revision": "d6aa29a315dca0b5c494",
"url": "/static/js/main.a66175b6.chunk.js"
},
{
"revision": "cc9816de5a8639d377ea",

View file

@ -14,7 +14,7 @@
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
importScripts(
"/precache-manifest.a14377ec9407125fe4225bde0608031b.js"
"/precache-manifest.db471457a58ceabe0d2bb86037634907.js"
);
self.addEventListener('message', (event) => {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -49,19 +49,20 @@ class NetworkManager(object):
self.peer_server.stop()
self.connection_manager.stop_all_connections()
def connect_peer(self, host: str, port: int) -> None:
port = port or squeak.params.params.DEFAULT_PORT
peer_address = PeerAddress(host=host, port=port)
def connect_peer(self, peer_address: PeerAddress) -> None:
port = peer_address.port or squeak.params.params.DEFAULT_PORT
peer_address = PeerAddress(
host=peer_address.host,
port=port,
)
# TODO: check if address is already connected.
self.peer_client.connect_address(peer_address)
def disconnect_peer(self, host: str, port: int) -> None:
peer_address = PeerAddress(host=host, port=port)
def disconnect_peer(self, peer_address: PeerAddress) -> None:
self.connection_manager.stop_connection(peer_address)
def get_connected_peer(self, host, port):
address = (host, port)
return self.connection_manager.get_peer(address)
def get_connected_peer(self, peer_address: PeerAddress):
return self.connection_manager.get_peer(peer_address)
def get_connected_peers(self):
return self.connection_manager.peers

View file

@ -17,11 +17,10 @@ class PeerClient(object):
self.peer_handler = peer_handler
def make_connection(self, address):
logger.debug('Making connection to {}'.format(address))
logger.info('Making connection to {}'.format(address))
try:
peer_socket = socket.socket()
logger.info('Got socket to {}'.format(address))
logger.info('Trying to connect socket to {}'.format(address))
peer_socket.settimeout(SOCKET_CONNECT_TIMEOUT)
peer_socket.connect(address)
peer_socket.setblocking(True)
@ -32,7 +31,6 @@ class PeerClient(object):
def connect_address(self, address):
"""Connect to new address."""
logger.debug('Connecting to peer with address {}'.format(address))
logger.info('Connecting to peer with address {}'.format(address))
threading.Thread(
target=self.make_connection,

View file

@ -232,14 +232,14 @@ class SqueakController:
logger.info("Deleted number of offers : {}".format(num_deleted_offers))
self.squeak_db.delete_squeak(squeak_hash)
def create_peer(self, peer_name: str, host: str, port: int):
def create_peer(self, peer_name: str, peer_address: PeerAddress):
if len(peer_name) == 0:
raise Exception(
"Peer name cannot be empty.",
)
port = port or squeak.params.params.DEFAULT_PORT
port = peer_address.port or squeak.params.params.DEFAULT_PORT
peer_address = PeerAddress(
host=host,
host=peer_address.host,
port=port,
)
squeak_peer = SqueakPeer(
@ -459,19 +459,17 @@ class SqueakController:
squeak_hash,
)
def connect_peer(self, host: str, port: int) -> None:
logger.info("Connect to peer: {}:{}".format(
host,
port,
def connect_peer(self, peer_address: PeerAddress) -> None:
logger.info("Connect to peer: {}".format(
peer_address,
))
self.network_manager.connect_peer(host, port)
self.network_manager.connect_peer(peer_address)
def connect_saved_peers(self) -> None:
peers = self.get_autoconnect_peers()
for peer in peers:
self.network_manager.connect_peer(
peer.address.host,
peer.address.port,
peer.address,
)
def get_address(self):
@ -480,8 +478,8 @@ class SqueakController:
def get_remote_address(self, address):
return self.network_manager.get_remote_address(address)
def get_connected_peer(self, host, port):
return self.network_manager.get_connected_peer(host, port)
def get_connected_peer(self, peer_address: PeerAddress):
return self.network_manager.get_connected_peer(peer_address)
def get_connected_peers(self):
return self.network_manager.get_connected_peers()
@ -606,12 +604,11 @@ class SqueakController:
def broadcast_msg(self, msg: MsgSerializable) -> None:
self.network_manager.broadcast_msg(msg)
def disconnect_peer(self, host: str, port: int) -> None:
logger.info("Disconnect to peer: {}:{}".format(
host,
port,
def disconnect_peer(self, peer_address: PeerAddress) -> None:
logger.info("Disconnect to peer: {}".format(
peer_address,
))
self.network_manager.disconnect_peer(host, port)
self.network_manager.disconnect_peer(peer_address)
def subscribe_connected_peers(self, stopped: threading.Event):
# with ReceivedPaymentsSubscriptionClient(

View file

@ -51,6 +51,16 @@ def lightning_host_port():
return LightningAddressHostPort(host="my_lightning_host", port=8765)
@pytest.fixture
def peer_address():
return PeerAddress(host="fake_host", port=5678)
@pytest.fixture
def peer_address_with_zero():
return PeerAddress(host="fake_host", port=0)
@pytest.fixture
def price_msat():
return 777
@ -129,31 +139,26 @@ def test_get_network_regtest(regtest_squeak_controller):
# assert squeak_controller.get_network() == "regtest"
def test_create_peer(squeak_db, squeak_controller):
def test_create_peer(squeak_db, squeak_controller, peer_address):
squeak_controller.create_peer(
"fake_peer_name",
"fake_host",
5678,
peer_address,
)
squeak_db.insert_peer.assert_called_with(
SqueakPeer(
peer_id=None,
peer_name="fake_peer_name",
address=PeerAddress(
host="fake_host",
port=5678,
),
address=peer_address,
autoconnect=False,
)
)
def test_create_peer_default_port(config, squeak_db, squeak_controller):
def test_create_peer_default_port(config, squeak_db, squeak_controller, peer_address_with_zero):
squeak_controller.create_peer(
"fake_peer_name",
"fake_host",
0,
peer_address_with_zero,
)
squeak_db.insert_peer.assert_called_with(
@ -161,7 +166,7 @@ def test_create_peer_default_port(config, squeak_db, squeak_controller):
peer_id=None,
peer_name="fake_peer_name",
address=PeerAddress(
host="fake_host",
host=peer_address_with_zero.host,
port=squeak.params.params.DEFAULT_PORT,
),
autoconnect=False,