Repository: ambari Updated Branches: refs/heads/trunk 859279a37 -> 943a16ba8
AMBARI-9276. Memory leaks in Firefox after some time on Alerts page. (akovalenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/943a16ba Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/943a16ba Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/943a16ba Branch: refs/heads/trunk Commit: 943a16ba868b33a4e8aa0b8d31e822be93e2f9f5 Parents: 859279a Author: Aleksandr Kovalenko <akovale...@hortonworks.com> Authored: Thu Jan 22 20:23:31 2015 +0200 Committer: Aleksandr Kovalenko <akovale...@hortonworks.com> Committed: Fri Jan 23 00:31:33 2015 +0200 ---------------------------------------------------------------------- ambari-web/app/assets/test/tests.js | 1 - .../main/alert_definitions_controller.js | 6 +-- .../alerts/manage_alert_groups_controller.js | 2 +- .../main/host/host_alerts_controller.js | 2 +- .../mappers/alert_definition_summary_mapper.js | 2 +- .../app/mappers/alert_definitions_mapper.js | 40 +++++--------- ambari-web/app/models/alert_definition.js | 56 +++++-------------- ambari-web/app/models/alert_group.js | 35 +----------- .../app/views/main/alert_definitions_view.js | 4 +- .../app/views/main/service/info/summary.js | 2 +- .../alert_definition_summary_mapper_test.js | 46 +++++++--------- .../mappers/alert_definitions_mapper_test.js | 50 +++++------------ ambari-web/test/models/alert_group_test.js | 57 -------------------- .../views/main/service/info/summary_test.js | 4 +- 14 files changed, 68 insertions(+), 239 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/app/assets/test/tests.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js index ccfffe3..674f676 100644 --- a/ambari-web/app/assets/test/tests.js +++ b/ambari-web/app/assets/test/tests.js @@ -235,7 +235,6 @@ var files = ['test/init_model_test', 'test/models/alert_test', 'test/models/alert_config_test', 'test/models/alert_definition_test', - 'test/models/alert_group_test', 'test/models/alert_instance_test', 'test/models/authentication_test', 'test/models/cluster_states_test', http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/app/controllers/main/alert_definitions_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/alert_definitions_controller.js b/ambari-web/app/controllers/main/alert_definitions_controller.js index 4b76d2d..1c670a4 100644 --- a/ambari-web/app/controllers/main/alert_definitions_controller.js +++ b/ambari-web/app/controllers/main/alert_definitions_controller.js @@ -47,11 +47,7 @@ App.MainAlertDefinitionsController = Em.ArrayController.extend({ * </ul> * @type {App.AlertDefinition[]} */ - content: function () { - var definitions = App.AlertDefinition.getAllDefinitions(); - definitions.sort(App.AlertDefinition.getSortDefinitionsByStatus(true)); - return definitions; - }.property('mapperTimestamp'), + content: App.AlertDefinition.find(), /** * Enable/disable alertDefinition confirmation popup http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/app/controllers/main/alerts/manage_alert_groups_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/alerts/manage_alert_groups_controller.js b/ambari-web/app/controllers/main/alerts/manage_alert_groups_controller.js index 373569c..fddd6bb 100644 --- a/ambari-web/app/controllers/main/alerts/manage_alert_groups_controller.js +++ b/ambari-web/app/controllers/main/alerts/manage_alert_groups_controller.js @@ -301,7 +301,7 @@ App.ManageAlertGroupsController = Em.Controller.extend({ if (selectedAlertGroup.get('default')) return []; var usedDefinitionsMap = {}; var availableDefinitions = []; - var sharedDefinitions = App.AlertDefinition.getAllDefinitions(); + var sharedDefinitions = App.AlertDefinition.find(); selectedAlertGroup.get('definitions').forEach(function (def) { usedDefinitionsMap[def.name] = true; http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/app/controllers/main/host/host_alerts_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/host/host_alerts_controller.js b/ambari-web/app/controllers/main/host/host_alerts_controller.js index e753c05..2a47914 100644 --- a/ambari-web/app/controllers/main/host/host_alerts_controller.js +++ b/ambari-web/app/controllers/main/host/host_alerts_controller.js @@ -39,7 +39,7 @@ App.MainHostAlertsController = Em.ArrayController.extend({ * @method routeToAlertDefinition */ routeToAlertDefinition: function (event) { - var alertDefinition = App.AlertDefinition.getAllDefinitions().findProperty('id', event.context); + var alertDefinition = App.AlertDefinition.find().findProperty('id', event.context); App.router.transitionTo('main.alerts.alertDetails', alertDefinition); } http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/app/mappers/alert_definition_summary_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/alert_definition_summary_mapper.js b/ambari-web/app/mappers/alert_definition_summary_mapper.js index e85ab29..0642ee6 100644 --- a/ambari-web/app/mappers/alert_definition_summary_mapper.js +++ b/ambari-web/app/mappers/alert_definition_summary_mapper.js @@ -23,7 +23,7 @@ App.alertDefinitionSummaryMapper = App.QuickDataMapper.create({ map: function(data) { if (!data.alerts_summary_grouped) return; - var alertDefinitions = App.AlertDefinition.getAllDefinitions(); + var alertDefinitions = App.AlertDefinition.find(); data.alerts_summary_grouped.forEach(function(alertDefinitionSummary) { var alertDefinition = alertDefinitions.findProperty('id', alertDefinitionSummary.definition_id); if (alertDefinition) { http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/app/mappers/alert_definitions_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/alert_definitions_mapper.js b/ambari-web/app/mappers/alert_definitions_mapper.js index 5155180..c4679c1 100644 --- a/ambari-web/app/mappers/alert_definitions_mapper.js +++ b/ambari-web/app/mappers/alert_definitions_mapper.js @@ -26,12 +26,6 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({ metricsSourceModel: App.AlertMetricsSourceDefinition, metricsUriModel: App.AlertMetricsUriDefinition, - portModel: App.PortAlertDefinition, - metricsModel: App.MetricsAlertDefinition, - webModel: App.WebAlertDefinition, - aggregateModel: App.AggregateAlertDefinition, - scriptModel: App.ScriptAlertDefinition, - config: { id: 'AlertDefinition.id', name: 'AlertDefinition.name', @@ -53,7 +47,7 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({ portConfig: { default_port: 'AlertDefinition.source.default_port', - uri: 'AlertDefinition.source.uri' + port_uri: 'AlertDefinition.source.uri' }, aggregateConfig: { @@ -76,17 +70,13 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({ if (json && json.items) { var self = this, - portAlertDefinitions = [], - metricsAlertDefinitions = [], - webAlertDefinitions = [], - aggregateAlertDefinitions = [], - scriptAlertDefinitions = [], + alertDefinitions = [], alertReportDefinitions = [], alertMetricsSourceDefinitions = [], alertMetricsUriDefinitions = [], alertGroupsMap = App.cache['previousAlertGroupsMap'], - alertDefinitions = App.AlertDefinition.getAllDefinitions(), - alertDefinitionsToDelete = alertDefinitions.mapProperty('id'), + existingAlertDefinitions = App.AlertDefinition.find(), + alertDefinitionsToDelete = existingAlertDefinitions.mapProperty('id'), rawSourceData = {}; json.items.forEach(function (item) { @@ -123,7 +113,7 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({ alertDefinition.groups = alertGroupsMap[alertDefinition.id]; } - var oldAlertDefinition = alertDefinitions.findProperty('id', alertDefinition.id); + var oldAlertDefinition = existingAlertDefinitions.findProperty('id', alertDefinition.id); if (oldAlertDefinition) { // new values will be parsed in the another mapper, so for now just use old values alertDefinition.summary = oldAlertDefinition.get('summary'); @@ -135,7 +125,7 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({ // map properties dependent on Alert Definition type switch (item.AlertDefinition.source.type) { case 'PORT': - portAlertDefinitions.push($.extend(alertDefinition, this.parseIt(item, this.get('portConfig')))); + alertDefinitions.push($.extend(alertDefinition, this.parseIt(item, this.get('portConfig')))); break; case 'METRIC': // map App.AlertMetricsSourceDefinition's @@ -162,20 +152,20 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({ alertDefinition.uri_id = item.AlertDefinition.id + 'uri'; item.AlertDefinition.source.uri.id = alertDefinition.uri_id; alertMetricsUriDefinitions.push(this.parseIt(item, this.get('uriConfig'))); - metricsAlertDefinitions.push(alertDefinition); + alertDefinitions.push(alertDefinition); break; case 'WEB': // map App.AlertMetricsUriDefinition alertDefinition.uri_id = item.AlertDefinition.id + 'uri'; item.AlertDefinition.source.uri.id = alertDefinition.uri_id; alertMetricsUriDefinitions.push(this.parseIt(item, this.get('uriConfig'))); - webAlertDefinitions.push(alertDefinition); + alertDefinitions.push(alertDefinition); break; case 'AGGREGATE': - aggregateAlertDefinitions.push($.extend(alertDefinition, this.parseIt(item, this.get('aggregateConfig')))); + alertDefinitions.push($.extend(alertDefinition, this.parseIt(item, this.get('aggregateConfig')))); break; case 'SCRIPT': - scriptAlertDefinitions.push($.extend(alertDefinition, this.parseIt(item, this.get('scriptConfig')))); + alertDefinitions.push($.extend(alertDefinition, this.parseIt(item, this.get('scriptConfig')))); break; default: console.error('Incorrect Alert Definition type:', item.AlertDefinition); @@ -183,7 +173,7 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({ }, this); alertDefinitionsToDelete.forEach(function(definitionId) { - self.deleteRecord(alertDefinitions.findProperty('id', definitionId)); + self.deleteRecord(existingAlertDefinitions.findProperty('id', definitionId)); }); // load all mapped data to model @@ -191,11 +181,7 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({ App.store.loadMany(this.get('metricsSourceModel'), alertMetricsSourceDefinitions); this.setMetricsSourcePropertyLists(this.get('metricsSourceModel'), alertMetricsSourceDefinitions); App.store.loadMany(this.get('metricsUriModel'), alertMetricsUriDefinitions); - App.store.loadMany(this.get('portModel'), portAlertDefinitions); - App.store.loadMany(this.get('metricsModel'), metricsAlertDefinitions); - App.store.loadMany(this.get('webModel'), webAlertDefinitions); - App.store.loadMany(this.get('aggregateModel'), aggregateAlertDefinitions); - App.store.loadMany(this.get('scriptModel'), scriptAlertDefinitions); + App.store.loadMany(this.get('model'), alertDefinitions); this.setAlertDefinitionsRawSourceData(rawSourceData); if (App.router.get('mainAlertDefinitionsController')) { App.router.set('mainAlertDefinitionsController.mapperTimestamp', (new Date()).getTime()); @@ -220,7 +206,7 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({ * @param rawSourceData */ setAlertDefinitionsRawSourceData: function (rawSourceData) { - var allDefinitions = App.AlertDefinition.getAllDefinitions(); + var allDefinitions = App.AlertDefinition.find(); for (var alertDefinitionId in rawSourceData) { if (rawSourceData.hasOwnProperty(alertDefinitionId)) { allDefinitions.findProperty('id', +alertDefinitionId).set('rawSourceData', rawSourceData[alertDefinitionId]); http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/app/models/alert_definition.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/alert_definition.js b/ambari-web/app/models/alert_definition.js index b525273..d8b774f 100644 --- a/ambari-web/app/models/alert_definition.js +++ b/ambari-web/app/models/alert_definition.js @@ -35,6 +35,19 @@ App.AlertDefinition = DS.Model.extend({ reporting: DS.hasMany('App.AlertReportDefinition'), lastTriggered: DS.attr('number'), + //relates only to SCRIPT-type alert definition + location: DS.attr('string'), + //relates only to AGGREGATE-type alert definition + alertName: DS.attr('string'), + //relates only to WEB and METRIC types of alert definition + uri: DS.belongsTo('App.AlertMetricsUriDefinition'), + //relates only METRIC-type alert definition + jmx: DS.belongsTo('App.AlertMetricsSourceDefinition'), + ganglia: DS.belongsTo('App.AlertMetricsSourceDefinition'), + //relates only PORT-type alert definition + defaultPort: DS.attr('number'), + portUri: DS.attr('string'), + /** * Raw data from AlertDefinition/source * used to format request content for updating alert definition @@ -280,21 +293,6 @@ App.AlertDefinition = DS.Model.extend({ App.AlertDefinition.reopenClass({ /** - * Get all available AlertDefinitions - * @returns {Array|string} - * @method getAllDefinitions - */ - getAllDefinitions: function () { - return Array.prototype.concat.call( - Array.prototype, App.PortAlertDefinition.find().toArray(), - App.MetricsAlertDefinition.find().toArray(), - App.WebAlertDefinition.find().toArray(), - App.AggregateAlertDefinition.find().toArray(), - App.ScriptAlertDefinition.find().toArray() - ) - }, - - /** * Return function to sort list of AlertDefinitions by their status * It sorts according to <code>severityOrder</code> * @param {boolean} order true - DESC, false - ASC @@ -339,35 +337,7 @@ App.AlertMetricsUriDefinition = DS.Model.extend({ httpsPropertyValue: DS.attr('string') }); -App.PortAlertDefinition = App.AlertDefinition.extend({ - defaultPort: DS.attr('number'), - uri: DS.attr('string') -}); - -App.MetricsAlertDefinition = App.AlertDefinition.extend({ - jmx: DS.belongsTo('App.AlertMetricsSourceDefinition'), - ganglia: DS.belongsTo('App.AlertMetricsSourceDefinition'), - uri: DS.belongsTo('App.AlertMetricsUriDefinition') -}); - -App.WebAlertDefinition = App.AlertDefinition.extend({ - uri: DS.belongsTo('App.AlertMetricsUriDefinition') -}); - -App.AggregateAlertDefinition = App.AlertDefinition.extend({ - alertName: DS.attr('string') -}); - -App.ScriptAlertDefinition = App.AlertDefinition.extend({ - location: DS.attr('string') -}); - App.AlertDefinition.FIXTURES = []; App.AlertReportDefinition.FIXTURES = []; App.AlertMetricsSourceDefinition.FIXTURES = []; -App.PortAlertDefinition.FIXTURES = []; App.AlertMetricsUriDefinition.FIXTURES = []; -App.MetricsAlertDefinition.FIXTURES = []; -App.WebAlertDefinition.FIXTURES = []; -App.AggregateAlertDefinition.FIXTURES = []; -App.ScriptAlertDefinition.FIXTURES = []; http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/app/models/alert_group.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/alert_group.js b/ambari-web/app/models/alert_group.js index 15e88b2..df038d6 100644 --- a/ambari-web/app/models/alert_group.js +++ b/ambari-web/app/models/alert_group.js @@ -44,40 +44,7 @@ App.AlertGroup = DS.Model.extend({ /** * @type {App.AlertDefinition[]} */ - definitions: function () { - return Array.prototype.concat.call( - Array.prototype, this.get('portAlertDefinitions').toArray(), - this.get('metricsAlertDefinitions').toArray(), - this.get('webAlertDefinitions').toArray(), - this.get('aggregateAlertDefinitions').toArray(), - this.get('scriptAlertDefinitions').toArray() - ); - }.property('portAlertDefinitions.length', 'metricsAlertDefinitions.length', 'webAlertDefinitions.length', 'aggregateAlertDefinitions.length', 'scriptAlertDefinitions.length'), - - /** - * @type {App.PortAlertDefinition[]} - */ - portAlertDefinitions: DS.hasMany('App.PortAlertDefinition'), - - /** - * @type {App.MetricsAlertDefinition[]} - */ - metricsAlertDefinitions: DS.hasMany('App.MetricsAlertDefinition'), - - /** - * @type {App.WebAlertDefinition[]} - */ - webAlertDefinitions: DS.hasMany('App.WebAlertDefinition'), - - /** - * @type {App.AggregateAlertDefinition[]} - */ - aggregateAlertDefinitions: DS.hasMany('App.AggregateAlertDefinition'), - - /** - * @type {App.ScriptAlertDefinition[]} - */ - scriptAlertDefinitions: DS.hasMany('App.ScriptAlertDefinition'), + definitions: App.AlertDefinition.find(), /** * @type {App.AlertNotification[]} http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/app/views/main/alert_definitions_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/alert_definitions_view.js b/ambari-web/app/views/main/alert_definitions_view.js index e90d8a9..737c9f2 100644 --- a/ambari-web/app/views/main/alert_definitions_view.js +++ b/ambari-web/app/views/main/alert_definitions_view.js @@ -26,7 +26,7 @@ App.MainAlertDefinitionsView = App.TableView.extend({ templateName: require('templates/main/alerts'), content: function() { - return this.get('controller.content'); + return this.get('controller.content') ? this.get('controller.content').toArray().sort(App.AlertDefinition.getSortDefinitionsByStatus(true)) : []; }.property('controller.content.@each'), willInsertElement: function () { @@ -503,7 +503,7 @@ App.MainAlertDefinitionsView = App.TableView.extend({ Em.run.next(this, function () { App.tooltip($(".enable-disable-button, .timeago")); }); - }.observes('pageContent.@each'), + }.observes('pageContent.@each.enabled', 'pageContent.@each.lastTriggeredFormatted'), updateFilter: function (iColumn, value, type) { if (!this.get('isInitialRendering')) { http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/app/views/main/service/info/summary.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/service/info/summary.js b/ambari-web/app/views/main/service/info/summary.js index cf40900..e661291 100644 --- a/ambari-web/app/views/main/service/info/summary.js +++ b/ambari-web/app/views/main/service/info/summary.js @@ -257,7 +257,7 @@ App.MainServiceInfoSummaryView = Em.View.extend(App.UserPref, { * @type {Boolean} */ hasAlertDefinitions: function () { - return App.AlertDefinition.getAllDefinitions().someProperty('serviceName', this.get('controller.content.serviceName')); + return App.AlertDefinition.find().someProperty('serviceName', this.get('controller.content.serviceName')); }.property('controller.content.serviceName'), restartRequiredHostsAndComponents:function () { http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/test/mappers/alert_definition_summary_mapper_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/mappers/alert_definition_summary_mapper_test.js b/ambari-web/test/mappers/alert_definition_summary_mapper_test.js index af1d952..946839a 100644 --- a/ambari-web/test/mappers/alert_definition_summary_mapper_test.js +++ b/ambari-web/test/mappers/alert_definition_summary_mapper_test.js @@ -24,12 +24,12 @@ describe('App.alertDefinitionSummaryMapper', function () { describe('#map', function() { var testModels = [ - App.PortAlertDefinition.createRecord({id: 1, enabled: true, type: 'PORT'}), - App.MetricsAlertDefinition.createRecord({id: 2, enabled: true, type: 'METRICS'}), - App.WebAlertDefinition.createRecord({id: 3, enabled: true, type: 'WEB'}), - App.AggregateAlertDefinition.createRecord({id: 4, enabled: true, type: 'AGGREGATE'}), - App.ScriptAlertDefinition.createRecord({id: 5, enabled: true, type: 'SCRIPT'}), - App.ScriptAlertDefinition.createRecord({id: 6, enabled: false, type: 'SCRIPT', summary: {OK: 1}}) + App.AlertDefinition.createRecord({id: 1, enabled: true, type: 'PORT'}), + App.AlertDefinition.createRecord({id: 2, enabled: true, type: 'METRICS'}), + App.AlertDefinition.createRecord({id: 3, enabled: true, type: 'WEB'}), + App.AlertDefinition.createRecord({id: 4, enabled: true, type: 'AGGREGATE'}), + App.AlertDefinition.createRecord({id: 5, enabled: true, type: 'SCRIPT'}), + App.AlertDefinition.createRecord({id: 6, enabled: false, type: 'SCRIPT', summary: {OK: 1}}) ], dataToMap = { alerts_summary_grouped: [ @@ -83,48 +83,40 @@ describe('App.alertDefinitionSummaryMapper', function () { beforeEach(function() { - sinon.stub(App.PortAlertDefinition, 'find', function() {return testModels.filterProperty('type', 'PORT');}); - sinon.stub(App.MetricsAlertDefinition, 'find', function() {return testModels.filterProperty('type', 'METRICS');}); - sinon.stub(App.WebAlertDefinition, 'find', function() {return testModels.filterProperty('type', 'WEB');}); - sinon.stub(App.AggregateAlertDefinition, 'find', function() {return testModels.filterProperty('type', 'AGGREGATE');}); - sinon.stub(App.ScriptAlertDefinition, 'find', function() {return testModels.filterProperty('type', 'SCRIPT');}); + sinon.stub(App.AlertDefinition, 'find', function() {return testModels;}); }); afterEach(function() { - App.PortAlertDefinition.find.restore(); - App.MetricsAlertDefinition.find.restore(); - App.WebAlertDefinition.find.restore(); - App.AggregateAlertDefinition.find.restore(); - App.ScriptAlertDefinition.find.restore(); + App.AlertDefinition.find.restore(); }); it('should map summary info for each alert', function() { App.alertDefinitionSummaryMapper.map(dataToMap); - expect(App.PortAlertDefinition.find().findProperty('id', 1).get('lastTriggered')).to.equal(2); - expect(App.PortAlertDefinition.find().findProperty('id', 1).get('summary')).to.eql({OK: {count: 1, maintenanceCount: 0, latestText : "Connection failed: [Errno 111] Connection refused to c6407.ambari.apache.org:60000"}, WARNING: {count: 1, maintenanceCount: 0, latestText : "Connection failed: [Errno 111] Connection refused to c6407.ambari.apache.org:60000"}, CRITICAL: {count: 0, maintenanceCount: 1}, UNKNOWN: {count: 0, maintenanceCount: 0}}); + expect(App.AlertDefinition.find().findProperty('id', 1).get('lastTriggered')).to.equal(2); + expect(App.AlertDefinition.find().findProperty('id', 1).get('summary')).to.eql({OK: {count: 1, maintenanceCount: 0, latestText : "Connection failed: [Errno 111] Connection refused to c6407.ambari.apache.org:60000"}, WARNING: {count: 1, maintenanceCount: 0, latestText : "Connection failed: [Errno 111] Connection refused to c6407.ambari.apache.org:60000"}, CRITICAL: {count: 0, maintenanceCount: 1}, UNKNOWN: {count: 0, maintenanceCount: 0}}); - expect(App.MetricsAlertDefinition.find().findProperty('id', 2).get('lastTriggered')).to.equal(3); - expect(App.MetricsAlertDefinition.find().findProperty('id', 2).get('summary')).to.eql({OK: {count: 1, maintenanceCount: 0, latestText : "HTTP 200 response in 0.000 seconds"}, WARNING: {count: 5, maintenanceCount: 0, latestText : "Connection failed: [Errno 111] Connection refused to c6407.ambari.apache.org:60000"}, CRITICAL: {count: 1, maintenanceCount: 0}, UNKNOWN: {count: 1, maintenanceCount: 0}}); + expect(App.AlertDefinition.find().findProperty('id', 2).get('lastTriggered')).to.equal(3); + expect(App.AlertDefinition.find().findProperty('id', 2).get('summary')).to.eql({OK: {count: 1, maintenanceCount: 0, latestText : "HTTP 200 response in 0.000 seconds"}, WARNING: {count: 5, maintenanceCount: 0, latestText : "Connection failed: [Errno 111] Connection refused to c6407.ambari.apache.org:60000"}, CRITICAL: {count: 1, maintenanceCount: 0}, UNKNOWN: {count: 1, maintenanceCount: 0}}); - expect(App.WebAlertDefinition.find().findProperty('id', 3).get('lastTriggered')).to.equal(4); - expect(App.WebAlertDefinition.find().findProperty('id', 3).get('summary')).to.eql({OK: {count: 1, maintenanceCount: 0, latestText : "HTTP 200 response in 0.000 seconds"}, WARNING: {count: 2, maintenanceCount: 2}, CRITICAL: {count: 3, maintenanceCount: 0, latestText : "Connection failed: [Errno 111] Connection refused to c6407.ambari.apache.org:60000"}, UNKNOWN: {count: 4, maintenanceCount: 0}}); + expect(App.AlertDefinition.find().findProperty('id', 3).get('lastTriggered')).to.equal(4); + expect(App.AlertDefinition.find().findProperty('id', 3).get('summary')).to.eql({OK: {count: 1, maintenanceCount: 0, latestText : "HTTP 200 response in 0.000 seconds"}, WARNING: {count: 2, maintenanceCount: 2}, CRITICAL: {count: 3, maintenanceCount: 0, latestText : "Connection failed: [Errno 111] Connection refused to c6407.ambari.apache.org:60000"}, UNKNOWN: {count: 4, maintenanceCount: 0}}); - expect(App.AggregateAlertDefinition.find().findProperty('id', 4).get('lastTriggered')).to.equal(2); - expect(App.AggregateAlertDefinition.find().findProperty('id', 4).get('summary')).to.eql({OK: {count: 4, maintenanceCount: 0, latestText : "HTTP 200 response in 0.000 seconds"}, WARNING: {count: 3, maintenanceCount: 0}, CRITICAL: {count: 2, maintenanceCount: 0}, UNKNOWN: {count: 1, maintenanceCount: 0, latestText : "Connection failed: [Errno 111] Connection refused to c6407.ambari.apache.org:60000"}}); + expect(App.AlertDefinition.find().findProperty('id', 4).get('lastTriggered')).to.equal(2); + expect(App.AlertDefinition.find().findProperty('id', 4).get('summary')).to.eql({OK: {count: 4, maintenanceCount: 0, latestText : "HTTP 200 response in 0.000 seconds"}, WARNING: {count: 3, maintenanceCount: 0}, CRITICAL: {count: 2, maintenanceCount: 0}, UNKNOWN: {count: 1, maintenanceCount: 0, latestText : "Connection failed: [Errno 111] Connection refused to c6407.ambari.apache.org:60000"}}); - expect(App.ScriptAlertDefinition.find().findProperty('id', 5).get('lastTriggered')).to.equal(4); - expect(App.ScriptAlertDefinition.find().findProperty('id', 5).get('summary')).to.eql({OK: {count: 1, maintenanceCount: 0, latestText : "Connection failed: [Errno 111] Connection refused to c6407.ambari.apache.org:60000"}, WARNING: {count: 1, maintenanceCount: 0}, CRITICAL: {count: 1, maintenanceCount: 0}, UNKNOWN: {count: 1, maintenanceCount: 0}}); + expect(App.AlertDefinition.find().findProperty('id', 5).get('lastTriggered')).to.equal(4); + expect(App.AlertDefinition.find().findProperty('id', 5).get('summary')).to.eql({OK: {count: 1, maintenanceCount: 0, latestText : "Connection failed: [Errno 111] Connection refused to c6407.ambari.apache.org:60000"}, WARNING: {count: 1, maintenanceCount: 0}, CRITICAL: {count: 1, maintenanceCount: 0}, UNKNOWN: {count: 1, maintenanceCount: 0}}); }); it('should clear summary for disabled definitions', function () { App.alertDefinitionSummaryMapper.map(dataToMap); - expect(App.ScriptAlertDefinition.find().findProperty('id', 6).get('summary')).to.eql({}); + expect(App.AlertDefinition.find().findProperty('id', 6).get('summary')).to.eql({}); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/test/mappers/alert_definitions_mapper_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/mappers/alert_definitions_mapper_test.js b/ambari-web/test/mappers/alert_definitions_mapper_test.js index a9ea04e..3f6ed93 100644 --- a/ambari-web/test/mappers/alert_definitions_mapper_test.js +++ b/ambari-web/test/mappers/alert_definitions_mapper_test.js @@ -189,23 +189,11 @@ describe('App.alertDefinitionsMapper', function () { App.alertDefinitionsMapper.setProperties({ 'model': {}, - 'portModel': {}, - 'metricsModel': {}, - 'webModel': {}, - 'aggregateModel': {}, - 'scriptModel': {}, - 'reportModel': {}, 'metricsSourceModel': {}, 'metricsUriModel': {} }); - sinon.stub(App.PortAlertDefinition, 'find', function() {return [];}); - sinon.stub(App.MetricsAlertDefinition, 'find', function() {return [];}); - sinon.stub(App.WebAlertDefinition, 'find', function() {return [];}); - sinon.stub(App.AggregateAlertDefinition, 'find', function() {return [];}); - sinon.stub(App.ScriptAlertDefinition, 'find', function() {return [];}); - sinon.stub(App.alertDefinitionsMapper, 'deleteRecord', Em.K); sinon.stub(App.store, 'commit', Em.K); @@ -229,23 +217,11 @@ describe('App.alertDefinitionsMapper', function () { App.alertDefinitionsMapper.setProperties({ 'model': App.AlertDefinition, - 'portModel': App.PortAlertDefinition, - 'metricsModel': App.MetricsAlertDefinition, - 'webModel': App.WebAlertDefinition, - 'aggregateModel': App.AggregateAlertDefinition, - 'scriptModel': App.ScriptAlertDefinition, - 'reportModel': App.AlertReportDefinition, 'metricsSourceModel': App.AlertMetricsSourceDefinition, 'metricsUriModel': App.AlertMetricsUriDefinition }); - App.PortAlertDefinition.find.restore(); - App.MetricsAlertDefinition.find.restore(); - App.WebAlertDefinition.find.restore(); - App.AggregateAlertDefinition.find.restore(); - App.ScriptAlertDefinition.find.restore(); - App.alertDefinitionsMapper.deleteRecord.restore(); App.router.get.restore(); @@ -297,7 +273,7 @@ describe('App.alertDefinitionsMapper', function () { }); it('parsing metrics model', function() { - testHelpers.nestedExpect(expected, App.alertDefinitionsMapper.get('metricsModel.content')); + testHelpers.nestedExpect(expected, App.alertDefinitionsMapper.get('model.content')); }); it('parse metrics source', function() { @@ -343,7 +319,7 @@ describe('App.alertDefinitionsMapper', function () { }); it('parsing web model', function() { - testHelpers.nestedExpect(expected, App.alertDefinitionsMapper.get('webModel.content')); + testHelpers.nestedExpect(expected, App.alertDefinitionsMapper.get('model.content')); }); @@ -373,7 +349,7 @@ describe('App.alertDefinitionsMapper', function () { ]; App.alertDefinitionsMapper.map(data); - testHelpers.nestedExpect(expected, App.alertDefinitionsMapper.get('aggregateModel.content')); + testHelpers.nestedExpect(expected, App.alertDefinitionsMapper.get('model.content')); }); @@ -397,7 +373,7 @@ describe('App.alertDefinitionsMapper', function () { ]; App.alertDefinitionsMapper.map(data); - testHelpers.nestedExpect(expected, App.alertDefinitionsMapper.get('scriptModel.content')); + testHelpers.nestedExpect(expected, App.alertDefinitionsMapper.get('model.content')); }); @@ -417,12 +393,12 @@ describe('App.alertDefinitionsMapper', function () { "interval":1, "type":"PORT", "default_port":2181, - "uri":"{{zookeeper-env/clientPort}}" + "port_uri":"{{zookeeper-env/clientPort}}" } ]; App.alertDefinitionsMapper.map(data); - testHelpers.nestedExpect(expected, App.alertDefinitionsMapper.get('portModel.content')); + testHelpers.nestedExpect(expected, App.alertDefinitionsMapper.get('model.content')); }); @@ -438,11 +414,11 @@ describe('App.alertDefinitionsMapper', function () { App.alertDefinitionsMapper.map(json); - expect(App.alertDefinitionsMapper.get('portModel.content')[0].groups).to.eql([1, 4]); - expect(App.alertDefinitionsMapper.get('metricsModel.content')[0].groups).to.eql([5, 1]); - expect(App.alertDefinitionsMapper.get('webModel.content')[0].groups).to.eql([4, 3]); - expect(App.alertDefinitionsMapper.get('aggregateModel.content')[0].groups).to.eql([3, 2]); - expect(App.alertDefinitionsMapper.get('scriptModel.content')[0].groups).to.eql([2, 5]); + expect(App.alertDefinitionsMapper.get('model.content')[0].groups).to.eql([5, 1]); + expect(App.alertDefinitionsMapper.get('model.content')[1].groups).to.eql([4, 3]); + expect(App.alertDefinitionsMapper.get('model.content')[2].groups).to.eql([3, 2]); + expect(App.alertDefinitionsMapper.get('model.content')[3].groups).to.eql([2, 5]); + expect(App.alertDefinitionsMapper.get('model.content')[4].groups).to.eql([1, 4]); }); @@ -455,14 +431,14 @@ describe('App.alertDefinitionsMapper', function () { beforeEach(function () { - sinon.stub(App.AlertDefinition, 'getAllDefinitions', function () { + sinon.stub(App.AlertDefinition, 'find', function () { return definitions; }); }); afterEach(function() { - App.AlertDefinition.getAllDefinitions.restore(); + App.AlertDefinition.find.restore(); }); it('should delete PORT alert definition with id 100500', function () { http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/test/models/alert_group_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/models/alert_group_test.js b/ambari-web/test/models/alert_group_test.js deleted file mode 100644 index 37168c7..0000000 --- a/ambari-web/test/models/alert_group_test.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var App = require('app'); - -require('models/alert_group'); - -var model; - -describe('App.AlertGroup', function () { - - beforeEach(function () { - - model = App.AlertGroup.createRecord(); - - }); - - describe('#definitions', function () { - - beforeEach(function () { - - model.reopen({ - portAlertDefinitions: [1], - metricsAlertDefinitions: [2, 3], - webAlertDefinitions: [4], - aggregateAlertDefinitions: [], - scriptAlertDefinitions: [6] - }); - - }); - - it('should concatenate all types of definitions', function () { - expect(model.get('definitions')).to.eql([1,2,3,4,6]); - model.set('aggregateAlertDefinitions', [5]); - expect(model.get('definitions')).to.eql([1,2,3,4,5,6]); - model.set('scriptAlertDefinitions', []); - expect(model.get('definitions')).to.eql([1,2,3,4,5]); - }); - - }); - -}); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/943a16ba/ambari-web/test/views/main/service/info/summary_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/views/main/service/info/summary_test.js b/ambari-web/test/views/main/service/info/summary_test.js index 1d40d5a..303fdfb 100644 --- a/ambari-web/test/views/main/service/info/summary_test.js +++ b/ambari-web/test/views/main/service/info/summary_test.js @@ -107,7 +107,7 @@ describe('App.MainServiceInfoSummaryView', function() { describe('#hasAlertDefinitions', function () { beforeEach(function () { - sinon.stub(App.AlertDefinition, 'getAllDefinitions', function () { + sinon.stub(App.AlertDefinition, 'find', function () { return [ { serviceName: 'HDFS' @@ -120,7 +120,7 @@ describe('App.MainServiceInfoSummaryView', function() { }); afterEach(function () { - App.AlertDefinition.getAllDefinitions.restore(); + App.AlertDefinition.find.restore(); }); it('should return true if at least one alert definition for this service exists', function () {