Exemplo n.º 1
0
def create_new_view_from_vc(vc, validators, checkpoint=None, batches=None):
    vc_digest = view_change_digest(vc)
    vcs = [(node_name, vc_digest) for node_name in validators]
    checkpoint = checkpoint or vc.checkpoints[0]
    batches = batches or vc.prepared
    return NewView(vc.viewNo, sorted(vcs, key=itemgetter(0)), checkpoint,
                   batches)
Exemplo n.º 2
0
def test_view_change_digest_is_256_bit_hexdigest(random):
    digest = view_change_digest(
        create_view_change(initial_view_no=0,
                           stable_cp=random.integer(0, 10000),
                           batches=create_batches(view_no=0)))
    assert isinstance(digest, str)
    assert len(digest) == 64
    assert all(v in string.hexdigits for v in digest)
 def _view_change_acks(vc, vc_frm, primary, count):
     digest = view_change_digest(vc)
     non_senders = [
         name for name in validators if name not in [vc_frm, primary]
     ]
     ack_frms = random.sample(non_senders, count)
     return [(ViewChangeAck(viewNo=vc.viewNo, name=vc_frm,
                            digest=digest), ack_frm)
             for ack_frm in ack_frms]
Exemplo n.º 4
0
def test_different_view_change_messages_have_different_digests(random):
    batches = create_batches(view_no=0)
    assert view_change_digest(create_view_change(initial_view_no=0, stable_cp=100, batches=batches)) != \
           view_change_digest(create_view_change(initial_view_no=1, stable_cp=100, batches=batches))
    assert view_change_digest(create_view_change(initial_view_no=1, stable_cp=100, batches=batches)) != \
           view_change_digest(create_view_change(initial_view_no=1, stable_cp=101, batches=batches))
    assert view_change_digest(
        create_view_change(initial_view_no=1, stable_cp=100, batches=create_batches(view_no=0))) != \
           view_change_digest(create_view_change(initial_view_no=1, stable_cp=100, batches=create_batches(view_no=1)))
    assert view_change_digest(create_view_change(initial_view_no=0, stable_cp=100, batches=batches)) == \
           view_change_digest(create_view_change(initial_view_no=0, stable_cp=100, batches=batches))
def test_non_primary_responds_to_view_change_message_with_view_change_ack_to_new_primary(
        some_item, other_item, validators, primary, view_change_service,
        initial_view_no, view_change_message):
    next_view_no = initial_view_no + 1
    non_primary_name = some_item(validators, exclude=[primary(next_view_no)])
    service = view_change_service(non_primary_name)
    service.start_view_change()
    service._network.sent_messages.clear()

    vc = view_change_message(next_view_no)
    frm = other_item(validators, exclude=[non_primary_name])
    service._network.process_incoming(vc, frm)

    assert len(service._network.sent_messages) == 1
    msg, dst = service._network.sent_messages[0]
    assert dst == service._data.primary_name
    assert isinstance(msg, ViewChangeAck)
    assert msg.viewNo == vc.viewNo
    assert msg.name == frm
    assert msg.digest == view_change_digest(vc)
Exemplo n.º 6
0
def create_view_change_acks(vc, vc_frm, senders):
    digest = view_change_digest(vc)
    senders = [name for name in senders if name != vc_frm]
    return [(ViewChangeAck(viewNo=vc.viewNo, name=vc_frm,
                           digest=digest), ack_frm) for ack_frm in senders]
def test_different_view_change_messages_have_different_digests(
        view_change_message, random):
    vc = view_change_message(random.integer(0, 10000))
    other_vc = view_change_message(random.integer(0, 10000))
    assert view_change_digest(vc) != view_change_digest(other_vc)
def test_view_change_digest_is_256_bit_hexdigest(view_change_message, random):
    vc = view_change_message(random.integer(0, 10000))
    digest = view_change_digest(vc)
    assert isinstance(digest, str)
    assert len(digest) == 64
    assert all(v in string.hexdigits for v in digest)