You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ab...@apache.org on 2014/08/05 13:35:50 UTC

git commit: AMBARI-6741 On HDFS config page edit boxes with memory size values have incorrect behavior. (Max Shepel via ababiichuk)

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 <ab...@cybervisiontech.com>
Authored: Tue Aug 5 14:31:32 2014 +0300
Committer: aBabiichuk <ab...@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 () {