def sdk_new_node_caught_up(txnPoolNodeSet, sdk_node_set_with_node_added_after_some_txns): looper, new_node, _, _ = sdk_node_set_with_node_added_after_some_txns waitNodeDataEquality(looper, new_node, *txnPoolNodeSet[:4], exclude_from_check=['check_last_ordered_3pc_backup']) check_last_3pc_master(new_node, txnPoolNodeSet[:4]) # Check if catchup done once catchup_done_once = True for leecher in new_node.ledgerManager._node_leecher._leechers.values(): catchup_done_once = catchup_done_once and (leecher.num_txns_caught_up > 0) if not catchup_done_once: # It might be the case that node has to do catchup again, in that case # check the return value of `num_txns_caught_up_in_last_catchup` to be # greater than 0 assert max( getAllReturnVals(new_node, new_node.num_txns_caught_up_in_last_catchup)) > 0 return new_node
def newNodeCaughtUp(txnPoolNodeSet, nodeSetWithNodeAddedAfterSomeTxns): looper, newNode, _, _, _, _ = nodeSetWithNodeAddedAfterSomeTxns waitNodeDataEquality(looper, newNode, *txnPoolNodeSet[:4]) check_last_3pc_master(newNode, txnPoolNodeSet[:4]) # Check if catchup done once catchup_done_once = True for li in newNode.ledgerManager.ledgerRegistry.values(): catchup_done_once = catchup_done_once and (li.num_txns_caught_up > 0) if not catchup_done_once: # It might be the case that node has to do catchup again, in that case # check the return value of `num_txns_caught_up_in_last_catchup` to be # greater than 0 assert max( getAllReturnVals( newNode, newNode.num_txns_caught_up_in_last_catchup)) > 0 for li in newNode.ledgerManager.ledgerRegistry.values(): assert not li.receivedCatchUpReplies assert not li.recvdCatchupRepliesFrm return newNode
def sdk_new_node_caught_up(txnPoolNodeSet, sdk_node_set_with_node_added_after_some_txns): looper, new_node, _, _ = sdk_node_set_with_node_added_after_some_txns waitNodeDataEquality(looper, new_node, *txnPoolNodeSet[:4]) check_last_3pc_master(new_node, txnPoolNodeSet[:4]) # Check if catchup done once catchup_done_once = True for li in new_node.ledgerManager.ledgerRegistry.values(): catchup_done_once = catchup_done_once and (li.num_txns_caught_up > 0) if not catchup_done_once: # It might be the case that node has to do catchup again, in that case # check the return value of `num_txns_caught_up_in_last_catchup` to be # greater than 0 assert max( getAllReturnVals( new_node, new_node.num_txns_caught_up_in_last_catchup)) > 0 for li in new_node.ledgerManager.ledgerRegistry.values(): assert not li.receivedCatchUpReplies assert not li.recvdCatchupRepliesFrm return new_node
def test_nodes_maintain_master_txn_3PC_map(looper, txnPoolNodeSet, pre_check, nodeCreatedAfterSomeTxns): _, new_node, client, wallet, _, _ = nodeCreatedAfterSomeTxns txnPoolNodeSet.append(new_node) waitNodeDataEquality(looper, new_node, *txnPoolNodeSet[:4]) # Check the new node has set same `last_3pc_ordered` for master as others check_last_3pc_master(new_node, txnPoolNodeSet[:4]) chk_if_equal_txn_to_3pc(txnPoolNodeSet[:4]) # Requests still processed sendReqsToNodesAndVerifySuffReplies(looper, wallet, client, 2) waitNodeDataEquality(looper, new_node, *txnPoolNodeSet[:4])
def test_nodes_maintain_master_txn_3PC_map(looper, txnPoolNodeSet, pre_check, sdk_node_created_after_some_txns): _, new_node, sdk_pool_handle, new_steward_wallet_handle = \ sdk_node_created_after_some_txns txnPoolNodeSet.append(new_node) waitNodeDataEquality(looper, new_node, *txnPoolNodeSet[:4]) # Check the new node has set same `last_3pc_ordered` for master as others check_last_3pc_master(new_node, txnPoolNodeSet[:4]) chk_if_equal_txn_to_3pc(txnPoolNodeSet[:4]) # Requests still processed sdk_send_random_and_check(looper, txnPoolNodeSet, sdk_pool_handle, new_steward_wallet_handle, 2) waitNodeDataEquality(looper, new_node, *txnPoolNodeSet[:4])
def test_nodes_maintain_master_txn_3PC_map(looper, txnPoolNodeSet, pre_check, sdk_node_created_after_some_txns): _, new_node, sdk_pool_handle, new_steward_wallet_handle = \ sdk_node_created_after_some_txns txnPoolNodeSet.append(new_node) waitNodeDataEquality(looper, new_node, *txnPoolNodeSet[:4], exclude_from_check=['check_last_ordered_3pc_backup']) # Check the new node has set same `last_3pc_ordered` for master as others check_last_3pc_master(new_node, txnPoolNodeSet[:4]) # check that the node has the same primaries ensureElectionsDone(looper=looper, nodes=txnPoolNodeSet) # Requests still processed sdk_send_random_and_check(looper, txnPoolNodeSet, sdk_pool_handle, new_steward_wallet_handle, 2) waitNodeDataEquality(looper, new_node, *txnPoolNodeSet[:4])