installer_test.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970
  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/cluster');
  20. require('controllers/wizard');
  21. require('controllers/installer');
  22. describe('App.InstallerController', function () {
  23. var installerController = App.InstallerController.create();
  24. describe('#init', function () {
  25. var c;
  26. beforeEach(function () {
  27. c = App.InstallerController.create({});
  28. });
  29. it('all steps are disabled by default', function () {
  30. expect(c.get('isStepDisabled.length') > 0 ).to.be.ok;
  31. expect(c.get('isStepDisabled').everyProperty('value', true)).to.be.ok;
  32. });
  33. });
  34. describe('#loadStacksVersionsSuccessCallback', function() {
  35. beforeEach(function () {
  36. sinon.stub(App.store, 'commit', Em.K);
  37. });
  38. afterEach(function () {
  39. App.store.commit.restore();
  40. });
  41. it ('Correct data', function() {
  42. installerController.set('loadStacksRequestsCounter', 1);
  43. installerController.loadStacksVersionsSuccessCallback(require('test/stack'));
  44. expect(installerController.get('content.stacks.length')).to.equal(2);
  45. expect(installerController.get('content.stacks').everyProperty('isSelected')).to.be.false;
  46. expect(installerController.get('content.stacks').mapProperty('id')).to.eql(['HDP-2.1','HDP-1.3']);
  47. });
  48. });
  49. describe('#getCluster', function() {
  50. it ('Should return merged clusterStatusTemplate', function() {
  51. installerController.set('clusterStatusTemplate', {
  52. name: 'template'
  53. });
  54. expect(installerController.getCluster()).to.eql({
  55. name: 'template'
  56. });
  57. });
  58. });
  59. describe('#getHosts', function() {
  60. it ('Should return empty array', function() {
  61. expect(installerController.getHosts()).to.eql([]);
  62. });
  63. });
  64. describe('#loadServices', function() {
  65. it ('Should resolve nothing', function() {
  66. var res = installerController.loadServices();
  67. res.then(function(data){
  68. expect(data).to.be.undefined;
  69. });
  70. });
  71. });
  72. describe('#checkRepoURL', function() {
  73. beforeEach(function () {
  74. sinon.stub(App.ajax, 'send', function(data){
  75. return null;
  76. });
  77. });
  78. afterEach(function () {
  79. App.ajax.send.restore();
  80. });
  81. it ('Should reload installed stacks', function() {
  82. var stacks = Em.A([
  83. Em.Object.create({
  84. isSelected: false
  85. }),
  86. Em.Object.create({
  87. isSelected: true,
  88. reload: false,
  89. id: 'nn-cc',
  90. repositories: Em.A([
  91. Em.Object.create({
  92. isSelected: true
  93. })
  94. ]),
  95. operatingSystems: Em.A([
  96. Em.Object.create({
  97. isSelected: true,
  98. repositories: Em.A([
  99. Em.Object.create({
  100. errorTitle: '1',
  101. errorContent: '1',
  102. validation: ''
  103. })
  104. ])
  105. })
  106. ])
  107. })
  108. ]);
  109. var wizard = Em.Object.create({
  110. skipValidationChecked: true
  111. });
  112. installerController.set('content.stacks', stacks);
  113. installerController.checkRepoURL(wizard);
  114. var expected = [
  115. {
  116. "isSelected": false
  117. },
  118. {
  119. "isSelected": true,
  120. "reload": true,
  121. "id": "nn-cc",
  122. "repositories": [
  123. {
  124. "isSelected": true
  125. }
  126. ],
  127. "operatingSystems": [
  128. {
  129. "isSelected": true,
  130. "repositories": [
  131. {
  132. "errorTitle": "",
  133. "errorContent": "",
  134. "validation": "icon-repeat"
  135. }
  136. ]
  137. }
  138. ]
  139. }
  140. ];
  141. var res = JSON.parse(JSON.stringify(installerController.get('content.stacks')));
  142. expect(res).to.be.eql(expected);
  143. });
  144. });
  145. describe('#checkRepoURLSuccessCallback', function() {
  146. it ('Should check stacks for sucess', function() {
  147. var stacks = Em.A([
  148. Em.Object.create({
  149. isSelected: false
  150. }),
  151. Em.Object.create({
  152. isSelected: true,
  153. reload: false,
  154. id: 'nn-cc',
  155. repositories: Em.A([
  156. Em.Object.create({
  157. repoId: 11,
  158. isSelected: true
  159. })
  160. ]),
  161. operatingSystems: Em.A([
  162. Em.Object.create({
  163. isSelected: true,
  164. id: 1,
  165. repositories: Em.A([
  166. Em.Object.create({
  167. repoId: 11,
  168. errorTitle: '1',
  169. errorContent: '1',
  170. validation: ''
  171. })
  172. ])
  173. })
  174. ])
  175. })
  176. ]);
  177. var resolve = false;
  178. var data = {
  179. osId: 1,
  180. repoId: 11,
  181. dfd: {
  182. resolve: function() {
  183. resolve = true;
  184. }
  185. }
  186. };
  187. installerController.set('content.stacks', stacks);
  188. installerController.checkRepoURLSuccessCallback(null,null,data);
  189. var expected = [
  190. {
  191. "isSelected": false
  192. },
  193. {
  194. "isSelected": true,
  195. "reload": false,
  196. "id": "nn-cc",
  197. "repositories": [
  198. {
  199. "repoId": 11,
  200. "isSelected": true
  201. }
  202. ],
  203. "operatingSystems": [
  204. {
  205. "isSelected": true,
  206. "id": 1,
  207. "repositories": [
  208. {
  209. "repoId": 11,
  210. "errorTitle": "1",
  211. "errorContent": "1",
  212. "validation": "icon-ok"
  213. }
  214. ]
  215. }
  216. ]
  217. }
  218. ];
  219. var res = JSON.parse(JSON.stringify(installerController.get('content.stacks')));
  220. expect(resolve).to.be.true;
  221. expect(res).to.be.eql(expected);
  222. });
  223. });
  224. describe('#checkRepoURLErrorCallback', function() {
  225. it ('Should check stacks for error', function() {
  226. var stacks = Em.A([
  227. Em.Object.create({
  228. isSelected: false
  229. }),
  230. Em.Object.create({
  231. isSelected: true,
  232. reload: false,
  233. id: 'nn-cc',
  234. repositories: Em.A([
  235. Em.Object.create({
  236. repoId: 11,
  237. isSelected: true
  238. })
  239. ]),
  240. operatingSystems: Em.A([
  241. Em.Object.create({
  242. isSelected: true,
  243. id: 1,
  244. repositories: Em.A([
  245. Em.Object.create({
  246. repoId: 11,
  247. errorTitle: '1',
  248. errorContent: '1',
  249. validation: ''
  250. })
  251. ])
  252. })
  253. ])
  254. })
  255. ]);
  256. var resolve = false;
  257. var data = {
  258. osId: 1,
  259. repoId: 11,
  260. dfd: {
  261. reject: function() {
  262. resolve = true;
  263. }
  264. }
  265. };
  266. var req = {
  267. status: 500,
  268. statusText: 'error'
  269. };
  270. installerController.set('content.stacks', stacks);
  271. installerController.checkRepoURLErrorCallback(req,{},{},{},data);
  272. var expected = [
  273. {
  274. "isSelected": false
  275. },
  276. {
  277. "isSelected": true,
  278. "reload": false,
  279. "id": "nn-cc",
  280. "repositories": [
  281. {
  282. "repoId": 11,
  283. "isSelected": true
  284. }
  285. ],
  286. "operatingSystems": [
  287. {
  288. "isSelected": true,
  289. "id": 1,
  290. "repositories": [
  291. {
  292. "repoId": 11,
  293. "errorTitle": "500:error",
  294. "errorContent": "",
  295. "validation": "icon-exclamation-sign"
  296. }
  297. ]
  298. }
  299. ]
  300. }
  301. ];
  302. var res = JSON.parse(JSON.stringify(installerController.get('content.stacks')));
  303. expect(resolve).to.be.true;
  304. expect(res).to.be.eql(expected);
  305. });
  306. });
  307. describe('#loadStacks', function() {
  308. it ('Should resolve promise with true', function() {
  309. installerController.set('content.stacks', Em.Object.create({
  310. length: 2
  311. }));
  312. var res = installerController.loadStacks();
  313. res.then(function(data){
  314. expect(data).to.be.true;
  315. });
  316. });
  317. it ('Should resolve promise with false', function() {
  318. installerController.set('content.stacks', null);
  319. var res = installerController.loadStacks();
  320. res.then(function(data){
  321. expect(data).to.be.false;
  322. });
  323. });
  324. });
  325. describe('#setLowerStepsDisable', function() {
  326. it ('Should disable lower steps', function() {
  327. var steps = Em.A([
  328. Em.Object.create({
  329. step: 0,
  330. value: false
  331. }),
  332. Em.Object.create({
  333. step: 1,
  334. value: false
  335. }),
  336. Em.Object.create({
  337. step: 2,
  338. value: false
  339. }),
  340. Em.Object.create({
  341. step: 3,
  342. value: false
  343. }),
  344. Em.Object.create({
  345. step: 4,
  346. value: false
  347. })
  348. ]);
  349. installerController.set('isStepDisabled', steps);
  350. installerController.setLowerStepsDisable(3);
  351. var expected = [
  352. {
  353. "step": 0,
  354. "value": true
  355. },
  356. {
  357. "step": 1,
  358. "value": true
  359. },
  360. {
  361. "step": 2,
  362. "value": true
  363. },
  364. {
  365. "step": 3,
  366. "value": false
  367. },
  368. {
  369. "step": 4,
  370. "value": false
  371. }
  372. ];
  373. var res = JSON.parse(JSON.stringify(installerController.get('isStepDisabled')));
  374. expect(res).to.eql(expected);
  375. });
  376. });
  377. describe('#setStepsEnable', function() {
  378. it ('Should enable next steps', function() {
  379. var steps = Em.A([
  380. Em.Object.create({
  381. step: 0,
  382. value: false
  383. }),
  384. Em.Object.create({
  385. step: 1,
  386. value: false
  387. }),
  388. Em.Object.create({
  389. step: 2,
  390. value: false
  391. }),
  392. Em.Object.create({
  393. step: 3,
  394. value: false
  395. }),
  396. Em.Object.create({
  397. step: 4,
  398. value: false
  399. })
  400. ]);
  401. installerController.set('isStepDisabled', steps);
  402. installerController.totalSteps = steps.length - 1;
  403. installerController.set('currentStep',2);
  404. var expected = [
  405. {
  406. "step": 0,
  407. "value": false
  408. },
  409. {
  410. "step": 1,
  411. "value": true
  412. },
  413. {
  414. "step": 2,
  415. "value": true
  416. },
  417. {
  418. "step": 3,
  419. "value": true
  420. },
  421. {
  422. "step": 4,
  423. "value": true
  424. }
  425. ];
  426. var res = JSON.parse(JSON.stringify(installerController.get('isStepDisabled')));
  427. expect(res).to.eql(expected);
  428. });
  429. });
  430. describe('#loadMap', function() {
  431. it ('Should load cluster', function() {
  432. var loadCluster = false;
  433. var checker = {
  434. load: function() {
  435. loadCluster = true;
  436. }
  437. };
  438. installerController.loadMap['0'][0].callback.call(checker);
  439. expect(loadCluster).to.be.true;
  440. });
  441. it ('Should load stacks', function() {
  442. var loadStacks = false;
  443. var checker = {
  444. loadStacks: function() {
  445. loadStacks = true;
  446. }
  447. };
  448. installerController.loadMap['1'][0].callback.call(checker);
  449. expect(loadStacks).to.be.true;
  450. });
  451. it ('Should load stacks async', function() {
  452. var loadStacksVersions = false;
  453. var checker = {
  454. loadStacksVersions: function() {
  455. loadStacksVersions = true;
  456. }
  457. };
  458. installerController.loadMap['1'][1].callback.call(checker, true).then(function(data){
  459. expect(data).to.be.true;
  460. });
  461. expect(loadStacksVersions).to.be.false;
  462. });
  463. it ('Should load installOptions', function() {
  464. var loadStacks = false;
  465. var checker = {
  466. load: function() {
  467. loadStacks = true;
  468. }
  469. };
  470. installerController.loadMap['2'][0].callback.call(checker);
  471. expect(loadStacks).to.be.true;
  472. });
  473. it ('Should load loadConfirmedHosts', function() {
  474. var loadConfirmedHosts = false;
  475. var checker = {
  476. loadConfirmedHosts: function() {
  477. loadConfirmedHosts = true;
  478. }
  479. };
  480. installerController.loadMap['3'][0].callback.call(checker);
  481. expect(loadConfirmedHosts).to.be.true;
  482. });
  483. it ('Should load loadServices', function() {
  484. var loadServices = false;
  485. var checker = {
  486. loadServices: function() {
  487. loadServices = true;
  488. }
  489. };
  490. installerController.loadMap['4'][0].callback.call(checker);
  491. expect(loadServices).to.be.true;
  492. });
  493. it ('Should load loadServices', function() {
  494. var setSkipSlavesStep = false;
  495. var loadMasterComponentHosts = false;
  496. var loadConfirmedHosts = false;
  497. var loadRecommendations = false;
  498. var checker = {
  499. setSkipSlavesStep: function() {
  500. setSkipSlavesStep = true;
  501. },
  502. loadMasterComponentHosts: function() {
  503. loadMasterComponentHosts = true;
  504. },
  505. loadConfirmedHosts: function() {
  506. loadConfirmedHosts = true;
  507. },
  508. loadRecommendations: function() {
  509. loadRecommendations = true;
  510. }
  511. };
  512. installerController.loadMap['5'][0].callback.call(checker);
  513. expect(loadConfirmedHosts).to.be.true;
  514. expect(setSkipSlavesStep).to.be.true;
  515. expect(loadMasterComponentHosts).to.be.true;
  516. expect(loadRecommendations).to.be.true;
  517. });
  518. it ('Should load serviceConfigGroups', function() {
  519. var loadServiceConfigGroups = false;
  520. var loadServiceConfigProperties = false;
  521. var loadCurrentHostGroups = false;
  522. var loadRecommendationsConfigs = false;
  523. var loadConfigThemes = false;
  524. var checker = {
  525. loadServiceConfigGroups: function() {
  526. loadServiceConfigGroups = true;
  527. },
  528. loadServiceConfigProperties: function() {
  529. loadServiceConfigProperties = true;
  530. },
  531. loadCurrentHostGroups: function() {
  532. loadCurrentHostGroups = true;
  533. },
  534. loadRecommendationsConfigs: function() {
  535. loadRecommendationsConfigs = true;
  536. },
  537. loadConfigThemes: function() {
  538. loadConfigThemes = true;
  539. }
  540. };
  541. installerController.loadMap['7'][0].callback.call(checker);
  542. expect(loadServiceConfigGroups).to.be.true;
  543. expect(loadServiceConfigProperties).to.be.true;
  544. expect(loadCurrentHostGroups).to.be.true;
  545. expect(loadRecommendationsConfigs).to.be.true;
  546. expect(loadConfigThemes).to.be.true;
  547. });
  548. it ('Should load clients', function() {
  549. var loadSlaveComponentHosts = false;
  550. var loadClients = false;
  551. var loadRecommendations = false;
  552. var checker = {
  553. loadSlaveComponentHosts: function() {
  554. loadSlaveComponentHosts = true;
  555. },
  556. loadClients: function() {
  557. loadClients = true;
  558. },
  559. loadRecommendations: function() {
  560. loadRecommendations = true;
  561. }
  562. };
  563. installerController.loadMap['6'][0].callback.call(checker);
  564. expect(loadSlaveComponentHosts).to.be.true;
  565. expect(loadClients).to.be.true;
  566. expect(loadRecommendations).to.be.true;
  567. });
  568. });
  569. describe('#removeHosts', function() {
  570. var hostsDb = {
  571. 'h1': {},
  572. 'h2': {},
  573. 'h3': {},
  574. 'h4': {}
  575. };
  576. beforeEach(function () {
  577. sinon.stub(installerController, 'getDBProperty').returns(hostsDb);
  578. });
  579. afterEach(function () {
  580. installerController.getDBProperty.restore();
  581. });
  582. it ('Should remove hosts from the list', function() {
  583. var hosts = Em.A([
  584. {
  585. name: 'h1'
  586. },
  587. {
  588. name: 'h2'
  589. },
  590. {
  591. name: 'h3'
  592. }
  593. ]);
  594. installerController.removeHosts(hosts);
  595. expect(hostsDb).to.eql({
  596. 'h4': {}
  597. });
  598. });
  599. });
  600. describe('#allHosts', function() {
  601. it ('Should return hosts', function() {
  602. var hosts = {
  603. 'h1': {
  604. disk_info: Em.A([{
  605. available: 1,
  606. size: 10
  607. }]),
  608. hostComponents: Em.A([])
  609. }
  610. };
  611. var masterComponentHosts = Em.A([
  612. {
  613. hostName: 'h1',
  614. component: 'component',
  615. display_name: 'n1'
  616. }
  617. ]);
  618. var slaveComponentHosts = Em.A([
  619. {
  620. hosts: Em.A([
  621. {
  622. hostName: 'h1'
  623. }
  624. ])
  625. }
  626. ]);
  627. installerController.set('content.hosts', hosts);
  628. installerController.set('content.masterComponentHosts', masterComponentHosts);
  629. installerController.set('content.slaveComponentHosts', slaveComponentHosts);
  630. var res = JSON.parse(JSON.stringify(installerController.get('allHosts')));
  631. expect(res).to.eql([
  632. {
  633. "diskInfo": [
  634. {
  635. "available": 1,
  636. "size": 10
  637. }
  638. ],
  639. "diskTotal": 0.0000095367431640625,
  640. "diskFree": 9.5367431640625e-7,
  641. "hostComponents": [
  642. {
  643. "componentName": "component",
  644. "displayName": "n1"
  645. },
  646. {}
  647. ]
  648. }
  649. ]);
  650. });
  651. });
  652. describe('#loadServiceConfigProperties', function() {
  653. beforeEach(function () {
  654. sinon.stub(installerController, 'getDBProperty').returns({
  655. value: 2
  656. });
  657. });
  658. afterEach(function () {
  659. installerController.getDBProperty.restore();
  660. });
  661. it ('Should load service config property', function() {
  662. installerController.loadServiceConfigProperties();
  663. expect(installerController.get('content.serviceConfigProperties')).to.eql({
  664. "value": 2
  665. });
  666. });
  667. });
  668. describe('#saveServices', function() {
  669. it ('Should return correct names', function() {
  670. var stepController = Em.A([
  671. Em.Object.create({
  672. isInstalled: true,
  673. isSelected: true,
  674. serviceName: 'i1'
  675. }),
  676. Em.Object.create({
  677. isInstalled: false,
  678. isSelected: true,
  679. serviceName: 'i2'
  680. }),
  681. Em.Object.create({
  682. isInstalled: true,
  683. isSelected: false,
  684. serviceName: 'i3'
  685. })
  686. ]);
  687. installerController.saveServices(stepController);
  688. expect(installerController.get('content.selectedServiceNames')).to.eql(['i1','i2']);
  689. expect(installerController.get('content.installedServiceNames')).to.eql(['i1','i3']);
  690. });
  691. });
  692. describe('#saveClients', function() {
  693. it ('Should return correct clients names', function() {
  694. var stepController = Em.Object.create({
  695. content: Em.A([
  696. Em.Object.create({
  697. isInstalled: true,
  698. isSelected: true,
  699. serviceName: 'i1',
  700. serviceComponents: Em.A([
  701. Em.Object.create({
  702. isClient: true,
  703. componentName: 'name',
  704. displayName: 'dname'
  705. })
  706. ])
  707. }),
  708. Em.Object.create({
  709. isInstalled: false,
  710. isSelected: true,
  711. serviceName: 'i2',
  712. serviceComponents: Em.A([
  713. Em.Object.create({
  714. isClient: false
  715. })
  716. ])
  717. }),
  718. Em.Object.create({
  719. isInstalled: true,
  720. isSelected: false,
  721. serviceName: 'i3',
  722. serviceComponents: Em.A([
  723. Em.Object.create({
  724. isClient: false
  725. })
  726. ])
  727. })
  728. ])
  729. });
  730. installerController.saveClients(stepController);
  731. var res = JSON.parse(JSON.stringify(installerController.get('content.clients')));
  732. expect(res).to.eql([
  733. {
  734. "component_name": "name",
  735. "display_name": "dname",
  736. "isInstalled": false
  737. }
  738. ]);
  739. });
  740. });
  741. describe('#saveMasterComponentHosts', function() {
  742. beforeEach(function () {
  743. sinon.stub(installerController, 'getDBProperty').returns({
  744. 'h1': {
  745. id: 11
  746. },
  747. 'h3': {
  748. id: 13
  749. },
  750. 'h2': {
  751. id: 12
  752. }
  753. });
  754. });
  755. afterEach(function () {
  756. installerController.getDBProperty.restore();
  757. });
  758. it ('Should return hosts', function() {
  759. var stepController = Em.Object.create({
  760. selectedServicesMasters: Em.A([
  761. Em.Object.create({
  762. display_name: 'n1',
  763. component_name: 'c1',
  764. serviceId: 1,
  765. selectedHost: 'h1'
  766. })
  767. ])
  768. });
  769. installerController.saveMasterComponentHosts(stepController);
  770. expect(installerController.get('content.masterComponentHosts')).to.eql([
  771. {
  772. "display_name": "n1",
  773. "component": "c1",
  774. "serviceId": 1,
  775. "isInstalled": false,
  776. "host_id": 11
  777. }
  778. ]);
  779. });
  780. });
  781. describe('#loadConfirmedHosts', function() {
  782. beforeEach(function () {
  783. sinon.stub(installerController, 'getDBProperty').returns({
  784. 'h1': {
  785. id: 11
  786. },
  787. 'h3': {
  788. id: 13
  789. },
  790. 'h2': {
  791. id: 12
  792. }
  793. });
  794. });
  795. afterEach(function () {
  796. installerController.getDBProperty.restore();
  797. });
  798. it ('Should load hosts from db', function() {
  799. installerController.loadConfirmedHosts();
  800. expect(installerController.get('content.hosts')).to.eql({
  801. 'h1': {
  802. id: 11
  803. },
  804. 'h3': {
  805. id: 13
  806. },
  807. 'h2': {
  808. id: 12
  809. }
  810. });
  811. });
  812. });
  813. describe('#loadMasterComponentHosts', function() {
  814. beforeEach(function () {
  815. sinon.stub(installerController, 'getDBProperties', function(key) {
  816. return {
  817. masterComponentHosts: Em.A([
  818. {
  819. hostName: '',
  820. host_id: 11
  821. }
  822. ]),
  823. hosts: {
  824. 'h1': {
  825. id: 11
  826. },
  827. 'h3': {
  828. id: 13
  829. },
  830. 'h2': {
  831. id: 12
  832. }
  833. }
  834. }
  835. });
  836. });
  837. afterEach(function () {
  838. installerController.getDBProperties.restore();
  839. });
  840. it ('Should load hosts', function() {
  841. installerController.loadMasterComponentHosts();
  842. expect(installerController.get('content.masterComponentHosts')).to.eql([
  843. {
  844. "hostName": "h1",
  845. "host_id": 11
  846. }
  847. ]);
  848. });
  849. });
  850. describe('#loadSlaveComponentHosts', function() {
  851. beforeEach(function () {
  852. sinon.stub(installerController, 'getDBProperties', function() {
  853. return {
  854. hosts: {
  855. 'h1': {
  856. id: 11
  857. },
  858. 'h3': {
  859. id: 13
  860. },
  861. 'h2': {
  862. id: 12
  863. }
  864. },
  865. slaveComponentHosts: Em.A([
  866. {
  867. hosts: Em.A([
  868. {
  869. hostName: '',
  870. host_id: 11
  871. }
  872. ])
  873. }
  874. ])
  875. };
  876. });
  877. });
  878. afterEach(function () {
  879. installerController.getDBProperties.restore();
  880. });
  881. it ('Should load slave hosts', function() {
  882. installerController.loadSlaveComponentHosts();
  883. expect(installerController.get('content.slaveComponentHosts')).to.eql([
  884. {
  885. "hosts": [
  886. {
  887. "hostName": "h1",
  888. "host_id": 11
  889. }
  890. ]
  891. }
  892. ]);
  893. });
  894. });
  895. describe('#getServerVersionSuccessCallback', function () {
  896. var cases = [
  897. {
  898. osFamily: 'redhat5',
  899. expected: false
  900. },
  901. {
  902. osFamily: 'redhat6',
  903. expected: true
  904. },
  905. {
  906. osFamily: 'suse11',
  907. expected: false
  908. }
  909. ],
  910. title = 'App.isManagedMySQLForHiveEnabled should be {0} for {1}';
  911. cases.forEach(function (item) {
  912. it(title.format(item.expected, item.osFamily), function () {
  913. installerController.getServerVersionSuccessCallback({
  914. 'RootServiceComponents': {
  915. 'component_version': '',
  916. 'properties': {
  917. 'server.os_family': item.osFamily
  918. }
  919. }
  920. });
  921. expect(App.get('isManagedMySQLForHiveEnabled')).to.equal(item.expected);
  922. });
  923. });
  924. });
  925. });