diff --git a/libp2p/kademlia/kad_peerinfo.py b/libp2p/kademlia/kad_peerinfo.py index 0d8c233f..195fbe01 100644 --- a/libp2p/kademlia/kad_peerinfo.py +++ b/libp2p/kademlia/kad_peerinfo.py @@ -15,6 +15,7 @@ class KadPeerInfo(PeerInfo): def __init__(self, peer_id, peer_data=None): super(KadPeerInfo, self).__init__(peer_id, peer_data) + self.peer_id_obj = peer_id self.peer_id = peer_id.get_raw_id() self.xor_id = peer_id.get_xor_id() diff --git a/libp2p/routing/kademlia/kademlia_peer_router.py b/libp2p/routing/kademlia/kademlia_peer_router.py index 3a13f459..958066cf 100644 --- a/libp2p/routing/kademlia/kademlia_peer_router.py +++ b/libp2p/routing/kademlia/kademlia_peer_router.py @@ -10,7 +10,7 @@ class KadmeliaPeerRouter(IPeerRouting): def __init__(self, dht_server): self.server = dht_server - def find_peer(self, peer_id): + async def find_peer(self, peer_id): """ Find specific Peer FindPeer searches for a peer with given peer_id, returns a peer.PeerInfo @@ -18,7 +18,7 @@ class KadmeliaPeerRouter(IPeerRouting): """ # switching peer_id to xor_id used by kademlia as node_id xor_id = peer_id.get_xor_id() - value = self.server.get(xor_id) + value = await self.server.get(xor_id) return decode_peerinfo(value) diff --git a/tests/routing/__init__.py b/tests/routing/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/routing/test_kad_peer_router.py b/tests/routing/test_kad_peer_router.py new file mode 100644 index 00000000..9c7f402f --- /dev/null +++ b/tests/routing/test_kad_peer_router.py @@ -0,0 +1,25 @@ +import asyncio +import pytest + +from libp2p.kademlia.network import KademliaServer +from libp2p.routing.kademlia.kademlia_peer_router import KadmeliaPeerRouter +from libp2p.peer.id import id_b58_encode + +@pytest.mark.asyncio +async def test_example(): + node_a = KademliaServer() + await node_a.listen(5678) + + node_b = KademliaServer() + await node_b.listen(5679) + + value = await node_b.bootstrap([("127.0.0.1", 5678)]) + peer_info = value[0] + peer_id = peer_info.peer_id_obj + print(id_b58_encode(peer_id)) + # await node_a.set(peer_info.xor_id, str(peer_info.ip) + "/" + str(peer_info.port)) + # router = KadmeliaPeerRouter(node_b) + # value = await router.find_peer(peer_id) + # print("value vvvv") + # print(value.xor_) + # assert value == str(peer_info.ip) + "/" + str(peer_info.port)