123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972 |
- /**
- * 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/config_initializer');
- var serviceConfigProperty;
- describe('App.ConfigInitializer', function () {
- beforeEach(function () {
- serviceConfigProperty = App.ServiceConfigProperty.create();
- });
- describe('#setRecommendedValue', function () {
- it('should change the recommended value', function () {
- serviceConfigProperty.set('recommendedValue', 'value0');
- App.ConfigInitializer.setRecommendedValue(serviceConfigProperty, /\d/, '1');
- expect(serviceConfigProperty.get('recommendedValue')).to.equal('value1');
- });
- });
- describe('#initialValue', function () {
- var cases = {
- 'kafka.ganglia.metrics.host': [
- {
- message: 'kafka.ganglia.metrics.host property should have the value of ganglia hostname when ganglia is selected',
- localDB: {
- masterComponentHosts: [
- {
- component: 'GANGLIA_SERVER',
- hostName: 'c6401'
- }
- ]
- },
- expected: 'c6401'
- },
- {
- message: 'kafka.ganglia.metrics.host property should have the value "localhost" when ganglia is not selected',
- localDB: {
- masterComponentHosts: [
- {
- component: 'NAMENODE',
- hostName: 'c6401'
- }
- ]
- },
- expected: 'localhost'
- }
- ],
- 'hive_database': [
- {
- alwaysEnableManagedMySQLForHive: true,
- currentStateName: '',
- isManagedMySQLForHiveEnabled: false,
- receivedValue: 'New MySQL Database',
- value: 'New MySQL Database',
- options: [
- {
- displayName: 'New MySQL Database'
- }
- ],
- hidden: false
- },
- {
- alwaysEnableManagedMySQLForHive: false,
- currentStateName: 'configs',
- isManagedMySQLForHiveEnabled: false,
- receivedValue: 'New MySQL Database',
- value: 'New MySQL Database',
- options: [
- {
- displayName: 'New MySQL Database'
- }
- ],
- hidden: false
- },
- {
- alwaysEnableManagedMySQLForHive: false,
- currentStateName: '',
- isManagedMySQLForHiveEnabled: true,
- receivedValue: 'New MySQL Database',
- value: 'New MySQL Database',
- options: [
- {
- displayName: 'New MySQL Database'
- }
- ],
- hidden: false
- },
- {
- alwaysEnableManagedMySQLForHive: false,
- currentStateName: '',
- isManagedMySQLForHiveEnabled: false,
- receivedValue: 'New MySQL Database',
- value: 'Existing MySQL Database',
- options: [
- {
- displayName: 'New MySQL Database'
- }
- ],
- hidden: true
- },
- {
- alwaysEnableManagedMySQLForHive: false,
- currentStateName: '',
- isManagedMySQLForHiveEnabled: false,
- receivedValue: 'New PostgreSQL Database',
- value: 'New PostgreSQL Database',
- options: [
- {
- displayName: 'New MySQL Database'
- }
- ],
- hidden: true
- }
- ],
- 'hbase.zookeeper.quorum': [
- {
- filename: 'hbase-site.xml',
- value: 'host0,host1',
- recommendedValue: 'host0,host1',
- title: 'should set ZooKeeper Server hostnames'
- },
- {
- filename: 'ams-hbase-site.xml',
- value: 'localhost',
- recommendedValue: null,
- title: 'should ignore ZooKeeper Server hostnames'
- }
- ],
- 'hivemetastore_host': {
- localDB: {
- masterComponentHosts: [
- {
- component: 'HIVE_METASTORE',
- hostName: 'h0'
- },
- {
- component: 'HIVE_METASTORE',
- hostName: 'h1'
- }
- ]
- },
- value: ['h0', 'h1'],
- title: 'array that contains names of hosts with Hive Metastore'
- },
- 'hive_master_hosts': {
- localDB: {
- masterComponentHosts: [
- {
- component: 'HIVE_SERVER',
- hostName: 'h0'
- },
- {
- component: 'HIVE_METASTORE',
- hostName: 'h0'
- },
- {
- component: 'HIVE_METASTORE',
- hostName: 'h1'
- },
- {
- component: 'WEBHCAT_SERVER',
- hostName: 'h2'
- }
- ]
- },
- value: 'h0,h1',
- title: 'comma separated list of hosts with Hive Server and Metastore'
- },
- 'hive.metastore.uris': {
- localDB: {
- masterComponentHosts: [
- {
- component: 'HIVE_METASTORE',
- hostName: 'h0'
- },
- {
- component: 'HIVE_METASTORE',
- hostName: 'h1'
- }
- ]
- },
- dependencies: {
- 'hive.metastore.uris': 'thrift://localhost:9083'
- },
- filename: 'hive-site.xml',
- recommendedValue: 'thrift://localhost:9083',
- value: 'thrift://h0:9083,thrift://h1:9083',
- title: 'comma separated list of Metastore hosts with thrift prefix and port'
- },
- 'templeton.hive.properties': {
- localDB: {
- masterComponentHosts: [
- {
- component: 'HIVE_METASTORE',
- hostName: 'h0'
- },
- {
- component: 'HIVE_METASTORE',
- hostName: 'h1'
- }
- ]
- },
- dependencies: {
- 'hive.metastore.uris': 'thrift://localhost:9083'
- },
- recommendedValue: 'hive.metastore.local=false,hive.metastore.uris=thrift://localhost:9083,hive.metastore.sasl.enabled=false',
- value: 'hive.metastore.local=false,hive.metastore.uris=thrift://h0:9083\\,thrift://h1:9083,hive.metastore.sasl.enabled=false,hive.metastore.execute.setugi=true',
- title: 'should add relevant hive.metastore.uris value'
- },
- 'yarn.resourcemanager.zk-address': {
- localDB: {
- masterComponentHosts: [
- {
- component: 'ZOOKEEPER_SERVER',
- hostName: 'h0'
- },
- {
- component: 'ZOOKEEPER_SERVER',
- hostName: 'h1'
- }
- ]
- },
- dependencies: {
- clientPort: '2182'
- },
- recommendedValue: 'localhost:2181',
- value: 'h0:2182,h1:2182',
- title: 'should add ZK host and port dynamically'
- },
- 'knox_gateway_host': {
- localDB: {
- masterComponentHosts: [
- {
- component: 'KNOX_GATEWAY',
- hostName: 'h0'
- },
- {
- component: 'KNOX_GATEWAY',
- hostName: 'h1'
- }
- ]
- },
- value: ['h0', 'h1'],
- title: 'array that contains names of hosts with Knox Gateway'
- },
- 'atlas.rest.address': [
- {
- localDB: {
- masterComponentHosts: [
- {
- component: 'ZOOKEEPER_SERVER',
- hostName: 'h0'
- },
- {
- component: 'ZOOKEEPER_SERVER',
- hostName: 'h1'
- }
- ]
- },
- dependencies: {
- 'atlas.enableTLS': false,
- 'atlas.server.http.port': 21000,
- 'atlas.server.https.port': 21443
- },
- value: 'http://h0:21000,http://h1:21000',
- title: 'TLS is not enabled'
- },
- {
- localDB: {
- masterComponentHosts: [
- {
- component: 'ZOOKEEPER_SERVER',
- hostName: 'h0'
- },
- {
- component: 'ZOOKEEPER_SERVER',
- hostName: 'h1'
- }
- ]
- },
- dependencies: {
- 'atlas.enableTLS': true,
- 'atlas.server.http.port': 21000,
- 'atlas.server.https.port': 21443
- },
- value: 'https://h0:21443,https://h1:21443',
- title: 'TLS is enabled'
- }
- ]
- };
- cases['atlas.rest.address'].forEach(function (test) {
- it(test.title, function () {
- serviceConfigProperty.setProperties({
- name: 'atlas.rest.address',
- value: ''
- });
- App.ConfigInitializer.initialValue(serviceConfigProperty, test.localDB, test.dependencies);
- expect(serviceConfigProperty.get('value')).to.equal(test.value);
- expect(serviceConfigProperty.get('recommendedValue')).to.equal(test.value);
- });
- });
- cases['kafka.ganglia.metrics.host'].forEach(function (item) {
- it(item.message, function () {
- serviceConfigProperty.setProperties({
- name: 'kafka.ganglia.metrics.host',
- value: 'localhost'
- });
- App.ConfigInitializer.initialValue(serviceConfigProperty, item.localDB, []);
- expect(serviceConfigProperty.get('value')).to.equal(item.expected);
- });
- });
- describe('hive_database', function () {
- beforeEach(function () {
- this.stub = sinon.stub(App, 'get');
- });
- afterEach(function () {
- App.get.restore();
- });
- cases.hive_database.forEach(function (item) {
- var title = 'hive_database value should be set to {0}';
- describe(title.format(item.value), function () {
- beforeEach(function () {
- this.stub
- .withArgs('supports.alwaysEnableManagedMySQLForHive').returns(item.alwaysEnableManagedMySQLForHive)
- .withArgs('router.currentState.name').returns(item.currentStateName)
- .withArgs('isManagedMySQLForHiveEnabled').returns(item.isManagedMySQLForHiveEnabled);
- serviceConfigProperty.setProperties({
- name: 'hive_database',
- value: item.receivedValue,
- options: item.options
- });
- App.ConfigInitializer.initialValue(serviceConfigProperty, {}, []);
- });
- it('value is ' + item.value, function () {
- expect(serviceConfigProperty.get('value')).to.equal(item.value);
- });
- it('`New MySQL Database` is ' + (item.hidden ? '' : 'not') + ' hidden', function () {
- expect(serviceConfigProperty.get('options').findProperty('displayName', 'New MySQL Database').hidden).to.equal(item.hidden);
- });
- });
- });
- });
- cases['hbase.zookeeper.quorum'].forEach(function (item) {
- it(item.title, function () {
- serviceConfigProperty.setProperties({
- name: 'hbase.zookeeper.quorum',
- value: 'localhost',
- 'filename': item.filename
- });
- App.ConfigInitializer.initialValue(serviceConfigProperty, {
- masterComponentHosts: {
- filterProperty: function () {
- return {
- mapProperty: function () {
- return ['host0', 'host1'];
- }
- };
- }
- }
- }, []);
- expect(serviceConfigProperty.get('value')).to.equal(item.value);
- expect(serviceConfigProperty.get('recommendedValue')).to.equal(item.recommendedValue);
- });
- });
- it(cases.hive_master_hosts.title, function () {
- serviceConfigProperty.set('name', 'hive_master_hosts');
- App.ConfigInitializer.initialValue(serviceConfigProperty, cases.hive_master_hosts.localDB, []);
- expect(serviceConfigProperty.get('value')).to.equal(cases.hive_master_hosts.value);
- });
- it(cases['hive.metastore.uris'].title, function () {
- serviceConfigProperty.setProperties({
- name: 'hive.metastore.uris',
- recommendedValue: cases['hive.metastore.uris'].recommendedValue,
- filename: 'hive-site.xml'
- });
- App.ConfigInitializer.initialValue(serviceConfigProperty, cases['hive.metastore.uris'].localDB, {'hive.metastore.uris': cases['hive.metastore.uris'].recommendedValue});
- expect(serviceConfigProperty.get('value')).to.equal(cases['hive.metastore.uris'].value);
- expect(serviceConfigProperty.get('recommendedValue')).to.equal(cases['hive.metastore.uris'].value);
- });
- it(cases['templeton.hive.properties'].title, function () {
- serviceConfigProperty.setProperties({
- name: 'templeton.hive.properties',
- recommendedValue: cases['templeton.hive.properties'].recommendedValue,
- value: cases['templeton.hive.properties'].recommendedValue
- });
- App.ConfigInitializer.initialValue(serviceConfigProperty, cases['templeton.hive.properties'].localDB, {'hive.metastore.uris': cases['templeton.hive.properties'].recommendedValue});
- expect(serviceConfigProperty.get('value')).to.equal(cases['templeton.hive.properties'].value);
- expect(serviceConfigProperty.get('recommendedValue')).to.equal(cases['templeton.hive.properties'].value);
- });
- it(cases['yarn.resourcemanager.zk-address'].title, function () {
- serviceConfigProperty.setProperties({
- name: 'yarn.resourcemanager.zk-address',
- recommendedValue: cases['yarn.resourcemanager.zk-address'].recommendedValue
- });
- App.ConfigInitializer.initialValue(serviceConfigProperty, cases['yarn.resourcemanager.zk-address'].localDB, cases['yarn.resourcemanager.zk-address'].dependencies);
- expect(serviceConfigProperty.get('value')).to.equal(cases['yarn.resourcemanager.zk-address'].value);
- expect(serviceConfigProperty.get('recommendedValue')).to.equal(cases['yarn.resourcemanager.zk-address'].value);
- });
- function getLocalDBForSingleComponent(component) {
- return {
- masterComponentHosts: [
- {
- component: component,
- hostName: 'h1'
- },
- {
- component: 'FAKE_COMPONENT',
- hostName: 'FAKE_HOST'
- }
- ]
- };
- }
- function getLocalDBForMultipleComponents(component, count) {
- var ret = {
- masterComponentHosts: [{
- component: 'FAKE_COMPONENT',
- hostName: 'FAKE_HOST'
- }]
- };
- for (var i = 1; i <= count; i++) {
- ret.masterComponentHosts.push({
- component: component,
- hostName: 'h' + i
- })
- }
- return ret;
- }
- Em.A([
- {
- config: 'dfs.namenode.rpc-address',
- localDB: getLocalDBForSingleComponent('NAMENODE'),
- rValue: 'c6401.ambari.apache.org:8020',
- expectedValue: 'h1:8020'
- },
- {
- config: 'dfs.http.address',
- localDB: getLocalDBForSingleComponent('NAMENODE'),
- rValue: 'c6401.ambari.apache.org:8020',
- expectedValue: 'h1:8020'
- },
- {
- config: 'dfs.namenode.http-address',
- localDB: getLocalDBForSingleComponent('NAMENODE'),
- rValue: 'c6401.ambari.apache.org:8020',
- expectedValue: 'h1:8020'
- },
- {
- config: 'dfs.https.address',
- localDB: getLocalDBForSingleComponent('NAMENODE'),
- rValue: 'c6401.ambari.apache.org:8020',
- expectedValue: 'h1:8020'
- },
- {
- config: 'dfs.namenode.https-address',
- localDB: getLocalDBForSingleComponent('NAMENODE'),
- rValue: 'c6401.ambari.apache.org:8020',
- expectedValue: 'h1:8020'
- },
- {
- config: 'fs.default.name',
- localDB: getLocalDBForSingleComponent('NAMENODE'),
- rValue: 'hdfs://c6401.ambari.apache.org:8020',
- expectedValue: 'hdfs://h1:8020'
- },
- {
- config: 'fs.defaultFS',
- localDB: getLocalDBForSingleComponent('NAMENODE'),
- rValue: 'hdfs://c6401.ambari.apache.org:8020',
- expectedValue: 'hdfs://h1:8020'
- },
- {
- config: 'hbase.rootdir',
- localDB: getLocalDBForSingleComponent('NAMENODE'),
- rValue: 'hdfs://c6401.ambari.apache.org:8020',
- expectedValue: 'hdfs://h1:8020'
- },
- {
- config: 'instance.volumes',
- localDB: getLocalDBForSingleComponent('NAMENODE'),
- rValue: 'hdfs://c6401.ambari.apache.org:8020',
- expectedValue: 'hdfs://h1:8020'
- },
- {
- config: 'dfs.secondary.http.address',
- localDB: getLocalDBForSingleComponent('SECONDARY_NAMENODE'),
- rValue: 'c6401.ambari.apache.org:50090',
- expectedValue: 'h1:50090'
- },
- {
- config: 'dfs.namenode.secondary.http-address',
- localDB: getLocalDBForSingleComponent('SECONDARY_NAMENODE'),
- rValue: 'c6401.ambari.apache.org:50090',
- expectedValue: 'h1:50090'
- },
- {
- config: 'yarn.log.server.url',
- localDB: getLocalDBForSingleComponent('HISTORYSERVER'),
- rValue: 'http://localhost:19888/jobhistory/logs',
- expectedValue: 'http://h1:19888/jobhistory/logs'
- },
- {
- config: 'mapreduce.jobhistory.webapp.address',
- localDB: getLocalDBForSingleComponent('HISTORYSERVER'),
- rValue: 'c6407.ambari.apache.org:19888',
- expectedValue: 'h1:19888'
- },
- {
- config: 'mapreduce.jobhistory.address',
- localDB: getLocalDBForSingleComponent('HISTORYSERVER'),
- rValue: 'c6407.ambari.apache.org:19888',
- expectedValue: 'h1:19888'
- },
- {
- config: 'yarn.resourcemanager.hostname',
- localDB: getLocalDBForSingleComponent('RESOURCEMANAGER'),
- rValue: 'c6407.ambari.apache.org',
- expectedValue: 'h1'
- },
- {
- config: 'yarn.resourcemanager.resource-tracker.address',
- localDB: getLocalDBForSingleComponent('RESOURCEMANAGER'),
- rValue: 'c6407.ambari.apache.org:123',
- expectedValue: 'h1:123'
- },
- {
- config: 'yarn.resourcemanager.webapp.https.address',
- localDB: getLocalDBForSingleComponent('RESOURCEMANAGER'),
- rValue: 'c6407.ambari.apache.org:123',
- expectedValue: 'h1:123'
- },
- {
- config: 'yarn.resourcemanager.webapp.address',
- localDB: getLocalDBForSingleComponent('RESOURCEMANAGER'),
- rValue: 'c6407.ambari.apache.org:123',
- expectedValue: 'h1:123'
- },
- {
- config: 'yarn.resourcemanager.scheduler.address',
- localDB: getLocalDBForSingleComponent('RESOURCEMANAGER'),
- rValue: 'c6407.ambari.apache.org:123',
- expectedValue: 'h1:123'
- },
- {
- config: 'yarn.resourcemanager.address',
- localDB: getLocalDBForSingleComponent('RESOURCEMANAGER'),
- rValue: 'c6407.ambari.apache.org:123',
- expectedValue: 'h1:123'
- },
- {
- config: 'yarn.resourcemanager.admin.address',
- localDB: getLocalDBForSingleComponent('RESOURCEMANAGER'),
- rValue: 'c6407.ambari.apache.org:123',
- expectedValue: 'h1:123'
- },
- {
- config: 'yarn.timeline-service.webapp.address',
- localDB: getLocalDBForSingleComponent('APP_TIMELINE_SERVER'),
- rValue: 'c6407.ambari.apache.org:432',
- expectedValue: 'h1:432'
- },
- {
- config: 'yarn.timeline-service.address',
- localDB: getLocalDBForSingleComponent('APP_TIMELINE_SERVER'),
- rValue: 'c6407.ambari.apache.org:432',
- expectedValue: 'h1:432'
- },
- {
- config: 'yarn.timeline-service.webapp.https.address',
- localDB: getLocalDBForSingleComponent('APP_TIMELINE_SERVER'),
- rValue: 'c6407.ambari.apache.org:432',
- expectedValue: 'h1:432'
- },
- {
- config: 'mapred.job.tracker',
- localDB: getLocalDBForSingleComponent('JOBTRACKER'),
- rValue: 'c6407.ambari.apache.org:111',
- expectedValue: 'h1:111'
- },
- {
- config: 'mapred.job.tracker.http.address',
- localDB: getLocalDBForSingleComponent('JOBTRACKER'),
- rValue: 'c6407.ambari.apache.org:111',
- expectedValue: 'h1:111'
- },
- {
- config: 'mapreduce.history.server.http.address',
- localDB: getLocalDBForSingleComponent('HISTORYSERVER'),
- rValue: 'c6407.ambari.apache.org:555',
- expectedValue: 'h1:555'
- },
- {
- config: 'oozie.base.url',
- localDB: getLocalDBForSingleComponent('OOZIE_SERVER'),
- rValue: 'http://localhost:11000/oozie',
- expectedValue: 'http://h1:11000/oozie'
- },
- {
- config: 'nimbus.host',
- localDB: getLocalDBForSingleComponent('NIMBUS'),
- rValue: 'localhost',
- expectedValue: 'h1'
- },
- {
- config: '*.broker.url',
- localDB: getLocalDBForSingleComponent('FALCON_SERVER'),
- rValue: 'tcp://localhost:61616',
- expectedValue: 'tcp://h1:61616'
- },
- {
- config: 'storm.zookeeper.servers',
- localDB: getLocalDBForMultipleComponents('ZOOKEEPER_SERVER', 3),
- rValue: "['c6401.ambari.apache.org','c6402.ambari.apache.org']",
- expectedValue: ['h1', 'h2', 'h3']
- },
- {
- config: 'nimbus.seeds',
- localDB: getLocalDBForMultipleComponents('NIMBUS', 3),
- rValue: "['c6401.ambari.apache.org','c6402.ambari.apache.org']",
- expectedValue: ['h1', 'h2', 'h3']
- },
- {
- config: 'hawq_master_address_host',
- localDB: getLocalDBForSingleComponent('HAWQMASTER'),
- rValue: 'localhost',
- expectedValue: 'h1'
- },
- {
- config: 'hawq_standby_address_host',
- localDB: getLocalDBForSingleComponent('HAWQSTANDBY'),
- rValue: 'localhost',
- expectedValue: 'h1'
- },
- {
- config: 'hawq_dfs_url',
- localDB: getLocalDBForSingleComponent('NAMENODE'),
- rValue: 'localhost:8020/hawq_data',
- expectedValue: 'h1:8020/hawq_data'
- },
- {
- config: 'hawq_rm_yarn_address',
- localDB: getLocalDBForSingleComponent('RESOURCEMANAGER'),
- rValue: 'localhost:8032',
- expectedValue: 'h1:8032'
- },
- {
- config: 'hawq_rm_yarn_scheduler_address',
- localDB: getLocalDBForSingleComponent('RESOURCEMANAGER'),
- rValue: 'localhost:8030',
- expectedValue: 'h1:8030'
- },
- {
- config: 'hadoop_host',
- localDB: getLocalDBForSingleComponent('NAMENODE'),
- rValue: 'localhost',
- expectedValue: 'h1'
- },
- {
- config: 'hive_master_hosts',
- localDB: getLocalDBForMultipleComponents('HIVE_METASTORE', 3),
- rValue: '',
- expectedValue: 'h1,h2,h3'
- },
- {
- config: 'hive_master_hosts',
- localDB: getLocalDBForMultipleComponents('HIVE_SERVER', 3),
- rValue: '',
- expectedValue: 'h1,h2,h3'
- },
- {
- config: 'zookeeper.connect',
- localDB: getLocalDBForMultipleComponents('ZOOKEEPER_SERVER', 3),
- rValue: 'localhost:2181',
- expectedValue: 'h1:2181,h2:2181,h3:2181'
- },
- {
- config: 'hive.zookeeper.quorum',
- localDB: getLocalDBForMultipleComponents('ZOOKEEPER_SERVER', 3),
- rValue: 'localhost:2181',
- expectedValue: 'h1:2181,h2:2181,h3:2181'
- },
- {
- config: 'templeton.zookeeper.hosts',
- localDB: getLocalDBForMultipleComponents('ZOOKEEPER_SERVER', 3),
- rValue: 'localhost:2181',
- expectedValue: 'h1:2181,h2:2181,h3:2181'
- },
- {
- config: 'hadoop.registry.zk.quorum',
- localDB: getLocalDBForMultipleComponents('ZOOKEEPER_SERVER', 3),
- rValue: 'localhost:2181',
- expectedValue: 'h1:2181,h2:2181,h3:2181'
- },
- {
- config: 'hive.cluster.delegation.token.store.zookeeper.connectString',
- localDB: getLocalDBForMultipleComponents('ZOOKEEPER_SERVER', 3),
- rValue: 'localhost:2181',
- expectedValue: 'h1:2181,h2:2181,h3:2181'
- },
- {
- config: 'instance.zookeeper.host',
- localDB: getLocalDBForMultipleComponents('ZOOKEEPER_SERVER', 3),
- rValue: 'localhost:2181',
- expectedValue: 'h1:2181,h2:2181,h3:2181'
- },
- {
- config: 'templeton.hive.properties',
- localDB: getLocalDBForMultipleComponents('HIVE_METASTORE', 2),
- rValue: 'hive.metastore.local=false,hive.metastore.uris=thrift://localhost:9933,hive.metastore.sasl.enabled=false',
- dependencies: {
- 'hive.metastore.uris': 'thrift://localhost:9083'
- },
- expectedValue: 'hive.metastore.local=false,hive.metastore.uris=thrift://h1:9083\\,thrift://h2:9083,hive.metastore.sasl.enabled=false'
- },
- {
- config: 'hbase.zookeeper.quorum',
- m: 'hbase.zookeeper.quorum hbase-site.xml',
- localDB: getLocalDBForMultipleComponents('ZOOKEEPER_SERVER', 3),
- rValue: 'c6401.ambari.apache.org,c6402.ambari.apache.org',
- expectedValue: 'h1,h2,h3',
- filename: 'hbase-site.xml'
- },
- {
- config: 'hbase.zookeeper.quorum',
- m: 'hbase.zookeeper.quorum not-hbase-site.xml',
- localDB: getLocalDBForMultipleComponents('ZOOKEEPER_SERVER', 3),
- rValue: 'localhost',
- expectedValue: '',
- expectedRValue: 'localhost',
- filename: 'not-hbase-site.xml'
- },
- {
- config: 'yarn.resourcemanager.zk-address',
- localDB: getLocalDBForMultipleComponents('ZOOKEEPER_SERVER', 3),
- rValue: 'localhost:2181',
- dependencies: {
- 'clientPort': '3333'
- },
- expectedValue: 'h1:3333,h2:3333,h3:3333'
- },
- {
- config: 'RANGER_HOST',
- localDB: getLocalDBForSingleComponent('RANGER_ADMIN'),
- rValue: 'locahost',
- expectedValue: 'h1'
- },
- {
- config: 'hive.metastore.uris',
- filename: 'hive-site.xml',
- localDB: getLocalDBForMultipleComponents('HIVE_METASTORE', 2),
- dependencies: {
- 'hive.metastore.uris': 'thrift://localhost:9083'
- },
- rValue: 'thrift://localhost:9083',
- expectedValue: 'thrift://h1:9083,thrift://h2:9083'
- }
- ]).forEach(function (test) {
- describe(test.m || test.config, function () {
- beforeEach(function () {
- serviceConfigProperty.setProperties({
- name: test.config,
- recommendedValue: test.rValue,
- filename: test.filename
- });
- App.ConfigInitializer.initialValue(serviceConfigProperty, test.localDB, test.dependencies);
- });
- it('value is ' + test.expectedValue, function () {
- expect(serviceConfigProperty.get('value')).to.eql(test.expectedValue);
- });
- if (Em.isNone(test.expectedRValue)) {
- it('recommendedValue is ' + test.expectedValue, function () {
- expect(serviceConfigProperty.get('recommendedValue')).to.eql(test.expectedValue);
- });
- }
- else {
- it('recommendedValue is ' + test.expectedRValue, function () {
- expect(serviceConfigProperty.get('recommendedValue')).to.eql(test.expectedRValue);
- });
- }
- });
- });
- });
- describe('#getHiveMetastoreUris', function () {
- var cases = [
- {
- hosts: [
- {
- hostName: 'h0',
- component: 'HIVE_SERVER'
- },
- {
- hostName: 'h1',
- component: 'HIVE_METASTORE'
- },
- {
- hostName: 'h2',
- component: 'HIVE_METASTORE'
- }
- ],
- recommendedValue: 'thrift://localhost:9083',
- expected: 'thrift://h1:9083,thrift://h2:9083',
- title: 'typical case'
- },
- {
- hosts: [
- {
- hostName: 'h0',
- component: 'HIVE_SERVER'
- }
- ],
- recommendedValue: 'thrift://localhost:9083',
- expected: '',
- title: 'no Metastore hosts in DB'
- },
- {
- hosts: [
- {
- hostName: 'h0',
- component: 'HIVE_SERVER'
- },
- {
- hostName: 'h1',
- component: 'HIVE_METASTORE'
- },
- {
- hostName: 'h2',
- component: 'HIVE_METASTORE'
- }
- ],
- recommendedValue: '',
- expected: '',
- title: 'default value without port'
- },
- {
- hosts: [
- {
- hostName: 'h0',
- component: 'HIVE_SERVER'
- },
- {
- hostName: 'h1',
- component: 'HIVE_METASTORE'
- },
- {
- hostName: 'h2',
- component: 'HIVE_METASTORE'
- }
- ],
- expected: '',
- title: 'no default value specified'
- }
- ];
- cases.forEach(function (item) {
- it(item.title, function () {
- expect(App.ConfigInitializer.getHiveMetastoreUris(item.hosts, item.recommendedValue)).to.equal(item.expected);
- });
- });
- });
- describe('initializerTypes', function () {
- var types = App.ConfigInitializer.get('initializerTypes');
- Em.keys(types).forEach(function(type) {
- it(type, function() {
- var methodName = types[type].method;
- expect(methodName).to.be.a.string;
- expect(methodName).to.have.length.above(0);
- expect(App.ConfigInitializer[methodName]).to.be.a.function;
- });
- });
- });
- describe('initializers', function () {
- var initializers = App.ConfigInitializer.get('initializers');
- var types = App.ConfigInitializer.get('initializerTypes');
- var typeNames = types.mapProperty('name');
- Em.keys(initializers).forEach(function (configName) {
- it(configName, function () {
- var type = initializers[configName].type;
- expect(typeNames).to.contain(type);
- });
- });
- });
- describe('uniqueInitializers', function () {
- var uniqueInitializers = App.ConfigInitializer.get('uniqueInitializers');
- var uniqueInitializersNames = Em.keys(uniqueInitializers).map(function (key) {
- return uniqueInitializers[key];
- });
- it('should contains only unique methods', function () {
- expect(uniqueInitializersNames.length).to.equal(uniqueInitializersNames.uniq().length);
- });
- uniqueInitializersNames.forEach(function (name) {
- it(name, function () {
- expect(App.ConfigInitializer[name]).to.be.a.function;
- });
- });
- });
- describe('winReplacersMap', function () {
- var winReplacersMap = App.ConfigInitializer.get('winReplacersMap');
- var winReplacerNames = Em.keys(winReplacersMap).map(function (key) {
- return winReplacersMap[key];
- });
- it('should contains only unique methods', function () {
- expect(winReplacerNames.length).to.equal(winReplacerNames.uniq().length);
- });
- winReplacerNames.forEach(function (name) {
- it(name, function () {
- expect(App.ConfigInitializer[name]).to.be.a.function;
- });
- });
- });
- });
|