コード例 #1
0
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
コード例 #2
0
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, )
コード例 #3
0
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