def test_node_handles_forced_upgrade_on_propagate(looper, nodeSet,
                                                  sdk_pool_handle,
                                                  sdk_wallet_trustee,
                                                  validUpgradeExpForceTrue):
    """
    Verifies that POOL_UPGRADE force=true request is handled immediately when
    the node receives it in a PROPAGATE from any other node
    """
    slow_node = getNonPrimaryReplicas(nodeSet, instId=0)[-1].node

    # Stash all except PROPAGATEs from Gamma
    slow_node.clientIbStasher.delay(req_delay())
    slow_node.nodeIbStasher.delay(ppgDelay(sender_filter='Alpha'))
    slow_node.nodeIbStasher.delay(ppgDelay(sender_filter='Beta'))
    slow_node.nodeIbStasher.delay(ppDelay())
    slow_node.nodeIbStasher.delay(pDelay())
    slow_node.nodeIbStasher.delay(cDelay())

    sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_trustee,
                     validUpgradeExpForceTrue)

    looper.run(
        eventually(checkUpgradeScheduled, [slow_node],
                   validUpgradeExpForceTrue[VERSION],
                   retryWait=1,
                   timeout=waits.expectedUpgradeScheduled()))
def testTrustyCancelsUpgrade(validUpgradeSent, looper, nodeSet, sdk_pool_handle,
                             sdk_wallet_trustee, validUpgrade):
    validUpgradeCopy = deepcopy(validUpgrade)
    validUpgradeCopy[ACTION] = CANCEL
    validUpgradeCopy[JUSTIFICATION] = '"never gonna give you one"'

    validUpgradeCopy.pop(SCHEDULE, None)
    sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_trustee, validUpgradeCopy)

    looper.run(eventually(checkNoUpgradeScheduled, nodeSet, retryWait=1,
                          timeout=waits.expectedNoUpgradeScheduled()))
Exemple #3
0
def testTrustyCancelsUpgrade(validUpgradeSent, looper, nodeSet,
                             sdk_pool_handle, sdk_wallet_trustee,
                             validUpgrade):
    validUpgradeCopy = deepcopy(validUpgrade)
    validUpgradeCopy[ACTION] = CANCEL
    validUpgradeCopy[JUSTIFICATION] = '"never gonna give you one"'

    validUpgradeCopy.pop(SCHEDULE, None)
    sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_trustee,
                     validUpgradeCopy)

    looper.run(
        eventually(checkNoUpgradeScheduled,
                   nodeSet,
                   retryWait=1,
                   timeout=waits.expectedNoUpgradeScheduled()))
def testOnlyTrusteeCanSendPoolUpgrade(looper, sdk_pool_handle, sdk_wallet_steward, validUpgrade):
    # A steward sending POOL_UPGRADE but txn fails
    validUpgrade = deepcopy(validUpgrade)
    validUpgrade[NAME] = 'upgrade-20'
    validUpgrade[VERSION] = bumpedVersion()
    req = sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_steward, validUpgrade)
    sdk_get_bad_response(looper, [req], RequestRejectedException, 'cannot do')
Exemple #5
0
def testOnlyTrusteeCanSendPoolUpgradeForceTrue(looper, sdk_pool_handle,
                                               sdk_wallet_steward,
                                               validUpgradeExpForceTrue):
    req = sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_steward,
                           validUpgradeExpForceTrue)
    sdk_get_bad_response(looper, [req], RequestNackedException,
                         'Not enough TRUSTEE signatures')
def testOnlyTrusteeCanSendPoolUpgradeForceTrue(looper, sdk_pool_handle,
                                               sdk_wallet_steward,
                                               validUpgradeExpForceTrue):
    req = sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_steward,
                           validUpgradeExpForceTrue)
    sdk_get_bad_response(looper, [req], RequestNackedException,
                         'role is not accepted')
Exemple #7
0
def testNonTrustyCannotCancelUpgrade(looper, validUpgradeSent, sdk_pool_handle,
                                     sdk_wallet_steward, validUpgrade):
    validUpgradeCopy = deepcopy(validUpgrade)
    validUpgradeCopy[ACTION] = CANCEL
    req = sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_steward,
                           validUpgradeCopy)
    sdk_get_bad_response(looper, [req], RequestRejectedException, 'cannot do')
