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]
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])