def test_get_msgs_for_lagged_nodes(tmpdir): ledgerInfo = ( # ledger id, ledger length, merkle root (0, 10, '7toTJZHzaxQ7cGZv18MR4PMBfuUecdEQ1JRqJVeJBvmd'), (1, 5, 'Hs9n4M3CrmrkWGVviGq48vSbMpCrk6WgSBZ7sZAWbJy3'), ) messages = [ (ViewChangeDone( viewNo=0, name='Node2', ledgerInfo=ledgerInfo), 'Node1'), (ViewChangeDone( viewNo=0, name='Node3', ledgerInfo=ledgerInfo), 'Node2')] node = FakeNode(str(tmpdir)) selector = PrimarySelector(node) for message in messages: selector._processViewChangeDoneMessage(*message) messages_for_lagged = selector.get_msgs_for_lagged_nodes() assert {m for m in messages_for_lagged} == { m[0] for m in messages if m[1] == node.name}
def testProcessViewChangeDone(): ledgerInfo = ( # ledger id, ledger length, merkle root (0, 10, '7toTJZHzaxQ7cGZv18MR4PMBfuUecdEQ1JRqJVeJBvmd'), (1, 5, 'Hs9n4M3CrmrkWGVviGq48vSbMpCrk6WgSBZ7sZAWbJy3')) msg = ViewChangeDone(viewNo=0, name='Node2', ledgerInfo=ledgerInfo) node = FakeNode() selector = PrimarySelector(node) quorum = selector.quorum for i in range(quorum): selector._processViewChangeDoneMessage(msg, 'Node2') assert selector._view_change_done assert not node.is_primary_found() selector._processViewChangeDoneMessage(msg, 'Node1') assert selector._view_change_done assert not node.is_primary_found() selector._processViewChangeDoneMessage(msg, 'Node3') assert selector._verify_primary(msg.name, msg.ledgerInfo) selector._startSelection() assert selector._view_change_done # Since the FakeNode does not have setting of mode # assert node.is_primary_found() selector.view_change_started(1) assert not selector._view_change_done