예제 #1
0
def do_test(seed):
    # 1. Setup pool
    requests_count = REQUEST_COUNT
    batches_count = requests_count // MAX_BATCH_SIZE
    random = DefaultSimRandom(seed)
    reqs = create_requests(requests_count)
    pool = setup_pool(random)
    pool.sim_send_requests(reqs)
    initial_ledger_size = get_pools_ledger_size(pool)

    # 2. Send 3pc batches
    random_interval = 1000
    RepeatingTimer(pool.timer, random_interval, partial(order_requests, pool))

    for node in pool.nodes:
        pool.timer.schedule(
            3000,
            partial(node._view_changer.process_need_view_change,
                    NeedViewChange(view_no=1)))
    # 3. Make sure that view_change is completed
    for node in pool.nodes:
        pool.timer.wait_for(lambda: node._view_changer._data.view_no == 1)

    # 3. Make sure all nodes ordered all the requests
    for node in pool.nodes:
        pool.timer.wait_for(partial(check_batch_count, node, batches_count))
        pool.timer.wait_for(
            partial(check_ledger_size, node,
                    initial_ledger_size + REQUEST_COUNT))

    # 4. Check data consistency
    pool.timer.wait_for(lambda: check_no_asserts(check_consistency, pool))
def test_view_change_while_ordering_with_real_msgs(seed):
    # 1. Setup pool
    requests_count = REQUEST_COUNT
    batches_count = requests_count // MAX_BATCH_SIZE
    random = DefaultSimRandom(seed)
    pool = setup_pool(random, requests_count)

    # 2. Send 3pc batches
    random_interval = 1000
    RepeatingTimer(pool.timer, random_interval, partial(order_requests, pool))

    for node in pool.nodes:
        pool.timer.schedule(
            3000,
            partial(node._view_changer.process_need_view_change,
                    NeedViewChange(view_no=1)))
    # 3. Make sure that view_change is completed
    for node in pool.nodes:
        pool.timer.wait_for(lambda: node._view_changer._data.view_no == 1)

    # 3. Make sure all nodes ordered all the requests
    for node in pool.nodes:
        pool.timer.wait_for(partial(check_batch_count, node, batches_count))

    # 4. Check data consistency
    check_consistency(pool)
def pool(random):
    def mock_batch_sending(node):
        node._orderer.send_pre_prepare = lambda *args, **kwargs: True

    pool = setup_pool(random, {'Max3PCBatchesInFlight': 100})
    for node in pool.nodes:
        mock_batch_sending(node)
    return pool
예제 #4
0
def test_ordering_with_real_msgs(seed):
    # 1. Setup pool
    requests_count = REQUEST_COUNT
    batches_count = requests_count // MAX_BATCH_SIZE
    random = DefaultSimRandom(seed)
    pool = setup_pool(random, requests_count)

    # 2. Send 3pc batches
    random_interval = 1000
    RepeatingTimer(pool.timer, random_interval, partial(order_requests, pool))

    # 3. Make sure all nodes ordered all the requests
    for node in pool.nodes:
        pool.timer.wait_for(partial(check_batch_count, node, batches_count), timeout=20000)

    # 4. Check data consistency
    check_consistency(pool)
예제 #5
0
def do_test(random):
    # 1. Setup pool
    requests_count = REQUEST_COUNT
    batches_count = requests_count // MAX_BATCH_SIZE
    reqs = create_requests(requests_count)
    pool = setup_pool(random)
    pool.sim_send_requests(reqs)

    # 2. Send 3pc batches
    random_interval = 1
    RepeatingTimer(pool.timer, random_interval, partial(order_requests, pool))

    # 3. Make sure all nodes ordered all the requests
    for node in pool.nodes:
        pool.timer.wait_for(partial(check_batch_count, node, batches_count))

    # 4. Check data consistency
    check_consistency(pool)
def sim_pool(random):
    return setup_pool(random)
def test_node_txn_mixed_random_seed(random):
    sim_pool = setup_pool(random)
    do_test_node_txn_mixed(sim_pool, random)
def test_node_txn_mixed_fixed_seed(fixed_random):
    sim_pool = setup_pool(fixed_random)
    do_test_node_txn_mixed(sim_pool, fixed_random)
def test_node_txn_demote_node_fixed_seed(fixed_random):
    sim_pool = setup_pool(fixed_random)
    do_test_node_txn_demote_node(sim_pool, fixed_random)
def test_node_txn_demote_node_random_seed(random):
    sim_pool = setup_pool(random)
    do_test_node_txn_demote_node(sim_pool, random)
def test_node_txn_add_new_node_fixed_seed(fixed_random):
    sim_pool = setup_pool(fixed_random)
    do_test_node_txn_add_new_node(sim_pool, fixed_random)
def test_node_txn_add_new_node_random_seed(random):
    sim_pool = setup_pool(random)
    do_test_node_txn_add_new_node(sim_pool, random)