Exemple #8
0
def testOnlyTrusteeCanSendPoolUpgradeForceTrue(looper, sdk_pool_handle,
                                               sdk_wallet_steward,
                                               validUpgradeExpForceTrue):
    req = sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_steward,
                           validUpgradeExpForceTrue)
    sdk_get_bad_response(looper, [req], RequestNackedException,
                         '{} can not do this action'.format(STEWARD_STRING))
Exemple #9
0
def testOnlyTrusteeCanSendPoolUpgrade(looper, sdk_pool_handle,
                                      sdk_wallet_steward, validUpgrade):
    # A steward sending POOL_UPGRADE but txn fails
    validUpgrade = deepcopy(validUpgrade)
    validUpgrade[NAME] = 'upgrade-20'
    validUpgrade[VERSION] = bumpedVersion()
    req = sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_steward,
                           validUpgrade)
    sdk_get_bad_response(looper, [req], RequestRejectedException, 'cannot do')
def test_accept_then_reject_upgrade(
        looper, sdk_pool_handle, sdk_wallet_trustee, validUpgradeSent, validUpgrade):
    upgrade_name = validUpgrade[NAME]
    error_msg = "InvalidClientRequest(\"Upgrade '{}' is already scheduled\"". \
        format(upgrade_name)

    validUpgrade2 = deepcopy(validUpgrade)

    req = sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_trustee, validUpgrade2)
    sdk_get_bad_response(looper, [req], RequestRejectedException, error_msg)
Exemple #11
0
def test_accept_then_reject_upgrade(looper, sdk_pool_handle,
                                    sdk_wallet_trustee, validUpgradeSent,
                                    validUpgrade):
    upgrade_name = validUpgrade[NAME]
    error_msg = "Upgrade '{}' is already scheduled".format(upgrade_name)

    validUpgrade2 = deepcopy(validUpgrade)

    req = sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_trustee,
                           validUpgrade2)
    sdk_get_bad_response(looper, [req], RequestRejectedException, error_msg)
def test_node_handles_forced_upgrade_on_client_request(
        looper, nodeSet, sdk_pool_handle, sdk_wallet_trustee,
        validUpgradeExpForceTrue):
    """
    Verifies that POOL_UPGRADE force=true request is handled immediately when
    the node receives it directly from the client
    """
    slow_node = getNonPrimaryReplicas(nodeSet, instId=0)[-1].node

    # Stash all except client requests
    slow_node.nodeIbStasher.delay(ppgDelay())
    slow_node.nodeIbStasher.delay(ppDelay())
    slow_node.nodeIbStasher.delay(pDelay())
    slow_node.nodeIbStasher.delay(cDelay())

    sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_trustee,
                     validUpgradeExpForceTrue)

    looper.run(eventually(checkUpgradeScheduled,
                          [slow_node],
                          validUpgradeExpForceTrue[VERSION],
                          retryWait=1,
                          timeout=waits.expectedUpgradeScheduled()))
def testOnlyTrusteeCanSendPoolUpgradeForceTrue(
        looper, sdk_pool_handle, sdk_wallet_steward, validUpgradeExpForceTrue):
    req = sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_steward, validUpgradeExpForceTrue)
    sdk_get_bad_response(looper, [req], RequestNackedException, 'cannot do')
def testNonTrustyCannotCancelUpgrade(looper, validUpgradeSent, sdk_pool_handle,
                                     sdk_wallet_steward, validUpgrade):
    validUpgradeCopy = deepcopy(validUpgrade)
    validUpgradeCopy[ACTION] = CANCEL
    req = sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_steward, validUpgradeCopy)
    sdk_get_bad_response(looper, [req], RequestRejectedException, 'cannot do')
def testNodeRejectsPoolUpgrade(looper, nodeSet, tdir, sdk_pool_handle,
                               sdk_wallet_trustee, invalidUpgrade):
    req = sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_trustee, invalidUpgrade)
    sdk_get_bad_response(looper, [req], RequestNackedException, 'since time span between upgrades')
Exemple #16
0
def testNodeRejectsPoolUpgrade(looper, nodeSet, tdir, sdk_pool_handle,
                               sdk_wallet_trustee, invalidUpgrade):
    req = sdk_send_upgrade(looper, sdk_pool_handle, sdk_wallet_trustee,
                           invalidUpgrade)
    sdk_get_bad_response(looper, [req], RequestNackedException,
                         'since time span between upgrades')