test_yarn_client.py 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586
  1. #!/usr/bin/env python
  2. '''
  3. Licensed to the Apache Software Foundation (ASF) under one
  4. or more contributor license agreements. See the NOTICE file
  5. distributed with this work for additional information
  6. regarding copyright ownership. The ASF licenses this file
  7. to you under the Apache License, Version 2.0 (the
  8. "License"); you may not use this file except in compliance
  9. with the License. You may obtain a copy of the License at
  10. http://www.apache.org/licenses/LICENSE-2.0
  11. Unless required by applicable law or agreed to in writing, software
  12. distributed under the License is distributed on an "AS IS" BASIS,
  13. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. See the License for the specific language governing permissions and
  15. limitations under the License.
  16. '''
  17. import json
  18. import os
  19. from mock.mock import MagicMock, call, patch
  20. from stacks.utils.RMFTestCase import *
  21. from resource_management.libraries.functions import version
  22. from resource_management.libraries.script.script import Script
  23. from resource_management.libraries import functions
  24. origin_exists = os.path.exists
  25. @patch("platform.linux_distribution", new = MagicMock(return_value="Linux"))
  26. @patch.object(os.path, "exists", new=MagicMock(
  27. side_effect=lambda *args: origin_exists(args[0])
  28. if args[0][-2:] == "j2" else True))
  29. class TestYarnClient(RMFTestCase):
  30. COMMON_SERVICES_PACKAGE_DIR = "YARN/2.1.0.2.0/package"
  31. STACK_VERSION = "2.0.6"
  32. def test_configure_default(self):
  33. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/yarn_client.py",
  34. classname = "YarnClient",
  35. command = "configure",
  36. config_file="default.json",
  37. hdp_stack_version = self.STACK_VERSION,
  38. target = RMFTestCase.TARGET_COMMON_SERVICES
  39. )
  40. self.assertResourceCalled('Directory', '/var/run/hadoop-yarn',
  41. owner = 'yarn',
  42. group = 'hadoop',
  43. recursive = True,
  44. cd_access = 'a',
  45. )
  46. self.assertResourceCalled('Directory', '/var/run/hadoop-yarn/yarn',
  47. owner = 'yarn',
  48. group = 'hadoop',
  49. recursive = True,
  50. cd_access = 'a',
  51. )
  52. self.assertResourceCalled('Directory', '/var/log/hadoop-yarn/yarn',
  53. owner = 'yarn',
  54. group = 'hadoop',
  55. recursive = True,
  56. cd_access = 'a',
  57. )
  58. self.assertResourceCalled('Directory', '/var/run/hadoop-mapreduce',
  59. owner = 'mapred',
  60. group = 'hadoop',
  61. recursive = True,
  62. cd_access = 'a',
  63. )
  64. self.assertResourceCalled('Directory', '/var/run/hadoop-mapreduce/mapred',
  65. owner = 'mapred',
  66. group = 'hadoop',
  67. recursive = True,
  68. cd_access = 'a',
  69. )
  70. self.assertResourceCalled('Directory', '/var/log/hadoop-mapreduce',
  71. owner = 'mapred',
  72. group = 'hadoop',
  73. recursive = True,
  74. cd_access = 'a',
  75. )
  76. self.assertResourceCalled('Directory', '/var/log/hadoop-mapreduce/mapred',
  77. owner = 'mapred',
  78. group = 'hadoop',
  79. recursive = True,
  80. cd_access = 'a',
  81. )
  82. self.assertResourceCalled('Directory', '/var/log/hadoop-yarn',
  83. owner = 'yarn',
  84. recursive = True,
  85. ignore_failures = True,
  86. cd_access = 'a',
  87. )
  88. self.assertResourceCalled('XmlConfig', 'core-site.xml',
  89. owner = 'hdfs',
  90. group = 'hadoop',
  91. mode = 0644,
  92. conf_dir = '/etc/hadoop/conf',
  93. configurations = self.getConfig()['configurations']['core-site'],
  94. configuration_attributes = self.getConfig()['configuration_attributes']['core-site']
  95. )
  96. self.assertResourceCalled('XmlConfig', 'hdfs-site.xml',
  97. owner = 'hdfs',
  98. group = 'hadoop',
  99. mode = 0644,
  100. conf_dir = '/etc/hadoop/conf',
  101. configurations = self.getConfig()['configurations']['hdfs-site'],
  102. configuration_attributes = self.getConfig()['configuration_attributes']['hdfs-site']
  103. )
  104. self.assertResourceCalled('XmlConfig', 'mapred-site.xml',
  105. owner = 'yarn',
  106. group = 'hadoop',
  107. mode = 0644,
  108. conf_dir = '/etc/hadoop/conf',
  109. configurations = self.getConfig()['configurations']['mapred-site'],
  110. configuration_attributes = self.getConfig()['configuration_attributes']['mapred-site']
  111. )
  112. self.assertResourceCalled('XmlConfig', 'yarn-site.xml',
  113. owner = 'yarn',
  114. group = 'hadoop',
  115. mode = 0644,
  116. conf_dir = '/etc/hadoop/conf',
  117. configurations = self.getConfig()['configurations']['yarn-site'],
  118. configuration_attributes = self.getConfig()['configuration_attributes']['yarn-site']
  119. )
  120. self.assertResourceCalled('XmlConfig', 'capacity-scheduler.xml',
  121. owner = 'yarn',
  122. group = 'hadoop',
  123. mode = 0644,
  124. conf_dir = '/etc/hadoop/conf',
  125. configurations = self.getConfig()['configurations']['capacity-scheduler'],
  126. configuration_attributes = self.getConfig()['configuration_attributes']['capacity-scheduler']
  127. )
  128. self.assertResourceCalled('File', '/etc/hadoop/conf/yarn.exclude',
  129. owner = 'yarn',
  130. group = 'hadoop',
  131. )
  132. self.assertResourceCalled('File', '/etc/security/limits.d/yarn.conf',
  133. content = Template('yarn.conf.j2'),
  134. mode = 0644,
  135. )
  136. self.assertResourceCalled('File', '/etc/security/limits.d/mapreduce.conf',
  137. content = Template('mapreduce.conf.j2'),
  138. mode = 0644,
  139. )
  140. self.assertResourceCalled('File', '/etc/hadoop/conf/yarn-env.sh',
  141. content = InlineTemplate(self.getConfig()['configurations']['yarn-env']['content']),
  142. owner = 'yarn',
  143. group = 'hadoop',
  144. mode = 0755,
  145. )
  146. self.assertResourceCalled('File', '/usr/lib/hadoop-yarn/bin/container-executor',
  147. group = 'hadoop',
  148. mode = 02050,
  149. )
  150. self.assertResourceCalled('File', '/etc/hadoop/conf/container-executor.cfg',
  151. content = Template('container-executor.cfg.j2'),
  152. group = 'hadoop',
  153. mode = 0644,
  154. )
  155. self.assertResourceCalled('Directory', '/cgroups_test/cpu',
  156. group = 'hadoop',
  157. recursive = True,
  158. mode = 0755,
  159. cd_access="a"
  160. )
  161. self.assertResourceCalled('File', '/etc/hadoop/conf/mapred-env.sh',
  162. content = InlineTemplate(self.getConfig()['configurations']['mapred-env']['content']),
  163. owner = 'hdfs',
  164. )
  165. self.assertResourceCalled('File', '/etc/hadoop/conf/taskcontroller.cfg',
  166. content = Template('taskcontroller.cfg.j2'),
  167. owner = 'hdfs',
  168. )
  169. self.assertResourceCalled('XmlConfig', 'mapred-site.xml',
  170. owner = 'mapred',
  171. group = 'hadoop',
  172. conf_dir = '/etc/hadoop/conf',
  173. configurations = self.getConfig()['configurations']['mapred-site'],
  174. configuration_attributes = self.getConfig()['configuration_attributes']['mapred-site']
  175. )
  176. self.assertResourceCalled('XmlConfig', 'capacity-scheduler.xml',
  177. owner = 'hdfs',
  178. group = 'hadoop',
  179. conf_dir = '/etc/hadoop/conf',
  180. configurations = self.getConfig()['configurations']['capacity-scheduler'],
  181. configuration_attributes = self.getConfig()['configuration_attributes']['capacity-scheduler']
  182. )
  183. self.assertResourceCalled('File', '/etc/hadoop/conf/fair-scheduler.xml',
  184. owner = 'mapred',
  185. group = 'hadoop',
  186. )
  187. self.assertResourceCalled('File', '/etc/hadoop/conf/ssl-client.xml.example',
  188. owner = 'mapred',
  189. group = 'hadoop',
  190. )
  191. self.assertResourceCalled('File', '/etc/hadoop/conf/ssl-server.xml.example',
  192. owner = 'mapred',
  193. group = 'hadoop',
  194. )
  195. self.assertNoMoreResources()
  196. def test_configure_secured(self):
  197. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/yarn_client.py",
  198. classname = "YarnClient",
  199. command = "configure",
  200. config_file="secured.json",
  201. hdp_stack_version = self.STACK_VERSION,
  202. target = RMFTestCase.TARGET_COMMON_SERVICES
  203. )
  204. self.assertResourceCalled('Directory', '/var/run/hadoop-yarn',
  205. owner = 'yarn',
  206. group = 'hadoop',
  207. recursive = True,
  208. cd_access = 'a',
  209. )
  210. self.assertResourceCalled('Directory', '/var/run/hadoop-yarn/yarn',
  211. owner = 'yarn',
  212. group = 'hadoop',
  213. recursive = True,
  214. cd_access = 'a',
  215. )
  216. self.assertResourceCalled('Directory', '/var/log/hadoop-yarn/yarn',
  217. owner = 'yarn',
  218. group = 'hadoop',
  219. recursive = True,
  220. cd_access = 'a',
  221. )
  222. self.assertResourceCalled('Directory', '/var/run/hadoop-mapreduce',
  223. owner = 'mapred',
  224. group = 'hadoop',
  225. recursive = True,
  226. cd_access = 'a',
  227. )
  228. self.assertResourceCalled('Directory', '/var/run/hadoop-mapreduce/mapred',
  229. owner = 'mapred',
  230. group = 'hadoop',
  231. recursive = True,
  232. cd_access = 'a',
  233. )
  234. self.assertResourceCalled('Directory', '/var/log/hadoop-mapreduce',
  235. owner = 'mapred',
  236. group = 'hadoop',
  237. recursive = True,
  238. cd_access = 'a',
  239. )
  240. self.assertResourceCalled('Directory', '/var/log/hadoop-mapreduce/mapred',
  241. owner = 'mapred',
  242. group = 'hadoop',
  243. recursive = True,
  244. cd_access = 'a',
  245. )
  246. self.assertResourceCalled('Directory', '/var/log/hadoop-yarn',
  247. owner = 'yarn',
  248. recursive = True,
  249. ignore_failures = True,
  250. cd_access = 'a',
  251. )
  252. self.assertResourceCalled('XmlConfig', 'core-site.xml',
  253. owner = 'hdfs',
  254. group = 'hadoop',
  255. mode = 0644,
  256. conf_dir = '/etc/hadoop/conf',
  257. configurations = self.getConfig()['configurations']['core-site'],
  258. configuration_attributes = self.getConfig()['configuration_attributes']['core-site']
  259. )
  260. self.assertResourceCalled('XmlConfig', 'hdfs-site.xml',
  261. owner = 'hdfs',
  262. group = 'hadoop',
  263. mode = 0644,
  264. conf_dir = '/etc/hadoop/conf',
  265. configurations = self.getConfig()['configurations']['hdfs-site'],
  266. configuration_attributes = self.getConfig()['configuration_attributes']['hdfs-site']
  267. )
  268. self.assertResourceCalled('XmlConfig', 'mapred-site.xml',
  269. owner = 'yarn',
  270. group = 'hadoop',
  271. mode = 0644,
  272. conf_dir = '/etc/hadoop/conf',
  273. configurations = self.getConfig()['configurations']['mapred-site'],
  274. configuration_attributes = self.getConfig()['configuration_attributes']['mapred-site']
  275. )
  276. self.assertResourceCalled('XmlConfig', 'yarn-site.xml',
  277. owner = 'yarn',
  278. group = 'hadoop',
  279. mode = 0644,
  280. conf_dir = '/etc/hadoop/conf',
  281. configurations = self.getConfig()['configurations']['yarn-site'],
  282. configuration_attributes = self.getConfig()['configuration_attributes']['yarn-site']
  283. )
  284. self.assertResourceCalled('XmlConfig', 'capacity-scheduler.xml',
  285. owner = 'yarn',
  286. group = 'hadoop',
  287. mode = 0644,
  288. conf_dir = '/etc/hadoop/conf',
  289. configurations = self.getConfig()['configurations']['capacity-scheduler'],
  290. configuration_attributes = self.getConfig()['configuration_attributes']['capacity-scheduler']
  291. )
  292. self.assertResourceCalled('File', '/etc/hadoop/conf/yarn.exclude',
  293. owner = 'yarn',
  294. group = 'hadoop',
  295. )
  296. self.assertResourceCalled('File', '/etc/security/limits.d/yarn.conf',
  297. content = Template('yarn.conf.j2'),
  298. mode = 0644,
  299. )
  300. self.assertResourceCalled('File', '/etc/security/limits.d/mapreduce.conf',
  301. content = Template('mapreduce.conf.j2'),
  302. mode = 0644,
  303. )
  304. self.assertResourceCalled('File', '/etc/hadoop/conf/yarn-env.sh',
  305. content = InlineTemplate(self.getConfig()['configurations']['yarn-env']['content']),
  306. owner = 'yarn',
  307. group = 'hadoop',
  308. mode = 0755,
  309. )
  310. self.assertResourceCalled('File', '/usr/lib/hadoop-yarn/bin/container-executor',
  311. group = 'hadoop',
  312. mode = 06050,
  313. )
  314. self.assertResourceCalled('File', '/etc/hadoop/conf/container-executor.cfg',
  315. content = Template('container-executor.cfg.j2'),
  316. group = 'hadoop',
  317. mode = 0644,
  318. )
  319. self.assertResourceCalled('Directory', '/cgroups_test/cpu',
  320. group = 'hadoop',
  321. recursive = True,
  322. mode = 0755,
  323. cd_access="a"
  324. )
  325. self.assertResourceCalled('File', '/etc/hadoop/conf/mapred-env.sh',
  326. content = InlineTemplate(self.getConfig()['configurations']['mapred-env']['content']),
  327. owner = 'root',
  328. )
  329. self.assertResourceCalled('File', '/usr/lib/hadoop/sbin/task-controller',
  330. owner = 'root',
  331. group = 'hadoop',
  332. mode = 06050,
  333. )
  334. self.assertResourceCalled('File', '/etc/hadoop/conf/taskcontroller.cfg',
  335. content = Template('taskcontroller.cfg.j2'),
  336. owner = 'root',
  337. group = 'hadoop',
  338. mode = 0644,
  339. )
  340. self.assertResourceCalled('XmlConfig', 'mapred-site.xml',
  341. owner = 'mapred',
  342. group = 'hadoop',
  343. conf_dir = '/etc/hadoop/conf',
  344. configurations = self.getConfig()['configurations']['mapred-site'],
  345. configuration_attributes = self.getConfig()['configuration_attributes']['mapred-site']
  346. )
  347. self.assertResourceCalled('XmlConfig', 'capacity-scheduler.xml',
  348. owner = 'hdfs',
  349. group = 'hadoop',
  350. conf_dir = '/etc/hadoop/conf',
  351. configurations = self.getConfig()['configurations']['capacity-scheduler'],
  352. configuration_attributes = self.getConfig()['configuration_attributes']['capacity-scheduler']
  353. )
  354. self.assertResourceCalled('File', '/etc/hadoop/conf/fair-scheduler.xml',
  355. owner = 'mapred',
  356. group = 'hadoop',
  357. )
  358. self.assertResourceCalled('File', '/etc/hadoop/conf/ssl-client.xml.example',
  359. owner = 'mapred',
  360. group = 'hadoop',
  361. )
  362. self.assertResourceCalled('File', '/etc/hadoop/conf/ssl-server.xml.example',
  363. owner = 'mapred',
  364. group = 'hadoop',
  365. )
  366. self.assertNoMoreResources()
  367. def test_restart_client(self):
  368. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/yarn_client.py",
  369. classname = "YarnClient",
  370. command = "restart",
  371. config_file="default.json",
  372. config_overrides = { 'roleParams' : { "component_category": "CLIENT" } },
  373. hdp_stack_version = self.STACK_VERSION,
  374. target = RMFTestCase.TARGET_COMMON_SERVICES
  375. )
  376. self.assertResourceCalled('Directory', '/var/run/hadoop-yarn',
  377. owner = 'yarn',
  378. group = 'hadoop',
  379. recursive = True,
  380. cd_access = 'a',
  381. )
  382. self.assertResourceCalled('Directory', '/var/run/hadoop-yarn/yarn',
  383. owner = 'yarn',
  384. group = 'hadoop',
  385. recursive = True,
  386. cd_access = 'a',
  387. )
  388. self.assertResourceCalled('Directory', '/var/log/hadoop-yarn/yarn',
  389. owner = 'yarn',
  390. group = 'hadoop',
  391. recursive = True,
  392. cd_access = 'a',
  393. )
  394. self.assertResourceCalled('Directory', '/var/run/hadoop-mapreduce',
  395. owner = 'mapred',
  396. group = 'hadoop',
  397. recursive = True,
  398. cd_access = 'a',
  399. )
  400. self.assertResourceCalled('Directory', '/var/run/hadoop-mapreduce/mapred',
  401. owner = 'mapred',
  402. group = 'hadoop',
  403. recursive = True,
  404. cd_access = 'a',
  405. )
  406. self.assertResourceCalled('Directory', '/var/log/hadoop-mapreduce',
  407. owner = 'mapred',
  408. group = 'hadoop',
  409. recursive = True,
  410. cd_access = 'a',
  411. )
  412. self.assertResourceCalled('Directory', '/var/log/hadoop-mapreduce/mapred',
  413. owner = 'mapred',
  414. group = 'hadoop',
  415. recursive = True,
  416. cd_access = 'a',
  417. )
  418. self.assertResourceCalled('Directory', '/var/log/hadoop-yarn',
  419. owner = 'yarn',
  420. recursive = True,
  421. ignore_failures = True,
  422. cd_access = 'a',
  423. )
  424. self.assertResourceCalled('XmlConfig', 'core-site.xml',
  425. owner = 'hdfs',
  426. group = 'hadoop',
  427. mode = 0644,
  428. conf_dir = '/etc/hadoop/conf',
  429. configurations = self.getConfig()['configurations']['core-site'],
  430. configuration_attributes = self.getConfig()['configuration_attributes']['core-site']
  431. )
  432. self.assertResourceCalled('XmlConfig', 'hdfs-site.xml',
  433. owner = 'hdfs',
  434. group = 'hadoop',
  435. mode = 0644,
  436. conf_dir = '/etc/hadoop/conf',
  437. configurations = self.getConfig()['configurations']['hdfs-site'],
  438. configuration_attributes = self.getConfig()['configuration_attributes']['hdfs-site']
  439. )
  440. self.assertResourceCalled('XmlConfig', 'mapred-site.xml',
  441. owner = 'yarn',
  442. group = 'hadoop',
  443. mode = 0644,
  444. conf_dir = '/etc/hadoop/conf',
  445. configurations = self.getConfig()['configurations']['mapred-site'],
  446. configuration_attributes = self.getConfig()['configuration_attributes']['mapred-site']
  447. )
  448. self.assertResourceCalled('XmlConfig', 'yarn-site.xml',
  449. owner = 'yarn',
  450. group = 'hadoop',
  451. mode = 0644,
  452. conf_dir = '/etc/hadoop/conf',
  453. configurations = self.getConfig()['configurations']['yarn-site'],
  454. configuration_attributes = self.getConfig()['configuration_attributes']['yarn-site']
  455. )
  456. self.assertResourceCalled('XmlConfig', 'capacity-scheduler.xml',
  457. owner = 'yarn',
  458. group = 'hadoop',
  459. mode = 0644,
  460. conf_dir = '/etc/hadoop/conf',
  461. configurations = self.getConfig()['configurations']['capacity-scheduler'],
  462. configuration_attributes = self.getConfig()['configuration_attributes']['capacity-scheduler']
  463. )
  464. self.assertResourceCalled('File', '/etc/hadoop/conf/yarn.exclude',
  465. owner = 'yarn',
  466. group = 'hadoop',
  467. )
  468. self.assertResourceCalled('File', '/etc/security/limits.d/yarn.conf',
  469. content = Template('yarn.conf.j2'),
  470. mode = 0644,
  471. )
  472. self.assertResourceCalled('File', '/etc/security/limits.d/mapreduce.conf',
  473. content = Template('mapreduce.conf.j2'),
  474. mode = 0644,
  475. )
  476. self.assertResourceCalled('File', '/etc/hadoop/conf/yarn-env.sh',
  477. content = InlineTemplate(self.getConfig()['configurations']['yarn-env']['content']),
  478. owner = 'yarn',
  479. group = 'hadoop',
  480. mode = 0755,
  481. )
  482. self.assertResourceCalled('File', '/usr/lib/hadoop-yarn/bin/container-executor',
  483. group = 'hadoop',
  484. mode = 02050,
  485. )
  486. self.assertResourceCalled('File', '/etc/hadoop/conf/container-executor.cfg',
  487. content = Template('container-executor.cfg.j2'),
  488. group = 'hadoop',
  489. mode = 0644,
  490. )
  491. self.assertResourceCalled('Directory', '/cgroups_test/cpu',
  492. group = 'hadoop',
  493. recursive = True,
  494. mode = 0755,
  495. cd_access="a"
  496. )
  497. self.assertResourceCalled('File', '/etc/hadoop/conf/mapred-env.sh',
  498. content = InlineTemplate(self.getConfig()['configurations']['mapred-env']['content']),
  499. owner = 'hdfs',
  500. )
  501. self.assertResourceCalled('File', '/etc/hadoop/conf/taskcontroller.cfg',
  502. content = Template('taskcontroller.cfg.j2'),
  503. owner = 'hdfs',
  504. )
  505. self.assertResourceCalled('XmlConfig', 'mapred-site.xml',
  506. owner = 'mapred',
  507. group = 'hadoop',
  508. conf_dir = '/etc/hadoop/conf',
  509. configurations = self.getConfig()['configurations']['mapred-site'],
  510. configuration_attributes = self.getConfig()['configuration_attributes']['mapred-site']
  511. )
  512. self.assertResourceCalled('XmlConfig', 'capacity-scheduler.xml',
  513. owner = 'hdfs',
  514. group = 'hadoop',
  515. conf_dir = '/etc/hadoop/conf',
  516. configurations = self.getConfig()['configurations']['capacity-scheduler'],
  517. configuration_attributes = self.getConfig()['configuration_attributes']['capacity-scheduler']
  518. )
  519. self.assertResourceCalled('File', '/etc/hadoop/conf/fair-scheduler.xml',
  520. owner = 'mapred',
  521. group = 'hadoop',
  522. )
  523. self.assertResourceCalled('File', '/etc/hadoop/conf/ssl-client.xml.example',
  524. owner = 'mapred',
  525. group = 'hadoop',
  526. )
  527. self.assertResourceCalled('File', '/etc/hadoop/conf/ssl-server.xml.example',
  528. owner = 'mapred',
  529. group = 'hadoop',
  530. )
  531. self.assertNoMoreResources()
  532. @patch.object(functions, "get_hdp_version", new=MagicMock(return_value="2.2.0.0-2041"))
  533. def test_upgrade(self):
  534. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/yarn_client.py",
  535. classname = "YarnClient",
  536. command = "restart",
  537. config_file="client-upgrade.json",
  538. hdp_stack_version = self.STACK_VERSION,
  539. target = RMFTestCase.TARGET_COMMON_SERVICES
  540. )
  541. self.assertResourceCalled("Execute", ('hdp-select', 'set', 'hadoop-client', '2.2.1.0-2067'), sudo=True)
  542. # for now, it's enough that hdp-select is confirmed
  543. @patch.object(functions, "get_hdp_version", new = MagicMock(return_value='2.3.0.0-1234'))
  544. def test_pre_rolling_restart_23(self):
  545. config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/default.json"
  546. with open(config_file, "r") as f:
  547. json_content = json.load(f)
  548. version = '2.3.0.0-1234'
  549. json_content['commandParams']['version'] = version
  550. mocks_dict = {}
  551. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/yarn_client.py",
  552. classname = "YarnClient",
  553. command = "pre_rolling_restart",
  554. config_dict = json_content,
  555. hdp_stack_version = self.STACK_VERSION,
  556. target = RMFTestCase.TARGET_COMMON_SERVICES,
  557. call_mocks = [(0, None), (0, None)],
  558. mocks_dict = mocks_dict)
  559. self.assertResourceCalled('Execute', ('hdp-select', 'set', 'hadoop-client', version), sudo=True)
  560. self.assertNoMoreResources()
  561. self.assertEquals(1, mocks_dict['call'].call_count)
  562. self.assertEquals(1, mocks_dict['checked_call'].call_count)
  563. self.assertEquals(
  564. ('conf-select', 'set-conf-dir', '--package', 'hadoop', '--stack-version', '2.3.0.0-1234', '--conf-version', '0'),
  565. mocks_dict['checked_call'].call_args_list[0][0][0])
  566. self.assertEquals(
  567. ('conf-select', 'create-conf-dir', '--package', 'hadoop', '--stack-version', '2.3.0.0-1234', '--conf-version', '0'),
  568. mocks_dict['call'].call_args_list[0][0][0])