def testNodeRejectsPoolUpgrade(looper, nodeSet, tdir, trustee,
                                      trusteeWallet, invalidUpgrade):
    _, req = sendUpgrade(trustee, trusteeWallet, invalidUpgrade)
    timeout = plenumWaits.expectedReqNAckQuorumTime()
    looper.run(eventually(checkNacks, trustee, req.reqId,
                          'since time span between upgrades', retryWait=1,
                          timeout=timeout))
Exemple #2
0
def testNonTrustyCannotCancelUpgrade(looper, validUpgradeSent, steward,
                                     validUpgrade):
    stClient, stWallet = steward
    validUpgradeCopy = deepcopy(validUpgrade)
    validUpgradeCopy[ACTION] = CANCEL
    _, req = sendUpgrade(stClient, stWallet, validUpgradeCopy)
    looper.run(eventually(checkRejects, stClient, req.reqId, 'cannot do'))
Exemple #3
0
def testNodeRejectsPoolUpgrade(looper, nodeSet, tdir, trustee,
                                      trusteeWallet, invalidUpgrade):
    _, req = sendUpgrade(trustee, trusteeWallet, invalidUpgrade)
    timeout = plenumWaits.expectedReqNAckQuorumTime()
    looper.run(eventually(checkNacks, trustee, req.reqId,
                          'since time span between upgrades', retryWait=1,
                          timeout=timeout))
def testNonTrustyCannotCancelUpgrade(looper, validUpgradeSent,
                                     steward, validUpgrade):
    stClient, stWallet = steward
    validUpgradeCopy = deepcopy(validUpgrade)
    validUpgradeCopy[ACTION] = CANCEL
    _, req = sendUpgrade(stClient, stWallet, validUpgradeCopy)
    looper.run(eventually(checkRejects, stClient, req.reqId,
                          'cannot do'))
def testOnlyTrusteeCanSendPoolUpgrade(looper, steward, validUpgrade):
    # A steward sending POOL_UPGRADE but txn fails
    stClient, stWallet = steward
    validUpgrade = deepcopy(validUpgrade)
    validUpgrade[NAME] = 'upgrade-20'
    validUpgrade[VERSION] = bumpedVersion()
    _, req = sendUpgrade(stClient, stWallet, validUpgrade)
    timeout = plenumWaits.expectedReqNAckQuorumTime()
    looper.run(eventually(checkRejects, stClient, req.reqId,
                          'cannot do', retryWait=1, timeout=timeout))
def testForcedUpgradeNoConsensusOnSingleNode(validUpgradeExpForceTrue, looper, nodeSet, trustee, trusteeWallet):
    nup = validUpgradeExpForceTrue.copy()
    nup.update({VERSION: bumpVersion(validUpgradeExpForceTrue[VERSION])})
    for node in nodeSet:
        if node.name != "Alpha":
            node.cleanupOnStopping = False
            looper.removeProdable(node)
            node.stop()
        else:
            node.upgrader.scheduledUpgrade = None
    sendUpgrade(trustee, trusteeWallet, nup)

    def testsched():
        for node in nodeSet:
            if node.name == "Alpha":
                assert node.upgrader.scheduledUpgrade
                assert node.upgrader.scheduledUpgrade[0] == nup[VERSION]

    looper.run(eventually(testsched, retryWait=1, timeout=waits.expectedUpgradeScheduled()))
Exemple #7
0
def testOnlyTrusteeCanSendPoolUpgrade(looper, steward, validUpgrade):
    # A steward sending POOL_UPGRADE but txn fails
    stClient, stWallet = steward
    validUpgrade = deepcopy(validUpgrade)
    validUpgrade[NAME] = 'upgrade-20'
    validUpgrade[VERSION] = bumpedVersion()
    _, req = sendUpgrade(stClient, stWallet, validUpgrade)
    timeout = plenumWaits.expectedReqNAckQuorumTime()
    looper.run(eventually(checkRejects, stClient, req.reqId,
                          'cannot do', retryWait=1, timeout=timeout))
Exemple #8
0
def test_accept_then_reject_upgrade(looper, trustee, trusteeWallet, validUpgradeSent, validUpgrade):
    upgrade_name = validUpgrade[NAME]
    error_msg = "InvalidClientRequest(\"Upgrade '{}' is already scheduled\"".format(upgrade_name)

    validUpgrade2 = deepcopy(validUpgrade)

    _, req = sendUpgrade(trustee, trusteeWallet, validUpgrade2)
    timeout = plenumWaits.expectedReqNAckQuorumTime()

    looper.run(eventually(checkRejects, trustee, req.reqId,
                          error_msg, retryWait=1, timeout=timeout))
Exemple #9
0
def testOnlyTrusteeCanSendPoolUpgradeForceTrue(looper, steward,
                                               validUpgradeExpForceTrue):
    stClient, stWallet = steward
    _, req = sendUpgrade(stClient, stWallet, validUpgradeExpForceTrue)
    timeout = plenumWaits.expectedReqNAckQuorumTime()
    looper.run(
        eventually(checkNacks,
                   stClient,
                   req.reqId,
                   'cannot do',
                   retryWait=1,
                   timeout=timeout))
def testNonTrustyCannotCancelUpgrade(validUpgradeSent, looper, nodeSet,
                                     steward, validUpgrade):
    stClient, stWallet = steward
    validUpgrade = deepcopy(validUpgrade)
    validUpgrade[ACTION] = CANCEL
    _, req = sendUpgrade(stClient, stWallet, validUpgrade)
    with pytest.raises(AssertionError):
        checkSufficientRepliesForRequests(looper,
                                          stClient, [
                                              req,
                                          ],
                                          timeoutPerReq=10)
    looper.run(eventually(checkNacks, stClient, req.reqId, 'cannot do'))
