Repository: ambari Updated Branches: refs/heads/trunk 6d48ee4dd -> 7e879645b
AMBARI-6741 On HDFS config page edit boxes with memory size values have incorrect behavior. (Max Shepel via ababiichuk) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/7e879645 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/7e879645 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/7e879645 Branch: refs/heads/trunk Commit: 7e879645b83075177c8ea9c80232eff2978c3be1 Parents: 6d48ee4 Author: aBabiichuk <ababiic...@cybervisiontech.com> Authored: Tue Aug 5 14:31:32 2014 +0300 Committer: aBabiichuk <ababiic...@cybervisiontech.com> Committed: Tue Aug 5 14:31:51 2014 +0300 ---------------------------------------------------------------------- .../controllers/main/service/info/configs.js | 22 ++++++- .../main/service/info/config_test.js | 61 +++++++++++++++++++- 2 files changed, 80 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/7e879645/ambari-web/app/controllers/main/service/info/configs.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/service/info/configs.js b/ambari-web/app/controllers/main/service/info/configs.js index 0ba1086..a99ae28 100644 --- a/ambari-web/app/controllers/main/service/info/configs.js +++ b/ambari-web/app/controllers/main/service/info/configs.js @@ -118,6 +118,16 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({ ], /** + * List of heapsize properties not to be parsed + */ + heapsizeException: ['hadoop_heapsize', 'yarn_heapsize', 'nodemanager_heapsize', 'resourcemanager_heapsize', 'apptimelineserver_heapsize', 'jobhistory_heapsize'], + + /** + * Regular expression for heapsize properties detection + */ + heapsizeRegExp: /_heapsize|_newsize|_maxnewsize$/, + +/** * Dropdown menu items in filter combobox */ filterColumns: function () { @@ -1752,6 +1762,13 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({ success: 'doPUTClusterConfigurationSiteSuccessCallback', error: 'doPUTClusterConfigurationSiteErrorCallback' }); + var heapsizeException = this.get('heapsizeException'); + var heapsizeRegExp = this.get('heapsizeRegExp'); + this.get('stepConfigs')[0].get('configs').forEach(function (item) { + if (heapsizeRegExp.test(item.get('name')) && !heapsizeException.contains(item.get('name')) && /\d+m$/.test(item.get('value'))) { + item.set('value', item.get('value').slice(0, item.get('value.length') - 1)); + } + }); }, doPUTClusterConfigurationSiteSuccessCallback: function () { @@ -1828,11 +1845,12 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({ * @return {Object} */ createSiteObj: function (siteName, tagName, siteObj) { - var heapsizeException = ['hadoop_heapsize', 'yarn_heapsize', 'nodemanager_heapsize', 'resourcemanager_heapsize', 'apptimelineserver_heapsize', 'jobhistory_heapsize']; + var heapsizeException = this.get('heapsizeException'); + var heapsizeRegExp = this.get('heapsizeRegExp'); var siteProperties = {}; siteObj.forEach(function (_siteObj) { if (_siteObj.isRequiredByAgent == false) return; - if (/_heapsize|_newsize|_maxnewsize$/.test(_siteObj.name) && !heapsizeException.contains(_siteObj.name)) { + if (heapsizeRegExp.test(_siteObj.name) && !heapsizeException.contains(_siteObj.name)) { Em.set(_siteObj, "value", _siteObj.value + "m"); } siteProperties[_siteObj.name] = App.config.escapeXMLCharacters(_siteObj.value); http://git-wip-us.apache.org/repos/asf/ambari/blob/7e879645/ambari-web/test/controllers/main/service/info/config_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/service/info/config_test.js b/ambari-web/test/controllers/main/service/info/config_test.js index fd3405f..3d38545 100644 --- a/ambari-web/test/controllers/main/service/info/config_test.js +++ b/ambari-web/test/controllers/main/service/info/config_test.js @@ -591,7 +591,55 @@ describe("App.MainServiceInfoConfigsController", function () { desired_config: "data" } } - }; + }, + sc = [ + Em.Object.create({ + configs: [ + Em.Object.create({ + name: '_heapsize', + value: '1024m' + }), + Em.Object.create({ + name: '_newsize', + value: '1024m' + }), + Em.Object.create({ + name: '_maxnewsize', + value: '1024m' + }) + ] + }) + ], + scExc = [ + Em.Object.create({ + configs: [ + Em.Object.create({ + name: 'hadoop_heapsize', + value: '1024m' + }), + Em.Object.create({ + name: 'yarn_heapsize', + value: '1024m' + }), + Em.Object.create({ + name: 'nodemanager_heapsize', + value: '1024m' + }), + Em.Object.create({ + name: 'resourcemanager_heapsize', + value: '1024m' + }), + Em.Object.create({ + name: 'apptimelineserver_heapsize', + value: '1024m' + }), + Em.Object.create({ + name: 'jobhistory_heapsize', + value: '1024m' + }) + ] + }) + ]; beforeEach(function () { sinon.stub(App.router, 'getClusterName', function() { return 'clName'; @@ -603,9 +651,20 @@ describe("App.MainServiceInfoConfigsController", function () { App.router.getClusterName.restore(); }); it("ajax request to put clsuter cfg", function () { + mainServiceInfoConfigsController.set('stepConfigs', sc); expect(mainServiceInfoConfigsController.doPUTClusterConfigurationSite(t.data)).to.equal(mainServiceInfoConfigsController.get("doPUTClusterConfigurationSiteResult")); expect(JSON.parse($.ajax.args[0][0].data)).to.deep.equal(t.request); }); + it('values should be parsed', function () { + mainServiceInfoConfigsController.set('stepConfigs', sc); + mainServiceInfoConfigsController.doPUTClusterConfigurationSite(); + expect(mainServiceInfoConfigsController.get('stepConfigs')[0].get('configs').mapProperty('value').uniq()).to.eql(['1024']); + }); + it('values should not be parsed', function () { + mainServiceInfoConfigsController.set('stepConfigs', scExc); + mainServiceInfoConfigsController.doPUTClusterConfigurationSite(); + expect(mainServiceInfoConfigsController.get('stepConfigs')[0].get('configs').mapProperty('value').uniq()).to.eql(['1024m']); + }); }); describe("#isConfigChanged", function () {