stack_service_test.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. var App = require('app');
  19. require('models/stack_service');
  20. describe('App.StackService', function () {
  21. App.store.load(App.StackService, {
  22. id: 'S1'
  23. });
  24. var ss = App.StackService.find('S1');
  25. ss.reopen({
  26. serviceComponents: []
  27. });
  28. describe('#isDFS', function () {
  29. it('service name is "SERVICE"', function () {
  30. ss.set('serviceName', 'SERVICE');
  31. ss.propertyDidChange('isDFS');
  32. expect(ss.get('isDFS')).to.be.false;
  33. });
  34. it('service name is "HDFS"', function () {
  35. ss.set('serviceName', 'HDFS');
  36. ss.propertyDidChange('isDFS');
  37. expect(ss.get('isDFS')).to.be.true;
  38. });
  39. it('service name is "GLUSTERFS"', function () {
  40. ss.set('serviceName', 'GLUSTERFS');
  41. ss.propertyDidChange('isDFS');
  42. expect(ss.get('isDFS')).to.be.true;
  43. });
  44. });
  45. describe('#isPrimaryDFS', function () {
  46. it('service name is "SERVICE"', function () {
  47. ss.set('serviceName', 'SERVICE');
  48. ss.propertyDidChange('isPrimaryDFS');
  49. expect(ss.get('isPrimaryDFS')).to.be.false;
  50. });
  51. it('service name is "HDFS"', function () {
  52. ss.set('serviceName', 'HDFS');
  53. ss.propertyDidChange('isPrimaryDFS');
  54. expect(ss.get('isPrimaryDFS')).to.be.true;
  55. });
  56. });
  57. describe('#configTypesRendered', function () {
  58. ss.set('configTypes', {
  59. 'core-site': {},
  60. 'hdfs-site': {}
  61. });
  62. it('service name is "SERVICE"', function () {
  63. ss.set('serviceName', 'SERVICE');
  64. ss.propertyDidChange('configTypesRendered');
  65. expect(ss.get('configTypesRendered')).to.eql({'hdfs-site': {}});
  66. });
  67. it('service name is "GLUSTERFS"', function () {
  68. ss.set('serviceName', 'GLUSTERFS');
  69. ss.propertyDidChange('configTypesRendered');
  70. expect(ss.get('configTypesRendered')).to.eql({'core-site': {}, 'hdfs-site': {}});
  71. });
  72. it('service name is "HDFS"', function () {
  73. ss.set('serviceName', 'HDFS');
  74. ss.propertyDidChange('configTypesRendered');
  75. expect(ss.get('configTypesRendered')).to.eql({'core-site': {}, 'hdfs-site': {}});
  76. });
  77. });
  78. describe('#displayNameOnSelectServicePage', function () {
  79. it('No coSelectedServices', function () {
  80. ss.set('serviceName', 'HDFS');
  81. ss.set('displayName', 'HDFS');
  82. ss.propertyDidChange('displayNameOnSelectServicePage');
  83. expect(ss.get('displayNameOnSelectServicePage')).to.equal('HDFS');
  84. });
  85. it('Present coSelectedServices', function () {
  86. ss.set('serviceName', 'YARN');
  87. ss.set('displayName', 'YARN');
  88. ss.propertyDidChange('displayNameOnSelectServicePage');
  89. expect(ss.get('displayNameOnSelectServicePage')).to.equal('YARN + MapReduce2');
  90. });
  91. });
  92. describe('#isHiddenOnSelectServicePage', function () {
  93. var testCases = [
  94. {
  95. serviceName: 'HDFS',
  96. result: false
  97. },
  98. {
  99. serviceName: 'MAPREDUCE2',
  100. result: true
  101. },
  102. {
  103. serviceName: 'HCATALOG',
  104. result: true
  105. },
  106. {
  107. serviceName: 'WEBHCAT',
  108. result: true
  109. }
  110. ];
  111. testCases.forEach(function (test) {
  112. it('service name - ' + test.serviceName, function () {
  113. ss.set('serviceName', test.serviceName);
  114. ss.propertyDidChange('isHiddenOnSelectServicePage');
  115. expect(ss.get('isHiddenOnSelectServicePage')).to.equal(test.result);
  116. });
  117. });
  118. });
  119. describe('#dependentServices', function () {
  120. var mock = {
  121. isHadoop2Stack: false
  122. };
  123. beforeEach(function () {
  124. sinon.stub(App, 'get', function () {
  125. return mock.isHadoop2Stack;
  126. })
  127. });
  128. afterEach(function () {
  129. App.get.restore();
  130. });
  131. it('isHadoop2Stack is false', function () {
  132. ss.set('serviceName', 'HDFS');
  133. ss.propertyDidChange('dependentServices');
  134. expect(ss.get('dependentServices')).to.eql(['MAPREDUCE', 'HBASE', 'SQOOP']);
  135. });
  136. it('isHadoop2Stack is true', function () {
  137. mock.isHadoop2Stack = true;
  138. ss.set('serviceName', 'HDFS');
  139. ss.propertyDidChange('dependentServices');
  140. expect(ss.get('dependentServices')).to.eql(['YARN', 'HBASE', 'FLUME', 'SQOOP']);
  141. });
  142. });
  143. describe('#serviceDependency', function () {
  144. var mock = {
  145. isHadoop2Stack: false
  146. };
  147. beforeEach(function () {
  148. sinon.stub(App, 'get', function () {
  149. return mock.isHadoop2Stack;
  150. })
  151. });
  152. afterEach(function () {
  153. App.get.restore();
  154. });
  155. it('isHadoop2Stack is false', function () {
  156. ss.set('serviceName', 'HDFS');
  157. ss.propertyDidChange('serviceDependency');
  158. expect(ss.get('serviceDependency')).to.eql([]);
  159. });
  160. it('isHadoop2Stack is true', function () {
  161. mock.isHadoop2Stack = true;
  162. ss.set('serviceName', 'HDFS');
  163. ss.propertyDidChange('serviceDependency');
  164. expect(ss.get('serviceDependency')).to.eql(["ZOOKEEPER"]);
  165. });
  166. });
  167. describe('#isMonitoringService', function () {
  168. var testCases = [
  169. {
  170. serviceName: 'HDFS',
  171. result: false
  172. },
  173. {
  174. serviceName: 'NAGIOS',
  175. result: true
  176. },
  177. {
  178. serviceName: 'GANGLIA',
  179. result: true
  180. }
  181. ];
  182. testCases.forEach(function (test) {
  183. it('service name - ' + test.serviceName, function () {
  184. ss.set('serviceName', test.serviceName);
  185. ss.propertyDidChange('isMonitoringService');
  186. expect(ss.get('isMonitoringService')).to.equal(test.result);
  187. });
  188. });
  189. });
  190. describe('#hasClient', function () {
  191. it('No client serviceComponents', function () {
  192. ss.set('serviceComponents', []);
  193. ss.propertyDidChange('hasClient');
  194. expect(ss.get('hasClient')).to.be.false;
  195. });
  196. it('Has client serviceComponents', function () {
  197. ss.set('serviceComponents', [Em.Object.create({isClient: true})]);
  198. ss.propertyDidChange('hasClient');
  199. expect(ss.get('hasClient')).to.be.true;
  200. });
  201. });
  202. describe('#hasMaster', function () {
  203. it('No master serviceComponents', function () {
  204. ss.set('serviceComponents', []);
  205. ss.propertyDidChange('hasMaster');
  206. expect(ss.get('hasMaster')).to.be.false;
  207. });
  208. it('Has master serviceComponents', function () {
  209. ss.set('serviceComponents', [Em.Object.create({isMaster: true})]);
  210. ss.propertyDidChange('hasMaster');
  211. expect(ss.get('hasMaster')).to.be.true;
  212. });
  213. });
  214. describe('#hasSlave', function () {
  215. it('No slave serviceComponents', function () {
  216. ss.set('serviceComponents', []);
  217. ss.propertyDidChange('hasSlave');
  218. expect(ss.get('hasSlave')).to.be.false;
  219. });
  220. it('Has slave serviceComponents', function () {
  221. ss.set('serviceComponents', [Em.Object.create({isSlave: true})]);
  222. ss.propertyDidChange('hasSlave');
  223. expect(ss.get('hasSlave')).to.be.true;
  224. });
  225. });
  226. describe('#isClientOnlyService', function () {
  227. it('Has not only client serviceComponents', function () {
  228. ss.set('serviceComponents', [Em.Object.create({isSlave: true}), Em.Object.create({isClient: true})]);
  229. ss.propertyDidChange('isClientOnlyService');
  230. expect(ss.get('isClientOnlyService')).to.be.false;
  231. });
  232. it('Has only client serviceComponents', function () {
  233. ss.set('serviceComponents', [Em.Object.create({isClient: true})]);
  234. ss.propertyDidChange('isClientOnlyService');
  235. expect(ss.get('isClientOnlyService')).to.be.true;
  236. });
  237. });
  238. describe('#isNoConfigTypes', function () {
  239. it('configTypes is null', function () {
  240. ss.set('configTypes', null);
  241. ss.propertyDidChange('isNoConfigTypes');
  242. expect(ss.get('isNoConfigTypes')).to.be.true;
  243. });
  244. it('configTypes is empty', function () {
  245. ss.set('configTypes', {});
  246. ss.propertyDidChange('isNoConfigTypes');
  247. expect(ss.get('isNoConfigTypes')).to.be.true;
  248. });
  249. it('configTypes is correct', function () {
  250. ss.set('configTypes', {'key': {}});
  251. ss.propertyDidChange('isNoConfigTypes');
  252. expect(ss.get('isNoConfigTypes')).to.be.false;
  253. });
  254. });
  255. describe('#customReviewHandler', function () {
  256. it('service name is HDFS', function () {
  257. ss.set('serviceName', 'HDFS');
  258. ss.propertyDidChange('customReviewHandler');
  259. expect(ss.get('customReviewHandler')).to.be.undefined;
  260. });
  261. it('service name is HIVE', function () {
  262. ss.set('serviceName', 'HIVE');
  263. ss.propertyDidChange('customReviewHandler');
  264. expect(ss.get('customReviewHandler')).to.eql({
  265. "Database": "loadHiveDbValue"
  266. });
  267. });
  268. });
  269. describe('#defaultsProviders', function () {
  270. it('service name is HDFS', function () {
  271. ss.set('serviceName', 'HDFS');
  272. ss.propertyDidChange('defaultsProviders');
  273. expect(ss.get('defaultsProviders')).to.be.undefined;
  274. });
  275. it('service name is HIVE', function () {
  276. ss.set('serviceName', 'HIVE');
  277. ss.propertyDidChange('defaultsProviders');
  278. expect(ss.get('defaultsProviders')).to.not.be.empty;
  279. });
  280. });
  281. describe('#configsValidator', function () {
  282. it('service name is HDFS', function () {
  283. ss.set('serviceName', 'HDFS');
  284. ss.propertyDidChange('configsValidator');
  285. expect(ss.get('configsValidator')).to.be.undefined;
  286. });
  287. it('service name is HIVE', function () {
  288. ss.set('serviceName', 'HIVE');
  289. ss.propertyDidChange('configsValidator');
  290. expect(ss.get('configsValidator')).to.not.be.empty;
  291. });
  292. });
  293. describe('#configCategories', function () {
  294. it('HDFS service with no serviceComponents', function () {
  295. ss.set('serviceComponents', []);
  296. ss.set('serviceName', 'HDFS');
  297. ss.propertyDidChange('configCategories');
  298. expect(ss.get('configCategories').mapProperty('name')).to.eql([
  299. "General",
  300. "Advanced",
  301. "Advanced key",
  302. "Custom key"
  303. ]);
  304. });
  305. it('HDFS service with DATANODE serviceComponents', function () {
  306. ss.set('serviceComponents', [Em.Object.create({componentName: 'DATANODE'})]);
  307. ss.set('serviceName', 'HDFS');
  308. ss.propertyDidChange('configCategories');
  309. expect(ss.get('configCategories').mapProperty('name')).to.eql([
  310. "DATANODE",
  311. "General",
  312. "Advanced",
  313. "Advanced key",
  314. "Custom key"]);
  315. });
  316. });
  317. });