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()))
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')
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')
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 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))
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)
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 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')