Merge pull request #345 from ralexstokes/install-default-protocols
Install default protocols
This commit is contained in:
commit
071eccc995
|
@ -2,10 +2,16 @@ from collections import OrderedDict
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from libp2p.host.host_interface import IHost
|
from libp2p.host.host_interface import IHost
|
||||||
|
from libp2p.host.ping import ID as PingID
|
||||||
|
from libp2p.host.ping import handle_ping
|
||||||
|
from libp2p.identity.identify.protocol import ID as IdentifyID
|
||||||
|
from libp2p.identity.identify.protocol import identify_handler_for
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from libp2p.typing import TProtocol, StreamHandlerFn
|
from libp2p.typing import TProtocol, StreamHandlerFn
|
||||||
|
|
||||||
|
|
||||||
def get_default_protocols(host: IHost) -> "OrderedDict[TProtocol, StreamHandlerFn]":
|
def get_default_protocols(host: IHost) -> "OrderedDict[TProtocol, StreamHandlerFn]":
|
||||||
return OrderedDict()
|
return OrderedDict(
|
||||||
|
((IdentifyID, identify_handler_for(host)), (PingID, handle_ping))
|
||||||
|
)
|
||||||
|
|
|
@ -4,8 +4,9 @@ import logging
|
||||||
from libp2p.network.stream.exceptions import StreamEOF, StreamReset
|
from libp2p.network.stream.exceptions import StreamEOF, StreamReset
|
||||||
from libp2p.network.stream.net_stream_interface import INetStream
|
from libp2p.network.stream.net_stream_interface import INetStream
|
||||||
from libp2p.peer.id import ID as PeerID
|
from libp2p.peer.id import ID as PeerID
|
||||||
|
from libp2p.typing import TProtocol
|
||||||
|
|
||||||
ID = "/ipfs/ping/1.0.0"
|
ID = TProtocol("/ipfs/ping/1.0.0")
|
||||||
PING_LENGTH = 32
|
PING_LENGTH = 32
|
||||||
RESP_TIMEOUT = 60
|
RESP_TIMEOUT = 60
|
||||||
|
|
||||||
|
|
|
@ -4,11 +4,11 @@ from multiaddr import Multiaddr
|
||||||
|
|
||||||
from libp2p.host.host_interface import IHost
|
from libp2p.host.host_interface import IHost
|
||||||
from libp2p.network.stream.net_stream_interface import INetStream
|
from libp2p.network.stream.net_stream_interface import INetStream
|
||||||
from libp2p.typing import StreamHandlerFn
|
from libp2p.typing import StreamHandlerFn, TProtocol
|
||||||
|
|
||||||
from .pb.identify_pb2 import Identify
|
from .pb.identify_pb2 import Identify
|
||||||
|
|
||||||
ID = "/ipfs/id/1.0.0"
|
ID = TProtocol("/ipfs/id/1.0.0")
|
||||||
PROTOCOL_VERSION = "ipfs/0.1.0"
|
PROTOCOL_VERSION = "ipfs/0.1.0"
|
||||||
# TODO dynamically generate the agent version
|
# TODO dynamically generate the agent version
|
||||||
AGENT_VERSION = "py-libp2p/alpha"
|
AGENT_VERSION = "py-libp2p/alpha"
|
||||||
|
|
|
@ -11,4 +11,6 @@ def test_default_protocols():
|
||||||
|
|
||||||
mux = host.get_mux()
|
mux = host.get_mux()
|
||||||
handlers = mux.handlers
|
handlers = mux.handlers
|
||||||
assert handlers == get_default_protocols(host)
|
# NOTE: comparing keys for equality as handlers may be closures that do not compare in the way
|
||||||
|
# this test is concerned with
|
||||||
|
assert handlers.keys() == get_default_protocols(host).keys()
|
||||||
|
|
|
@ -3,28 +3,16 @@ import secrets
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from libp2p.host.ping import ID, PING_LENGTH, handle_ping
|
from libp2p.host.ping import ID, PING_LENGTH
|
||||||
from libp2p.peer.peerinfo import info_from_p2p_addr
|
from libp2p.peer.peerinfo import info_from_p2p_addr
|
||||||
from tests.utils import set_up_nodes_by_transport_opt
|
from tests.utils import set_up_nodes_by_transport_opt
|
||||||
|
|
||||||
|
|
||||||
def _add_ping_to(host):
|
|
||||||
host.set_stream_handler(ID, handle_ping)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_ping_once():
|
async def test_ping_once():
|
||||||
transport_opt_list = [["/ip4/127.0.0.1/tcp/0"], ["/ip4/127.0.0.1/tcp/0"]]
|
transport_opt_list = [["/ip4/127.0.0.1/tcp/0"], ["/ip4/127.0.0.1/tcp/0"]]
|
||||||
(host_a, host_b) = await set_up_nodes_by_transport_opt(transport_opt_list)
|
(host_a, host_b) = await set_up_nodes_by_transport_opt(transport_opt_list)
|
||||||
|
|
||||||
# NOTE: this will fail after we add ping as a default handler
|
|
||||||
# as a forced reminder to fix this test by removing the calls to
|
|
||||||
# `_add_ping_to`
|
|
||||||
assert host_a.get_mux().handlers == {}
|
|
||||||
assert host_b.get_mux().handlers == {}
|
|
||||||
_add_ping_to(host_a)
|
|
||||||
_add_ping_to(host_b)
|
|
||||||
|
|
||||||
addr = host_a.get_addrs()[0]
|
addr = host_a.get_addrs()[0]
|
||||||
info = info_from_p2p_addr(addr)
|
info = info_from_p2p_addr(addr)
|
||||||
await host_b.connect(info)
|
await host_b.connect(info)
|
||||||
|
@ -45,14 +33,6 @@ async def test_ping_several():
|
||||||
transport_opt_list = [["/ip4/127.0.0.1/tcp/0"], ["/ip4/127.0.0.1/tcp/0"]]
|
transport_opt_list = [["/ip4/127.0.0.1/tcp/0"], ["/ip4/127.0.0.1/tcp/0"]]
|
||||||
(host_a, host_b) = await set_up_nodes_by_transport_opt(transport_opt_list)
|
(host_a, host_b) = await set_up_nodes_by_transport_opt(transport_opt_list)
|
||||||
|
|
||||||
# NOTE: this will fail after we add ping as a default handler
|
|
||||||
# as a forced reminder to fix this test by removing the calls to
|
|
||||||
# `_add_ping_to`
|
|
||||||
assert host_a.get_mux().handlers == {}
|
|
||||||
assert host_b.get_mux().handlers == {}
|
|
||||||
_add_ping_to(host_a)
|
|
||||||
_add_ping_to(host_b)
|
|
||||||
|
|
||||||
addr = host_a.get_addrs()[0]
|
addr = host_a.get_addrs()[0]
|
||||||
info = info_from_p2p_addr(addr)
|
info = info_from_p2p_addr(addr)
|
||||||
await host_b.connect(info)
|
await host_b.connect(info)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user