瀏覽代碼

Merge pull request #280 from hiveww/AMBARI-22923-trunk

AMBARI-22923. Cover add_component_config_initializer with tests
Alexander Antonenko 7 年之前
父節點
當前提交
1899e8f58a

+ 1 - 0
ambari-web/app/assets/test/tests.js

@@ -234,6 +234,7 @@ var files = [
   'test/utils/updater_test',
   'test/utils/updater_test',
   'test/utils/configs/database_test',
   'test/utils/configs/database_test',
   'test/utils/configs/config_initializer_test',
   'test/utils/configs/config_initializer_test',
+  'test/utils/configs/add_component_config_initializer_test',
   'test/utils/configs/modification_handlers/modification_handler_test',
   'test/utils/configs/modification_handlers/modification_handler_test',
   'test/utils/configs/modification_handlers/misc_test',
   'test/utils/configs/modification_handlers/misc_test',
   'test/utils/load_timer_test',
   'test/utils/load_timer_test',

+ 140 - 0
ambari-web/test/utils/configs/add_component_config_initializer_test.js

@@ -0,0 +1,140 @@
+/**
+ * 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/configs/objects/service_config_property');
+require('utils/configs/add_component_config_initializer');
+
+
+describe('App.AddComponentConfigInitializer', function () {
+  var serviceConfigProperty;
+  var addComponentConfigInitializer = App.AddComponentConfigInitializer.create({
+    initializeForProperties: [
+      'zookeeper.connect',
+      'ha.zookeeper.quorum',
+      'hbase.zookeeper.quorum',
+      'instance.zookeeper.host',
+      'templeton.zookeeper.hosts',
+      'hive.cluster.delegation.token.store.zookeeper.connectString',
+      'yarn.resourcemanager.zk-address',
+      'hive.zookeeper.quorum',
+      'storm.zookeeper.servers',
+      'hadoop.registry.zk.quorum',
+      'atlas.audit.hbase.zookeeper.quorum',
+      'atlas.graph.index.search.solr.zookeeper-url',
+      'atlas.graph.storage.hostname',
+      'atlas.kafka.zookeeper.connect'
+    ]
+  });
+
+  beforeEach(function () {
+    serviceConfigProperty = App.ServiceConfigProperty.create();
+  });
+
+  describe('#getJSONStringifiedValueConfig', function () {
+    it('should return correct type', function () {
+      expect(addComponentConfigInitializer.getJSONStringifiedValueConfig().type).to.equal('json_stringified_value');
+    })
+  });
+
+  describe('#_initAsJSONStrigifiedValueConfig', function () {
+    it('should split by comma and change value to array of strings', function () {
+      serviceConfigProperty.set('value', 'value0,value1,value2');
+      addComponentConfigInitializer._initAsJSONStrigifiedValueConfig(serviceConfigProperty);
+      expect(serviceConfigProperty.get('recommendedValue')).to.equal("['value0','value1','value2']");
+    });
+
+    it('should split by slash and change value to array of strings', function () {
+      serviceConfigProperty.set('value', 'value0/value1/value2');
+      addComponentConfigInitializer._initAsJSONStrigifiedValueConfig(serviceConfigProperty, null, null, Em.Object.create({
+        modifier: {
+          delimiter: '/'
+        }
+      }));
+      expect(serviceConfigProperty.get('recommendedValue')).to.equal("['value0','value1','value2']");
+    });
+  });
+
+  describe('#updateSiteObj', function () {
+    beforeEach(function () {
+      sinon.stub(App.config, 'updateHostsListValue');
+    });
+
+    afterEach(function () {
+      App.config.updateHostsListValue.restore();
+    });
+
+    it('should return false if no params and not update anything', function () {
+      expect(addComponentConfigInitializer.updateSiteObj()).to.equal(false);
+      expect(App.config.updateHostsListValue.called).to.equal(false);
+    });
+
+    it('should call updateHostsListValue if params are present', function () {
+      addComponentConfigInitializer.updateSiteObj({}, {});
+      expect(App.config.updateHostsListValue.called).to.equal(true);
+    });
+
+    it('should call updateHostsListValue with correct params', function () {
+      addComponentConfigInitializer.set('initializers', {name: {type: 'json_stringified_value'}});
+      var siteConfigs = {};
+      var configProperty = {
+        name: 'name',
+        fileName: 'fileName',
+        value: 'value'
+      };
+      addComponentConfigInitializer.updateSiteObj(siteConfigs, configProperty);
+      expect(App.config.updateHostsListValue.calledWith(siteConfigs, configProperty.fileName, configProperty.name, configProperty.value, false)).to.equal(true);
+    })
+  });
+
+  describe('#_initTempletonHiveProperties', function () {
+    var configProperty = {
+      value: 'thrift123,'
+    };
+    var localDB = {
+      masterComponentHosts: [{component: 'HIVE_METASTORE', hostName: '1', isInstalled: true}]
+    };
+    var dependecies = {hiveMetastorePort: 3333};
+    it('should return correct configProperty', function () {
+      expect(addComponentConfigInitializer._initTempletonHiveProperties(configProperty, localDB, dependecies).value).to.equal('thrift://1:3333,');
+    });
+
+    it('should not change nothing if config property value has not separator', function () {
+      configProperty = {
+        value: 'thrift123'
+      };
+
+      expect(addComponentConfigInitializer._initTempletonHiveProperties(configProperty, localDB, dependecies).value).to.equal('thrift123');
+    });
+
+    it('should not change nothing if master component hosts have not HIVE_METASTORE component', function () {
+      localDB = {
+        masterComponentHosts: [{component: 'ATLAS', hostName: '1', isInstalled: false}]
+      };
+      expect(addComponentConfigInitializer._initTempletonHiveProperties(configProperty, localDB, dependecies).value).to.equal('thrift123');
+    });
+
+    it('should not change nothing if master component hosts have not installed HIVE_METASTORE component', function () {
+      localDB = {
+        masterComponentHosts: [{component: 'HIVE_METASTORE', hostName: '1', isInstalled: false}]
+      };
+      expect(addComponentConfigInitializer._initTempletonHiveProperties(configProperty, localDB, dependecies).value).to.equal('thrift123');
+    });
+  });
+});