Exemplo n.º 1
0
def test_initial_consensus_state(some_item, other_item, validators):
    name = some_item(validators)
    primary = other_item(validators)
    data = ConsensusSharedData(name, validators, 0)
    data.primary_name = primary
    data.set_validators(validators)

    # General info
    assert data.name == name

    # Validators
    assert data.validators == validators
    assert data.quorums.n == len(validators)
    assert data.primary_name == primary

    # View
    assert data.view_no == 0
    assert not data.waiting_for_new_view

    # 3PC votes
    assert data.preprepared == []
    assert data.prepared == []

    # Checkpoints
    assert data.stable_checkpoint == 0
    assert list(data.checkpoints) == [data.initial_checkpoint]
Exemplo n.º 2
0
def primary_connection_monitor_service(internal_bus, external_bus, timer):
    # TODO: Use validators fixture
    nodes = genNodeNames(4)
    data = ConsensusSharedData("some_name", nodes, 0)
    data.node_mode = Mode.participating
    data.node_status = Status.started
    data.primary_name = nodes[0]
    service = PrimaryConnectionMonitorService(data=data,
                                              timer=timer,
                                              bus=internal_bus,
                                              network=external_bus)
    internal_bus.send(PrimarySelected())
    return service
def test_process_message_req_new_view_by_non_primary(message_req_service: MessageReqService,
                                                     external_bus, data: ConsensusSharedData,
                                                     new_view_message: NewView):
    frm = "frm"
    data.primary_name = "a" + data.name
    data.new_view_votes.add_new_view(new_view_message, data.primary_name)
    message_req = MessageReq(**{
        f.MSG_TYPE.nm: NEW_VIEW,
        f.PARAMS.nm: {f.INST_ID.nm: data.inst_id,
                      f.VIEW_NO.nm: data.view_no},
    })
    external_bus.process_incoming(message_req, frm)
    assert len(external_bus.sent_messages) == 1
def test_process_message_req_new_view(message_req_service: MessageReqService,
                                      external_bus, data: ConsensusSharedData,
                                      new_view_message: NewView):
    frm = "frm"
    data.primary_name = data.name
    data.new_view_votes.add_new_view(new_view_message, data.primary_name)
    message_req = MessageReq(**{
        f.MSG_TYPE.nm: NEW_VIEW,
        f.PARAMS.nm: {f.INST_ID.nm: data.inst_id,
                      f.VIEW_NO.nm: data.view_no},
    })
    external_bus.process_incoming(message_req, frm)
    assert len(external_bus.sent_messages) == 1

    assert external_bus.sent_messages[0] == (MessageRep(message_req.msg_type,
                                                        message_req.params,
                                                        new_view_message._asdict()),
                                             [frm])