Exemple #11
0
def testForcedUpgradeNoConsensusOnSingleNode(validUpgradeExpForceTrue, looper,
                                             nodeSet, trustee, trusteeWallet):
    nup = validUpgradeExpForceTrue.copy()
    nup.update({VERSION: bumpVersion(validUpgradeExpForceTrue[VERSION])})
    for node in nodeSet:
        if node.name != "Alpha":
            node.cleanupOnStopping = False
            looper.removeProdable(node)
            node.stop()
        else:
            node.upgrader.scheduledUpgrade = None
    sendUpgrade(trustee, trusteeWallet, nup)

    def testsched():
        for node in nodeSet:
            if node.name == "Alpha":
                assert node.upgrader.scheduledUpgrade
                assert node.upgrader.scheduledUpgrade[0] == nup[VERSION]

    looper.run(
        eventually(testsched,
                   retryWait=1,
                   timeout=waits.expectedUpgradeScheduled()))
def testNodeRejectsPoolUpgrade(looper, nodeSet, tdir, trustee, trusteeWallet,
                               invalidUpgrade):
    _, req = sendUpgrade(trustee, trusteeWallet, invalidUpgrade)
    with pytest.raises(AssertionError):
        checkSufficientRepliesForRequests(looper,
                                          trustee, [
                                              req,
                                          ],
                                          timeoutPerReq=10)
    looper.run(
        eventually(checkNacks,
                   trustee,
                   req.reqId,
                   'since time span between upgrades',
                   retryWait=1,
                   timeout=10))
def testTrustyCancelsUpgrade(validUpgradeSent, looper, nodeSet, trustee,
                             trusteeWallet, validUpgrade):
    validUpgradeCopy = deepcopy(validUpgrade)
    validUpgradeCopy[ACTION] = CANCEL
    validUpgradeCopy[JUSTIFICATION] = '"not gonna give you one"'

    validUpgradeCopy.pop(SCHEDULE, None)
    upgrade, req = sendUpgrade(trustee, trusteeWallet, validUpgradeCopy)

    def check():
        assert trusteeWallet.getPoolUpgrade(upgrade.key).seqNo

    timeout = plenumWaits.expectedTransactionExecutionTime(len(nodeSet))
    looper.run(eventually(check, retryWait=1, timeout=timeout))

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

    validUpgradeCopy.pop(SCHEDULE, None)
    upgrade, req = sendUpgrade(trustee, trusteeWallet, validUpgradeCopy)

    def check():
        assert trusteeWallet.getPoolUpgrade(upgrade.key).seqNo

    timeout = plenumWaits.expectedTransactionExecutionTime(len(nodeSet))
    looper.run(eventually(check, retryWait=1, timeout=timeout))

    looper.run(
        eventually(checkNoUpgradeScheduled,
                   nodeSet,
                   retryWait=1,
                   timeout=waits.expectedNoUpgradeScheduled()))
def testOnlyTrusteeCanSendPoolUpgrade(validUpgradeSent, looper, steward,
                                      validUpgrade):
    # A steward sending POOL_UPGRADE but txn fails
    stClient, stWallet = steward
    validUpgrade = deepcopy(validUpgrade)
    validUpgrade[NAME] = 'upgrade-20'
    validUpgrade[VERSION] = bumpedVersion()
    _, req = sendUpgrade(stClient, stWallet, validUpgrade)
    with pytest.raises(AssertionError):
        checkSufficientRepliesForRequests(looper,
                                          stClient, [
                                              req,
                                          ],
                                          timeoutPerReq=10)
    looper.run(
        eventually(checkNacks,
                   stClient,
                   req.reqId,
                   'cannot do',
                   retryWait=1,
                   timeout=5))
def testTrustyCancelsUpgrade(validUpgradeSent, looper, nodeSet, trustee,
                             trusteeWallet, validUpgrade):
    validUpgrade = deepcopy(validUpgrade)
    validUpgrade[ACTION] = CANCEL
    validUpgrade[JUSTIFICATION] = '"not gonna give you one"'

    validUpgrade.pop(SCHEDULE, None)
    upgrade, req = sendUpgrade(trustee, trusteeWallet, validUpgrade)
    checkSufficientRepliesForRequests(looper,
                                      trustee, [
                                          req,
                                      ],
                                      timeoutPerReq=10)

    def check():
        assert trusteeWallet.getPoolUpgrade(upgrade.key).seqNo

    looper.run(eventually(check, retryWait=1, timeout=5))

    looper.run(
        eventually(checkNoUpgradeScheduled, nodeSet, retryWait=1, timeout=10))
def testOnlyTrusteeCanSendPoolUpgradeForceTrue(looper, steward, validUpgradeExpForceTrue):
    stClient, stWallet = steward
    _, req = sendUpgrade(stClient, stWallet, validUpgradeExpForceTrue)
    timeout = plenumWaits.expectedReqNAckQuorumTime()
    looper.run(eventually(checkNacks, stClient, req.reqId,
                          'cannot do', retryWait=1, timeout=timeout))
def test_accept_then_reject_upgrade(looper, trustee, trusteeWallet, validUpgradeSent, validUpgrade):
    validUpgrade2 = deepcopy(validUpgrade)
    _, req = sendUpgrade(trustee, trusteeWallet, validUpgrade2)
    timeout = plenumWaits.expectedReqNAckQuorumTime()
    looper.run(eventually(checkRejects, trustee, req.reqId,
                          'InvalidClientRequest', retryWait=1, timeout=timeout))