async def test_peer_pool_connect(monkeypatch, event_loop, server, receiver_remote): started_peers = [] async def mock_start_peer(peer): nonlocal started_peers started_peers.append(peer) monkeypatch.setattr(server.peer_pool, 'start_peer', mock_start_peer) initiator_peer_pool = ParagonPeerPool( privkey=INITIATOR_PRIVKEY, context=ParagonContext(), ) nodes = [receiver_remote] asyncio.ensure_future(initiator_peer_pool.run(), loop=event_loop) await initiator_peer_pool.events.started.wait() await initiator_peer_pool.connect_to_nodes(nodes) # Give the receiver_server a chance to ack the handshake. await asyncio.sleep(0.2) assert len(started_peers) == 1 assert len(initiator_peer_pool.connected_nodes) == 1 # Stop our peer to make sure its pending asyncio tasks are cancelled. await list(initiator_peer_pool.connected_nodes.values())[0].cancel() await initiator_peer_pool.cancel()
async def test_peer_pool_answers_connect_commands(event_loop, event_bus, server, receiver_remote): # This is the PeerPool which will accept our message and try to connect to {server} initiator_peer_pool = ParagonPeerPool( privkey=INITIATOR_PRIVKEY, context=ParagonContext(), event_bus=event_bus, ) asyncio.ensure_future(initiator_peer_pool.run(), loop=event_loop) await initiator_peer_pool.events.started.wait() async with run_peer_pool_event_server( event_bus, initiator_peer_pool, ): assert len(server.peer_pool.connected_nodes) == 0 await event_bus.wait_until_any_endpoint_subscribed_to(ConnectToNodeCommand) await event_bus.broadcast( ConnectToNodeCommand(receiver_remote), TO_NETWORKING_BROADCAST_CONFIG ) # This test was maybe 30% flaky at 0.1 sleep await asyncio.sleep(0.2) assert len(server.peer_pool.connected_nodes) == 1 await initiator_peer_pool.cancel()
async def test_peer_pool_answers_connect_commands(event_loop, event_bus, server): # This is the PeerPool which will accept our message and try to connect to {server} initiator_peer_pool = ParagonPeerPool( privkey=INITIATOR_PRIVKEY, context=ParagonContext(), event_bus=event_bus, ) asyncio.ensure_future(initiator_peer_pool.run(), loop=event_loop) await initiator_peer_pool.events.started.wait() assert len(server.peer_pool.connected_nodes) == 0 event_bus.broadcast(ConnectToNodeCommand(RECEIVER_REMOTE.uri()), TO_NETWORKING_BROADCAST_CONFIG) await asyncio.sleep(0.5) assert len(server.peer_pool.connected_nodes) == 1 await initiator_peer_pool.cancel()