Repository: ambari
Updated Branches:
  refs/heads/trunk 06f54386c -> 4d5d882db


AMBARI-7639 HDFS config will not save (nandat via jaoki)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4d5d882d
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4d5d882d
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4d5d882d

Branch: refs/heads/trunk
Commit: 4d5d882db57041898be7286dfd948e6e8a946202
Parents: 06f5438
Author: Jun Aoki <ja...@apache.org>
Authored: Thu Oct 9 17:20:13 2014 -0700
Committer: Jun Aoki <ja...@apache.org>
Committed: Thu Oct 9 17:20:13 2014 -0700

----------------------------------------------------------------------
 .../controllers/main/service/info/configs.js    |  22 +-
 .../main/service/info/config_test.js            | 210 +++++++++++++++++++
 2 files changed, 221 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/4d5d882d/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 2210920..386ec96 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -1313,23 +1313,23 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend(App.ServerValidatorM
     if (serviceName === 'HDFS') {
       var hdfsConfigs = this.get('stepConfigs').findProperty('serviceName', 
'HDFS').get('configs');
       if (App.get('isHadoop2Stack')) {
-        if (hdfsConfigs.findProperty('name', 
'dfs.namenode.name.dir').get('isNotDefaultValue') ||
-          hdfsConfigs.findProperty('name', 
'dfs.namenode.checkpoint.dir').get('isNotDefaultValue') ||
-          hdfsConfigs.findProperty('name', 
'dfs.datanode.data.dir').get('isNotDefaultValue')) {
-          dirChanged = true;
+        if ((hdfsConfigs.findProperty('name', 'dfs.namenode.name.dir') && 
hdfsConfigs.findProperty('name', 
'dfs.namenode.name.dir').get('isNotDefaultValue')) ||
+            (hdfsConfigs.findProperty('name', 'dfs.namenode.checkpoint.dir') 
&& hdfsConfigs.findProperty('name', 
'dfs.namenode.checkpoint.dir').get('isNotDefaultValue')) ||
+            (hdfsConfigs.findProperty('name', 'dfs.datanode.data.dir') && 
hdfsConfigs.findProperty('name', 
'dfs.datanode.data.dir').get('isNotDefaultValue'))) {
+            dirChanged = true;
         }
       } else {
-        if (hdfsConfigs.findProperty('name', 
'dfs.name.dir').get('isNotDefaultValue') ||
-          hdfsConfigs.findProperty('name', 
'fs.checkpoint.dir').get('isNotDefaultValue') ||
-          hdfsConfigs.findProperty('name', 
'dfs.data.dir').get('isNotDefaultValue')) {
-          dirChanged = true;
+        if ((hdfsConfigs.findProperty('name', 'dfs.name.dir') && 
hdfsConfigs.findProperty('name', 'dfs.name.dir').get('isNotDefaultValue')) ||
+            (hdfsConfigs.findProperty('name', 'fs.checkpoint.dir') && 
hdfsConfigs.findProperty('name', 'fs.checkpoint.dir').get('isNotDefaultValue')) 
||
+            (hdfsConfigs.findProperty('name', 'dfs.data.dir') && 
hdfsConfigs.findProperty('name', 'dfs.data.dir').get('isNotDefaultValue'))) {
+             dirChanged = true;
         }
       }
     } else if (serviceName === 'MAPREDUCE') {
       var mapredConfigs = this.get('stepConfigs').findProperty('serviceName', 
'MAPREDUCE').get('configs');
-      if (mapredConfigs.findProperty('name', 
'mapred.local.dir').get('isNotDefaultValue') ||
-        mapredConfigs.findProperty('name', 
'mapred.system.dir').get('isNotDefaultValue')) {
-        dirChanged = true;
+      if ((mapredConfigs.findProperty('name', 'mapred.local.dir') && 
mapredConfigs.findProperty('name', 
'mapred.local.dir').get('isNotDefaultValue')) ||
+          (mapredConfigs.findProperty('name', 'mapred.system.dir') && 
mapredConfigs.findProperty('name', 
'mapred.system.dir').get('isNotDefaultValue'))) {
+            dirChanged = true;
       }
     }
     return dirChanged;

http://git-wip-us.apache.org/repos/asf/ambari/blob/4d5d882d/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 e11ad38..e2cf89b 100644
--- a/ambari-web/test/controllers/main/service/info/config_test.js
+++ b/ambari-web/test/controllers/main/service/info/config_test.js
@@ -650,6 +650,216 @@ describe("App.MainServiceInfoConfigsController", function 
() {
     });
   });
 
+  describe("#isDirChanged", function() {
+
+    describe("when service name is HDFS", function() {
+      beforeEach(function() {
+        mainServiceInfoConfigsController.set('content', Ember.Object.create ({ 
serviceName: 'HDFS' }));
+      });
+
+      describe("when isHadoop2Stack is true", function() {
+
+        var tests = [
+          {
+            it: "should set dirChanged to false if none of the properties 
exist",
+            expect: false,
+            config: Ember.Object.create ({})
+          },
+          {
+            it: "should set dirChanged to true if dfs.namenode.name.dir is not 
default",
+            expect: true,
+            config: Ember.Object.create ({
+              name: 'dfs.namenode.name.dir',
+              isNotDefaultValue: true
+            })
+          },
+          {
+            it: "should set dirChanged to false if dfs.namenode.name.dir is 
default",
+            expect: false,
+            config: Ember.Object.create ({
+              name: 'dfs.namenode.name.dir',
+              isNotDefaultValue: false
+            })
+          },
+          {
+            it: "should set dirChanged to true if dfs.namenode.checkpoint.dir 
is not default",
+            expect: true,
+            config: Ember.Object.create ({
+              name: 'dfs.namenode.checkpoint.dir',
+              isNotDefaultValue: true
+            })
+          },
+          {
+            it: "should set dirChanged to false if dfs.namenode.checkpoint.dir 
is default",
+            expect: false,
+            config: Ember.Object.create ({
+              name: 'dfs.namenode.checkpoint.dir',
+              isNotDefaultValue: false
+            })
+          },
+          {
+            it: "should set dirChanged to true if dfs.datanode.data.dir is not 
default",
+            expect: true,
+            config: Ember.Object.create ({
+              name: 'dfs.datanode.data.dir',
+              isNotDefaultValue: true
+            })
+          },
+          {
+            it: "should set dirChanged to false if dfs.datanode.data.dir is 
default",
+            expect: false,
+            config: Ember.Object.create ({
+              name: 'dfs.datanode.data.dir',
+              isNotDefaultValue: false
+            })
+          }
+        ];
+
+        beforeEach(function() {
+          sinon.stub(App, 'get').returns(true);
+        });
+
+        afterEach(function() {
+          App.get.restore();
+        });
+
+        tests.forEach(function(test) {
+          it(test.it, function() {
+            mainServiceInfoConfigsController.set('stepConfigs', 
[Ember.Object.create ({ configs: [test.config], serviceName: 'HDFS' })]);
+            
expect(mainServiceInfoConfigsController.isDirChanged()).to.equal(test.expect);
+          })
+        });
+      });
+
+      describe("when isHadoop2Stack is false", function() {
+
+        var tests = [
+          {
+            it: "should set dirChanged to false if none of the properties 
exist",
+            expect: false,
+            config: Ember.Object.create ({})
+          },
+          {
+            it: "should set dirChanged to true if dfs.name.dir is not default",
+            expect: true,
+            config: Ember.Object.create ({
+              name: 'dfs.name.dir',
+              isNotDefaultValue: true
+            })
+          },
+          {
+            it: "should set dirChanged to false if dfs.name.dir is default",
+            expect: false,
+            config: Ember.Object.create ({
+              name: 'dfs.name.dir',
+              isNotDefaultValue: false
+            })
+          },
+          {
+            it: "should set dirChanged to true if fs.checkpoint.dir is not 
default",
+            expect: true,
+            config: Ember.Object.create ({
+              name: 'fs.checkpoint.dir',
+              isNotDefaultValue: true
+            })
+          },
+          {
+            it: "should set dirChanged to false if fs.checkpoint.dir is 
default",
+            expect: false,
+            config: Ember.Object.create ({
+              name: 'fs.checkpoint.dir',
+              isNotDefaultValue: false
+            })
+          },
+          {
+            it: "should set dirChanged to true if dfs.data.dir is not default",
+            expect: true,
+            config: Ember.Object.create ({
+              name: 'dfs.data.dir',
+              isNotDefaultValue: true
+            })
+          },
+          {
+            it: "should set dirChanged to false if dfs.data.dir is default",
+            expect: false,
+            config: Ember.Object.create ({
+              name: 'dfs.data.dir',
+              isNotDefaultValue: false
+            })
+          }
+        ];
+
+        beforeEach(function() {
+          sinon.stub(App, 'get').returns(false);
+        });
+
+        afterEach(function() {
+          App.get.restore();
+        });
+
+        tests.forEach(function(test) {
+          it(test.it, function() {
+            mainServiceInfoConfigsController.set('stepConfigs', 
[Ember.Object.create ({ configs: [test.config], serviceName: 'HDFS' })]);
+            
expect(mainServiceInfoConfigsController.isDirChanged()).to.equal(test.expect);
+          })
+        });
+      });
+    });
+
+    describe("when service name is MAPREDUCE", function() {
+      beforeEach(function() {
+        mainServiceInfoConfigsController.set('content', Ember.Object.create ({ 
serviceName: 'MAPREDUCE' }));
+      });
+
+      var tests = [
+        {
+          it: "should set dirChanged to false if none of the properties exist",
+          expect: false,
+          config: Ember.Object.create ({})
+        },
+        {
+          it: "should set dirChanged to true if mapred.local.dir is not 
default",
+          expect: true,
+          config: Ember.Object.create ({
+            name: 'mapred.local.dir',
+            isNotDefaultValue: true
+          })
+        },
+        {
+          it: "should set dirChanged to false if mapred.local.dir is default",
+          expect: false,
+          config: Ember.Object.create ({
+            name: 'mapred.local.dir',
+            isNotDefaultValue: false
+          })
+        },
+        {
+          it: "should set dirChanged to true if mapred.system.dir is not 
default",
+          expect: true,
+          config: Ember.Object.create ({
+            name: 'mapred.system.dir',
+            isNotDefaultValue: true
+          })
+        },
+        {
+          it: "should set dirChanged to false if mapred.system.dir is default",
+          expect: false,
+          config: Ember.Object.create ({
+            name: 'mapred.system.dir',
+            isNotDefaultValue: false
+          })
+        }
+      ];
+
+      tests.forEach(function(test) {
+        it(test.it, function() {
+          mainServiceInfoConfigsController.set('stepConfigs', 
[Ember.Object.create ({ configs: [test.config], serviceName: 'MAPREDUCE' })]);
+          
expect(mainServiceInfoConfigsController.isDirChanged()).to.equal(test.expect);
+        })
+      });
+    });
+  });
+
   describe("#addDynamicProperties", function() {
 
     var tests = [

Reply via email to