Repository: ambari Updated Branches: refs/heads/trunk ac35c6dd8 -> 13dfd3f19
AMBARI-15619 UI - calculate RU/EU is paused by using "suspended" property. (atkach) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/13dfd3f1 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/13dfd3f1 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/13dfd3f1 Branch: refs/heads/trunk Commit: 13dfd3f195442bdc4dfe0783d27b9133cd7a7d20 Parents: ac35c6d Author: Andrii Tkach <[email protected]> Authored: Tue Mar 29 20:20:21 2016 +0300 Committer: Andrii Tkach <[email protected]> Committed: Wed Mar 30 12:11:40 2016 +0300 ---------------------------------------------------------------------- ambari-web/app/app.js | 28 ++++-- .../main/admin/stack_and_upgrade_controller.js | 23 ++++- ambari-web/app/models/upgrade_entity.js | 12 ++- ambari-web/app/templates/application.hbs | 2 +- .../stack_upgrade/stack_upgrade_wizard.hbs | 2 +- ambari-web/app/utils/ajax/ajax.js | 3 +- .../app/views/common/progress_bar_view.js | 2 + .../stack_upgrade/upgrade_version_box_view.js | 8 +- .../admin/stack_upgrade/upgrade_wizard_view.js | 8 +- ambari-web/test/app_test.js | 100 ++++++++++++++++++- .../admin/stack_and_upgrade_controller_test.js | 20 +++- ambari-web/test/models/upgrade_entity_test.js | 35 +++++-- .../upgrade_version_box_view_test.js | 48 ++++++++- 13 files changed, 248 insertions(+), 43 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/app/app.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/app.js b/ambari-web/app/app.js index 319cc42..44a5823 100644 --- a/ambari-web/app/app.js +++ b/ambari-web/app/app.js @@ -55,6 +55,9 @@ module.exports = Em.Application.create({ * - IN_PROGRESS * - HOLDING * - COMPLETED + * - ABORTED + * - HOLDING_FAILED + * - HOLDING_TIMEDOUT * @type {String} */ upgradeState: 'INIT', @@ -71,16 +74,25 @@ module.exports = Em.Application.create({ * @returns {boolean} */ upgradeHolding: function() { - return this.get('upgradeState').contains("HOLDING"); - }.property('upgradeState'), + return this.get('upgradeState').contains("HOLDING") || this.get('upgradeAborted'); + }.property('upgradeState', 'upgradeAborted'), /** * flag is true when upgrade process is aborted + * SHOULD behave similar to HOLDING_FAILED state * @returns {boolean} */ upgradeAborted: function () { - return this.get('upgradeState') === "ABORTED"; - }.property('upgradeState'), + return this.get('upgradeState') === "ABORTED" && !App.router.get('mainAdminStackAndUpgradeController.isSuspended'); + }.property('upgradeState', 'App.router.mainAdminStackAndUpgradeController.isSuspended'), + + /** + * flag is true when upgrade process is suspended + * @returns {boolean} + */ + upgradeSuspended: function () { + return this.get('upgradeState') === "ABORTED" && App.router.get('mainAdminStackAndUpgradeController.isSuspended'); + }.property('upgradeState', 'App.router.mainAdminStackAndUpgradeController.isSuspended'), /** * RU is running @@ -89,15 +101,15 @@ module.exports = Em.Application.create({ upgradeIsRunning: Em.computed.or('upgradeInProgress', 'upgradeHolding'), /** - * flag is true when upgrade process is running or aborted + * flag is true when upgrade process is running or suspended * or wizard used by another user * @returns {boolean} */ wizardIsNotFinished: function () { return this.get('upgradeIsRunning') || - this.get('upgradeAborted') || + this.get('upgradeSuspended') || App.router.get('wizardWatcherController.isNonWizardUser'); - }.property('upgradeIsRunning', 'upgradeAborted', 'router.wizardWatcherController.isNonWizardUser'), + }.property('upgradeIsRunning', 'upgradeAborted', 'router.wizardWatcherController.isNonWizardUser', 'upgradeSuspended'), /** * Options: @@ -112,7 +124,7 @@ module.exports = Em.Application.create({ var result = false; authRoles = $.map(authRoles.split(","), $.trim); - if (!(this.get('upgradeState') == "ABORTED") && + if (!this.get('upgradeSuspended') && !App.get('supports.opsDuringRollingUpgrade') && !['INIT', 'COMPLETED'].contains(this.get('upgradeState')) || !App.auth){ http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js index ae5bba9..17140b4 100644 --- a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js +++ b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js @@ -76,6 +76,13 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, isDowngrade: false, /** + * flag which indicate that upgrade suspended + * @type {boolean} + * @default false + */ + isSuspended: false, + + /** * version that currently applied to server * should be plain object, because stored to localStorage * @type {object|null} @@ -139,14 +146,17 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, * @type {boolean} true if some request that should disable actions is in progress */ requestInProgress: false, + /** * @type {number} repo id, request for which is currently in progress */ requestInProgressRepoId: null, + /** * @type {boolean} true while no updated upgrade info is loaded after retry */ isRetryPending: false, + /** * properties that stored to localStorage to resume wizard progress */ @@ -158,7 +168,8 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, 'upgradeType', 'failuresTolerance', 'isDowngrade', - 'downgradeAllowed' + 'downgradeAllowed', + 'isSuspended' ], /** @@ -254,14 +265,14 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, * @type {string} */ requestStatus: function () { - if (this.get('upgradeData.Upgrade') && this.get('upgradeData.Upgrade.request_status') == 'ABORTED') { + if (this.get('upgradeData.Upgrade') && App.get('upgradeSuspended')) { return 'SUSPENDED'; } else if (this.get('upgradeData.Upgrade')){ return this.get('upgradeData.Upgrade.request_status'); } else { return ''; } - }.property('upgradeData.Upgrade.request_status'), + }.property('upgradeData.Upgrade.request_status', 'App.upgradeSuspended'), init: function () { this.initDBProperties(); @@ -342,10 +353,12 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, if (Em.isNone(data)) return; App.set('upgradeState', data.Upgrade.request_status); this.setDBProperty('upgradeState', data.Upgrade.request_status); + this.set('isSuspended', data.Upgrade.suspended); + this.setDBProperty('isSuspended', data.Upgrade.suspended); if (data.upgrade_groups) { this.updateUpgradeData(data); } - if (this.get('isRetryPending') && data.Upgrade.request_status != 'ABORTED') { + if (this.get('isRetryPending') && data.Upgrade.request_status !== 'ABORTED') { this.setProperties({ requestInProgress: false, isRetryPending: false @@ -1714,7 +1727,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage, var self = this; this.retryUpgrade().done(function () { App.set('upgradeState', 'PENDING'); - App.propertyDidChange('upgradeAborted'); + App.propertyDidChange('upgradeSuspended'); self.setDBProperty('upgradeState', 'PENDING'); App.clusterStatus.setClusterStatus({ wizardControllerName: self.get('name'), http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/app/models/upgrade_entity.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/upgrade_entity.js b/ambari-web/app/models/upgrade_entity.js index 7084185..7df1149 100644 --- a/ambari-web/app/models/upgrade_entity.js +++ b/ambari-web/app/models/upgrade_entity.js @@ -80,12 +80,16 @@ App.upgradeEntity = Em.Object.extend({ upgradeItemStatus: Em.computed.firstNotBlank('display_status', 'status'), + /** + * @type {string} + */ upgradeGroupStatus: function () { - if (this.get('status') === 'ABORTED') { + if (App.get('upgradeSuspended') && this.get('status') === 'ABORTED') { return 'SUSPENDED'; } - if (this.get('type') === 'GROUP') { - return !this.get('isActive') && this.get('hasExpandableItems') ? 'SUBITEM_FAILED' : this.get('display_status') || this.get('status'); + if (this.get('type') === 'GROUP' && !this.get('isActive') && this.get('hasExpandableItems')) { + return 'SUBITEM_FAILED'; } - }.property('isExpandableGroup', 'display_status', 'status') + return this.get('display_status') || this.get('status'); + }.property('isExpandableGroup', 'display_status', 'status', 'App.upgradeSuspended') }); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/app/templates/application.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/application.hbs b/ambari-web/app/templates/application.hbs index 293c9ae..f06861e 100644 --- a/ambari-web/app/templates/application.hbs +++ b/ambari-web/app/templates/application.hbs @@ -133,7 +133,7 @@ <i class="icon-pause"></i> {{t admin.stackVersions.version.upgrade.pause}}</span> {{/if}} {{/if}} - {{#if App.upgradeAborted}} + {{#if App.upgradeSuspended}} {{#if App.router.mainAdminStackAndUpgradeController.isDowngrade}} <span class="label upgrade-holding" {{action "openUpgradeDialog" target="App.router.mainAdminStackAndUpgradeController"}}> <i class="icon-pause"></i> {{t admin.stackVersions.version.downgrade.suspended}} http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs index 91b8e69..a86048e 100644 --- a/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs +++ b/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs @@ -270,7 +270,7 @@ </div> </div> {{/if}} - {{#if App.upgradeAborted}} + {{#if App.upgradeSuspended}} <div class="box details-box"> <label class="message"> {{#if isDowngrade}} http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/app/utils/ajax/ajax.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/ajax/ajax.js b/ambari-web/app/utils/ajax/ajax.js index 928bf03..4b49976 100644 --- a/ambari-web/app/utils/ajax/ajax.js +++ b/ambari-web/app/utils/ajax/ajax.js @@ -1628,6 +1628,7 @@ var urls = { 'real': '/clusters/{clusterName}/upgrades/{id}?upgrade_groups/UpgradeGroup/status!=PENDING&fields=' + 'Upgrade/progress_percent,Upgrade/request_context,Upgrade/request_status,Upgrade/direction,Upgrade/downgrade_allowed,' + 'upgrade_groups/UpgradeGroup,' + + 'Upgrade/*,' + 'upgrade_groups/upgrade_items/UpgradeItem/status,' + 'upgrade_groups/upgrade_items/UpgradeItem/display_status,' + 'upgrade_groups/upgrade_items/UpgradeItem/context,' + @@ -1641,7 +1642,7 @@ var urls = { 'mock': '/data/stack_versions/upgrade.json' }, 'admin.upgrade.state': { - 'real': '/clusters/{clusterName}/upgrades/{id}?fields=Upgrade', + 'real': '/clusters/{clusterName}/upgrades/{id}?fields=Upgrade/*', 'mock': '/data/stack_versions/upgrade.json' }, 'admin.upgrade.finalizeContext': { http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/app/views/common/progress_bar_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/common/progress_bar_view.js b/ambari-web/app/views/common/progress_bar_view.js index 9f15f3d..146dfd5 100644 --- a/ambari-web/app/views/common/progress_bar_view.js +++ b/ambari-web/app/views/common/progress_bar_view.js @@ -57,6 +57,8 @@ App.ProgressBarView = Em.View.extend({ return 'progress-warning'; case 'COMPLETED': return 'progress-success'; + case 'SUSPENDED': + return 'progress-info'; case 'QUEUED': case 'PENDING': case 'IN_PROGRESS': http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js index 9063af3..67c26ed 100644 --- a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js +++ b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js @@ -160,7 +160,7 @@ App.UpgradeVersionBoxView = Em.View.extend({ isDisabled: false }); var isInstalling = this.get('parentView.repoVersions').someProperty('status', 'INSTALLING'); - var isAborted = App.get('upgradeState') === 'ABORTED'; + var isSuspended = App.get('upgradeSuspended'); if (['INSTALLING', 'CURRENT'].contains(status)) { element.setProperties(statePropertiesMap[status]); @@ -197,10 +197,10 @@ App.UpgradeVersionBoxView = Em.View.extend({ element.setProperties(statePropertiesMap['INSTALLED']); } } - else if ((['UPGRADING', 'UPGRADE_FAILED', 'UPGRADED'].contains(status) || this.get('isUpgrading')) && !isAborted) { + else if ((['UPGRADING', 'UPGRADE_FAILED', 'UPGRADED'].contains(status) || this.get('isUpgrading')) && !isSuspended) { element.set('isLink', true); element.set('action', 'openUpgradeDialog'); - if (['HOLDING', 'HOLDING_FAILED', 'HOLDING_TIMEDOUT'].contains(App.get('upgradeState'))) { + if (['HOLDING', 'HOLDING_FAILED', 'HOLDING_TIMEDOUT', 'ABORTED'].contains(App.get('upgradeState'))) { element.set('iconClass', 'icon-pause'); if (this.get('controller.isDowngrade')) { element.set('text', Em.I18n.t('admin.stackVersions.version.downgrade.pause')); @@ -219,7 +219,7 @@ App.UpgradeVersionBoxView = Em.View.extend({ } } } - else if (isAborted) { + else if (isSuspended) { element.setProperties(statePropertiesMap['SUSPENDED']); var text = this.get('controller.isDowngrade') ? Em.I18n.t('admin.stackUpgrade.dialog.resume.downgrade') : Em.I18n.t('admin.stackUpgrade.dialog.resume'); element.set('text', this.get('isVersionColumnView') ? Em.I18n.t('common.resume'): text); http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js index f4910fd..ff1cd7c 100644 --- a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js +++ b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js @@ -27,12 +27,12 @@ App.upgradeWizardView = Em.View.extend({ /** * @type {Array} */ - failedStatuses: ['HOLDING_FAILED', 'HOLDING_TIMEDOUT', 'FAILED', 'TIMED_OUT'], + failedStatuses: ['HOLDING_FAILED', 'HOLDING_TIMEDOUT', 'FAILED', 'TIMED_OUT', 'ABORTED'], /** * @type {Array} */ - activeStatuses: ['HOLDING_FAILED', 'HOLDING_TIMEDOUT', 'FAILED', 'TIMED_OUT', 'HOLDING', 'IN_PROGRESS'], + activeStatuses: ['HOLDING_FAILED', 'HOLDING_TIMEDOUT', 'FAILED', 'TIMED_OUT', 'HOLDING', 'IN_PROGRESS', 'ABORTED'], /** * update timer @@ -91,6 +91,7 @@ App.upgradeWizardView = Em.View.extend({ * @type {object|undefined} */ activeGroup: function () { + if (App.get('upgradeSuspended')) return; return this.get('upgradeGroups').find(function (item) { return this.get('activeStatuses').contains(item.get('status')); }, this); @@ -142,7 +143,8 @@ App.upgradeWizardView = Em.View.extend({ * @type {boolean} */ isHoldingState: function () { - return Boolean(this.get('failedItem.status') && this.get('failedItem.status').contains('HOLDING')); + return Boolean(this.get('failedItem.status') && + this.get('failedItem.status').contains('HOLDING') || this.get('failedItem.status') === 'ABORTED'); }.property('failedItem.status'), /** http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/test/app_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/app_test.js b/ambari-web/test/app_test.js index 60e617a..aeeb5a9 100644 --- a/ambari-web/test/app_test.js +++ b/ambari-web/test/app_test.js @@ -490,28 +490,75 @@ describe('App', function () { }); + describe('#upgradeSuspended', function () { + var cases = [ + { + upgradeState: 'INIT', + isSuspended: false, + upgradeSuspended: false + }, + { + upgradeState: 'ABORTED', + isSuspended: false, + upgradeSuspended: false + }, + { + upgradeState: 'ABORTED', + isSuspended: true, + upgradeSuspended: true + } + ]; + + beforeEach(function() { + this.mock = sinon.stub(App.router, 'get'); + }); + afterEach(function() { + this.mock.restore(); + }); + + cases.forEach(function (test) { + it(test.upgradeState + ", isSuspended=" + test.isSuspended, function () { + App.set('upgradeState', test.upgradeState); + this.mock.returns(test.isSuspended); + App.propertyDidChange('upgradeSuspended'); + expect(App.get('upgradeSuspended')).to.equal(test.upgradeSuspended); + }); + }); + }); + describe('#upgradeAborted', function () { var cases = [ { upgradeState: 'INIT', + isSuspended: false, upgradeAborted: false }, { - upgradeState: 'INIT', + upgradeState: 'ABORTED', + isSuspended: true, upgradeAborted: false }, { upgradeState: 'ABORTED', + isSuspended: false, upgradeAborted: true } ]; - cases.forEach(function (item) { - it(item.upgradeState + ", ", function () { - App.set('upgradeState', item.upgradeState); + beforeEach(function() { + this.mock = sinon.stub(App.router, 'get'); + }); + afterEach(function() { + this.mock.restore(); + }); + + cases.forEach(function (test) { + it(test.upgradeState + ", isSuspended=" + test.isSuspended, function () { + App.set('upgradeState', test.upgradeState); + this.mock.returns(test.isSuspended); App.propertyDidChange('upgradeAborted'); - expect(App.get('upgradeAborted')).to.equal(item.upgradeAborted); + expect(App.get('upgradeAborted')).to.equal(test.upgradeAborted); }); }); }); @@ -548,4 +595,47 @@ describe('App', function () { }); }); }); + + describe("#upgradeHolding", function () { + var cases = [ + { + upgradeState: 'INIT', + upgradeAborted: false, + upgradeHolding: false + }, + { + upgradeState: 'HOLDING', + upgradeAborted: false, + upgradeHolding: true + }, + { + upgradeState: 'HOLDING_FAILED', + upgradeAborted: false, + upgradeHolding: true + }, + { + upgradeState: 'INIT', + upgradeAborted: true, + upgradeHolding: true + } + ]; + + beforeEach(function() { + this.mock = sinon.stub(App.router, 'get'); + }); + afterEach(function() { + this.mock.restore(); + }); + + cases.forEach(function (test) { + it(test.upgradeState + ", upgradeAborted=" + test.upgradeAborted, function () { + App.reopen({ + upgradeAborted: test.upgradeAborted, + upgradeState: test.upgradeState + }); + App.propertyDidChange('upgradeHolding'); + expect(App.get('upgradeHolding')).to.equal(test.upgradeHolding); + }); + }); + }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js index 4db9f2d..83bae82 100644 --- a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js +++ b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js @@ -84,16 +84,34 @@ describe('App.MainAdminStackAndUpgradeController', function() { }); describe("#requestStatus", function() { - it("state ABORTED", function() { + + beforeEach(function() { + this.mock = sinon.stub(App, 'get'); + }); + afterEach(function() { + this.mock.restore(); + }); + + it("App.upgradeSuspended is true", function() { + this.mock.returns(true); controller.set('upgradeData', { Upgrade: {request_status: 'ABORTED'}}); controller.propertyDidChange('requestStatus'); expect(controller.get('requestStatus')).to.equal('SUSPENDED'); }); + it("state not ABORTED", function() { + this.mock.returns(false); controller.set('upgradeData', { Upgrade: {request_status: 'INIT'}}); controller.propertyDidChange('requestStatus'); expect(controller.get('requestStatus')).to.equal('INIT'); }); + + it("upgradeData is null", function() { + this.mock.returns(false); + controller.set('upgradeData', null); + controller.propertyDidChange('requestStatus'); + expect(controller.get('requestStatus')).to.be.empty; + }); }); describe("#load()", function() { http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/test/models/upgrade_entity_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/models/upgrade_entity_test.js b/ambari-web/test/models/upgrade_entity_test.js index 38fa093..0021b3d 100644 --- a/ambari-web/test/models/upgrade_entity_test.js +++ b/ambari-web/test/models/upgrade_entity_test.js @@ -133,7 +133,8 @@ describe('App.upgradeEntity', function () { var cases = [ { input: { - type: 'ITEM' + type: 'ITEM', + upgradeSuspended: false }, upgradeGroupStatus: undefined, title: 'not upgrade group' @@ -142,7 +143,8 @@ describe('App.upgradeEntity', function () { input: { type: 'GROUP', status: 'PENDING', - hasExpandableItems: false + hasExpandableItems: false, + upgradeSuspended: false }, upgradeGroupStatus: 'PENDING', title: 'pending upgrade group' @@ -151,7 +153,8 @@ describe('App.upgradeEntity', function () { input: { type: 'GROUP', status: 'PENDING', - hasExpandableItems: true + hasExpandableItems: true, + upgradeSuspended: false }, upgradeGroupStatus: 'SUBITEM_FAILED', title: 'pending upgrade group with expandable items' @@ -160,24 +163,44 @@ describe('App.upgradeEntity', function () { input: { type: 'GROUP', status: 'ABORTED', - hasExpandableItems: true + hasExpandableItems: false, + upgradeSuspended: false }, - upgradeGroupStatus: 'SUSPENDED', + upgradeGroupStatus: 'ABORTED', title: 'aborted upgrade group with expandable items' }, { input: { type: 'GROUP', + status: 'ABORTED', + hasExpandableItems: true, + upgradeSuspended: true + }, + upgradeGroupStatus: 'SUSPENDED', + title: 'suspended upgrade group with expandable items' + }, + { + input: { + type: 'GROUP', status: 'IN_PROGRESS', - hasExpandableItems: false + hasExpandableItems: false, + upgradeSuspended: false }, upgradeGroupStatus: 'IN_PROGRESS', title: 'active upgrade' } ]; + beforeEach(function() { + this.mock = sinon.stub(App, 'get'); + }); + afterEach(function() { + this.mock.restore(); + }); + cases.forEach(function (item) { it(item.title, function () { + this.mock.returns(item.input.upgradeSuspended); model.setProperties(item.input); expect(model.get('upgradeGroupStatus')).to.equal(item.upgradeGroupStatus); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/13dfd3f1/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js index 0ff5ce9..a99bcb0 100644 --- a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js +++ b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js @@ -715,6 +715,26 @@ describe('App.UpgradeVersionBoxView', function () { }, { inputData: { + 'content.status': 'UPGRADING', + 'isUpgrading': true, + 'controller.isDowngrade': false, + 'controller.upgradeVersion': 'HDP-2.2.1', + 'content.displayName': 'HDP-2.2.1' + }, + setup: function () { + this.getMock.withArgs('upgradeState').returns('ABORTED'); + }, + expected: { + status: 'UPGRADING', + isLink: true, + action: 'openUpgradeDialog', + iconClass: 'icon-pause', + text: Em.I18n.t('admin.stackVersions.version.upgrade.pause') + }, + title: 'upgrading, upgrade aborted' + }, + { + inputData: { 'content.status': 'UPGRADE_FAILED', 'isUpgrading': true, 'controller.isDowngrade': false, @@ -782,6 +802,26 @@ describe('App.UpgradeVersionBoxView', function () { 'content.displayName': 'HDP-2.2.1' }, setup: function () { + this.getMock.withArgs('upgradeState').returns('ABORTED'); + }, + expected: { + status: 'UPGRADED', + isLink: true, + action: 'openUpgradeDialog', + iconClass: 'icon-pause', + text: Em.I18n.t('admin.stackVersions.version.downgrade.pause') + }, + title: 'downgrading, upgrade aborted' + }, + { + inputData: { + 'content.status': 'UPGRADED', + 'isUpgrading': true, + 'controller.isDowngrade': true, + 'controller.upgradeVersion': 'HDP-2.2.1', + 'content.displayName': 'HDP-2.2.1' + }, + setup: function () { this.getMock.withArgs('upgradeState').returns('HOLDING_TIMEDOUT'); }, expected: { @@ -802,7 +842,7 @@ describe('App.UpgradeVersionBoxView', function () { 'parentView.repoVersions': [] }, setup: function () { - this.getMock.withArgs('upgradeState').returns('ABORTED'); + this.getMock.withArgs('upgradeSuspended').returns('true'); }, expected: { status: 'UPGRADING', @@ -811,7 +851,7 @@ describe('App.UpgradeVersionBoxView', function () { text: Em.I18n.t('admin.stackUpgrade.dialog.resume'), isDisabled: false }, - title: 'upgrade aborted' + title: 'upgrade suspended' }, { inputData: { @@ -822,7 +862,7 @@ describe('App.UpgradeVersionBoxView', function () { 'parentView.repoVersions': [] }, setup: function () { - this.getMock.withArgs('upgradeState').returns('ABORTED'); + this.getMock.withArgs('upgradeSuspended').returns('true'); }, expected: { status: 'UPGRADE_FAILED', @@ -831,7 +871,7 @@ describe('App.UpgradeVersionBoxView', function () { text: Em.I18n.t('admin.stackUpgrade.dialog.resume.downgrade'), isDisabled: true }, - title: 'downgrade aborted, request in progress' + title: 'downgrade suspended, request in progress' } ];
