async def test_find_node_handler_sends_many_remote_enrs(find_node_handler_service, incoming_message_channels, outgoing_message_channels, filled_routing_table, node_db): distance = 255 node_ids = filled_routing_table.get_nodes_at_log_distance(distance) assert len(node_ids) == filled_routing_table.bucket_size enrs = [node_db.get_enr(node_id) for node_id in node_ids] find_node = FindNodeMessageFactory(distance=distance) incoming_message = IncomingMessageFactory(message=find_node) await incoming_message_channels[0].send(incoming_message) outgoing_messages = [] while True: await wait_all_tasks_blocked() try: outgoing_messages.append(outgoing_message_channels[1].receive_nowait()) except trio.WouldBlock: break for outgoing_message in outgoing_messages: assert isinstance(outgoing_message.message, NodesMessage) assert outgoing_message.message.request_id == find_node.request_id assert outgoing_message.message.total == len(outgoing_messages) assert outgoing_message.message.enrs sent_enrs = [ enr for outgoing_message in outgoing_messages for enr in outgoing_message.message.enrs ] assert sent_enrs == enrs
async def test_find_node_handler_sends_nodes(find_node_handler, incoming_message_channels, outgoing_message_channels, local_enr): find_node = FindNodeMessageFactory(distance=0) incoming_message = IncomingMessageFactory(message=find_node) await incoming_message_channels[0].send(incoming_message) await wait_all_tasks_blocked() outgoing_message = outgoing_message_channels[1].receive_nowait() assert isinstance(outgoing_message.message, NodesMessage) assert outgoing_message.message.request_id == find_node.request_id assert outgoing_message.message.total == 1 assert outgoing_message.message.enrs == (local_enr, )
async def test_find_node_handler_sends_empty(find_node_handler_service, incoming_message_channels, outgoing_message_channels, routing_table, node_db): distance = 5 assert len(routing_table.get_nodes_at_log_distance(distance)) == 0 find_node = FindNodeMessageFactory(distance=distance) incoming_message = IncomingMessageFactory(message=find_node) await incoming_message_channels[0].send(incoming_message) await wait_all_tasks_blocked() outgoing_message = outgoing_message_channels[1].receive_nowait() assert isinstance(outgoing_message.message, NodesMessage) assert outgoing_message.message.request_id == find_node.request_id assert outgoing_message.message.total == 1 assert not outgoing_message.message.enrs