test_mapreduce_jobtracker.py 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  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. from mock.mock import MagicMock, call, patch
  18. from stacks.utils.RMFTestCase import *
  19. class TestJobtracker(RMFTestCase):
  20. @patch("os.path.exists", new = MagicMock(return_value=True))
  21. def test_configure_default(self):
  22. self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
  23. classname = "Jobtracker",
  24. command = "configure",
  25. config_file="default.json"
  26. )
  27. self.assert_configure_default()
  28. self.assertNoMoreResources()
  29. @patch("os.path.exists", new = MagicMock(return_value=True))
  30. def test_start_default(self):
  31. self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
  32. classname = "Jobtracker",
  33. command = "start",
  34. config_file="default.json"
  35. )
  36. self.assert_configure_default()
  37. self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf start jobtracker',
  38. user = 'mapred',
  39. not_if = 'ls /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid` >/dev/null 2>&1'
  40. )
  41. self.assertResourceCalled('Execute', 'ls /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid` >/dev/null 2>&1',
  42. user = 'mapred',
  43. initial_wait = 5,
  44. not_if= 'ls /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid` >/dev/null 2>&1'
  45. )
  46. self.assertNoMoreResources()
  47. def test_stop_default(self):
  48. self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
  49. classname = "Jobtracker",
  50. command = "stop",
  51. config_file="default.json"
  52. )
  53. self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf stop jobtracker',
  54. user = 'mapred'
  55. )
  56. self.assertResourceCalled('Execute', 'rm -f /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid')
  57. self.assertNoMoreResources()
  58. def test_decommission_default(self):
  59. self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
  60. classname = "Jobtracker",
  61. command = "decommission",
  62. config_file="default.json"
  63. )
  64. self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
  65. owner = 'mapred',
  66. content = Template('exclude_hosts_list.j2'),
  67. group = 'hadoop',
  68. )
  69. self.assertResourceCalled('ExecuteHadoop', 'mradmin -refreshNodes',
  70. conf_dir = '/etc/hadoop/conf',
  71. kinit_override = True,
  72. user = 'mapred',
  73. )
  74. self.assertNoMoreResources()
  75. def test_decommission_default_no_refersh(self):
  76. self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
  77. classname = "Jobtracker",
  78. command = "decommission",
  79. config_file="default.hbasedecom.json"
  80. )
  81. self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
  82. owner = 'mapred',
  83. content = Template('exclude_hosts_list.j2'),
  84. group = 'hadoop',
  85. )
  86. self.assertNoMoreResources()
  87. @patch("os.path.exists", new = MagicMock(return_value=True))
  88. def test_configure_secured(self):
  89. self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
  90. classname = "Jobtracker",
  91. command = "configure",
  92. config_file="secured.json"
  93. )
  94. self.assert_configure_secured()
  95. self.assertNoMoreResources()
  96. @patch("os.path.exists", new = MagicMock(return_value=True))
  97. def test_start_secured(self):
  98. self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
  99. classname = "Jobtracker",
  100. command = "start",
  101. config_file="secured.json"
  102. )
  103. self.assert_configure_secured()
  104. self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf start jobtracker',
  105. user = 'mapred',
  106. not_if = 'ls /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid` >/dev/null 2>&1'
  107. )
  108. self.assertResourceCalled('Execute', 'ls /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid` >/dev/null 2>&1',
  109. user = 'mapred',
  110. initial_wait = 5,
  111. not_if= 'ls /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid >/dev/null 2>&1 && ps `cat /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid` >/dev/null 2>&1'
  112. )
  113. self.assertNoMoreResources()
  114. def test_stop_secured(self):
  115. self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
  116. classname = "Jobtracker",
  117. command = "stop",
  118. config_file="secured.json"
  119. )
  120. self.assertResourceCalled('Execute', 'export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec && /usr/lib/hadoop/bin/hadoop-daemon.sh --config /etc/hadoop/conf stop jobtracker',
  121. user = 'mapred'
  122. )
  123. self.assertResourceCalled('Execute', 'rm -f /var/run/hadoop/mapred/hadoop-mapred-jobtracker.pid')
  124. self.assertNoMoreResources()
  125. def test_decommission_secured(self):
  126. self.executeScript("1.3.2/services/MAPREDUCE/package/scripts/jobtracker.py",
  127. classname = "Jobtracker",
  128. command = "decommission",
  129. config_file="secured.json"
  130. )
  131. self.assertResourceCalled('Execute', '/usr/bin/kinit -kt /etc/security/keytabs/jt.service.keytab jt/c6402.ambari.apache.org@EXAMPLE.COM',
  132. user = 'mapred',
  133. )
  134. self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
  135. owner = 'mapred',
  136. content = Template('exclude_hosts_list.j2'),
  137. group = 'hadoop',
  138. )
  139. self.assertResourceCalled('ExecuteHadoop', 'mradmin -refreshNodes',
  140. conf_dir = '/etc/hadoop/conf',
  141. kinit_override = True,
  142. user = 'mapred',
  143. )
  144. self.assertNoMoreResources()
  145. def assert_configure_default(self):
  146. self.assertResourceCalled('HdfsDirectory', '/mapred',
  147. security_enabled = False,
  148. keytab = UnknownConfigurationMock(),
  149. conf_dir = '/etc/hadoop/conf',
  150. hdfs_user = 'hdfs',
  151. kinit_path_local = "/usr/bin/kinit",
  152. owner = 'mapred',
  153. action = ['create_delayed'],
  154. )
  155. self.assertResourceCalled('HdfsDirectory', '/mapred/system',
  156. security_enabled = False,
  157. keytab = UnknownConfigurationMock(),
  158. conf_dir = '/etc/hadoop/conf',
  159. hdfs_user = 'hdfs',
  160. kinit_path_local = "/usr/bin/kinit",
  161. owner = 'mapred',
  162. action = ['create_delayed'],
  163. )
  164. self.assertResourceCalled('HdfsDirectory', '/mapred/history',
  165. security_enabled = False,
  166. keytab = UnknownConfigurationMock(),
  167. conf_dir = '/etc/hadoop/conf',
  168. hdfs_user = 'hdfs',
  169. kinit_path_local = "/usr/bin/kinit",
  170. owner = 'mapred',
  171. action = ['create_delayed'],
  172. )
  173. self.assertResourceCalled('HdfsDirectory', '/mr-history/tmp',
  174. security_enabled = False,
  175. keytab = UnknownConfigurationMock(),
  176. conf_dir = '/etc/hadoop/conf',
  177. hdfs_user = 'hdfs',
  178. kinit_path_local = "/usr/bin/kinit",
  179. mode = 0777,
  180. owner = 'mapred',
  181. group = 'hadoop',
  182. action = ['create_delayed'],
  183. )
  184. self.assertResourceCalled('HdfsDirectory', '/mapred/history/done',
  185. security_enabled = False,
  186. keytab = UnknownConfigurationMock(),
  187. conf_dir = '/etc/hadoop/conf',
  188. hdfs_user = 'hdfs',
  189. kinit_path_local = "/usr/bin/kinit",
  190. mode = 0777,
  191. owner = 'mapred',
  192. group = 'hadoop',
  193. action = ['create_delayed'],
  194. )
  195. self.assertResourceCalled('HdfsDirectory', None,
  196. security_enabled = False,
  197. keytab = UnknownConfigurationMock(),
  198. conf_dir = '/etc/hadoop/conf',
  199. hdfs_user = 'hdfs',
  200. kinit_path_local = "/usr/bin/kinit",
  201. action = ['create'],
  202. )
  203. self.assertResourceCalled('Directory', '/var/run/hadoop/mapred',
  204. owner = 'mapred',
  205. group = 'hadoop',
  206. recursive = True,
  207. )
  208. self.assertResourceCalled('Directory', '/var/log/hadoop/mapred',
  209. owner = 'mapred',
  210. group = 'hadoop',
  211. recursive = True,
  212. )
  213. self.assertResourceCalled('Directory', '/var/log/hadoop/mapred/userlogs',
  214. mode = 01777,
  215. recursive = True,
  216. )
  217. self.assertResourceCalled('File', '/var/log/hadoop/mapred/hadoop-mapreduce.jobsummary.log',
  218. owner = 'mapred',
  219. group = 'hadoop',
  220. mode = 0664
  221. )
  222. self.assertResourceCalled('Directory', '/hadoop/mapred',
  223. owner = 'mapred',
  224. recursive = True,
  225. mode = 0755,
  226. ignore_failures=True,
  227. )
  228. self.assertResourceCalled('Directory', '/hadoop/mapred1',
  229. owner = 'mapred',
  230. recursive = True,
  231. mode = 0755,
  232. ignore_failures=True,
  233. )
  234. self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
  235. owner = 'mapred',
  236. group = 'hadoop',
  237. )
  238. self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.include',
  239. owner = 'mapred',
  240. group = 'hadoop',
  241. )
  242. self.assertResourceCalled('File', '/etc/hadoop/conf/taskcontroller.cfg',
  243. content = Template('taskcontroller.cfg.j2'),
  244. owner = 'hdfs',
  245. )
  246. self.assertResourceCalled('File', '/etc/hadoop/conf/mapred-queue-acls.xml',
  247. owner = 'mapred',
  248. group = 'hadoop',
  249. )
  250. self.assertResourceCalled('XmlConfig', 'mapred-site.xml',
  251. owner = 'mapred',
  252. group = 'hadoop',
  253. conf_dir = '/etc/hadoop/conf',
  254. configurations = self.getConfig()['configurations']['mapred-site'],
  255. configuration_attributes = self.getConfig()['configuration_attributes']['mapred-site']
  256. )
  257. self.assertResourceCalled('File', '/etc/hadoop/conf/fair-scheduler.xml',
  258. owner = 'mapred',
  259. group = 'hadoop',
  260. )
  261. self.assertResourceCalled('File', '/etc/hadoop/conf/ssl-client.xml.example',
  262. owner = 'mapred',
  263. group = 'hadoop',
  264. )
  265. self.assertResourceCalled('File', '/etc/hadoop/conf/ssl-server.xml.example',
  266. owner = 'mapred',
  267. group = 'hadoop',
  268. )
  269. def assert_configure_secured(self):
  270. self.assertResourceCalled('HdfsDirectory', '/mapred',
  271. security_enabled = True,
  272. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  273. conf_dir = '/etc/hadoop/conf',
  274. hdfs_user = 'hdfs',
  275. kinit_path_local = '/usr/bin/kinit',
  276. owner = 'mapred',
  277. action = ['create_delayed'],
  278. )
  279. self.assertResourceCalled('HdfsDirectory', '/mapred/system',
  280. security_enabled = True,
  281. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  282. conf_dir = '/etc/hadoop/conf',
  283. hdfs_user = 'hdfs',
  284. kinit_path_local = '/usr/bin/kinit',
  285. owner = 'mapred',
  286. action = ['create_delayed'],
  287. )
  288. self.assertResourceCalled('HdfsDirectory', '/mapred/history',
  289. security_enabled = True,
  290. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  291. conf_dir = '/etc/hadoop/conf',
  292. hdfs_user = 'hdfs',
  293. kinit_path_local = '/usr/bin/kinit',
  294. owner = 'mapred',
  295. action = ['create_delayed'],
  296. )
  297. self.assertResourceCalled('HdfsDirectory', '/mr-history/tmp',
  298. security_enabled = True,
  299. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  300. conf_dir = '/etc/hadoop/conf',
  301. hdfs_user = 'hdfs',
  302. kinit_path_local = '/usr/bin/kinit',
  303. mode = 0777,
  304. owner = 'mapred',
  305. group = 'hadoop',
  306. action = ['create_delayed'],
  307. )
  308. self.assertResourceCalled('HdfsDirectory', '/mapred/history/done',
  309. security_enabled = True,
  310. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  311. conf_dir = '/etc/hadoop/conf',
  312. hdfs_user = 'hdfs',
  313. kinit_path_local = '/usr/bin/kinit',
  314. mode = 0777,
  315. owner = 'mapred',
  316. group = 'hadoop',
  317. action = ['create_delayed'],
  318. )
  319. self.assertResourceCalled('HdfsDirectory', None,
  320. security_enabled = True,
  321. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  322. conf_dir = '/etc/hadoop/conf',
  323. hdfs_user = 'hdfs',
  324. kinit_path_local = '/usr/bin/kinit',
  325. action = ['create'],
  326. )
  327. self.assertResourceCalled('Directory', '/var/run/hadoop/mapred',
  328. owner = 'mapred',
  329. group = 'hadoop',
  330. recursive = True,
  331. )
  332. self.assertResourceCalled('Directory', '/var/log/hadoop/mapred',
  333. owner = 'mapred',
  334. group = 'hadoop',
  335. recursive = True,
  336. )
  337. self.assertResourceCalled('Directory', '/var/log/hadoop/mapred/userlogs',
  338. mode = 01777,
  339. recursive = True,
  340. )
  341. self.assertResourceCalled('File', '/var/log/hadoop/mapred/hadoop-mapreduce.jobsummary.log',
  342. owner = 'mapred',
  343. group = 'hadoop',
  344. mode = 0664
  345. )
  346. self.assertResourceCalled('Directory', '/hadoop/mapred',
  347. owner = 'mapred',
  348. recursive = True,
  349. mode = 0755,
  350. ignore_failures=True,
  351. )
  352. self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.exclude',
  353. owner = 'mapred',
  354. group = 'hadoop',
  355. )
  356. self.assertResourceCalled('File', '/etc/hadoop/conf/mapred.include',
  357. owner = 'mapred',
  358. group = 'hadoop',
  359. )
  360. self.assertResourceCalled('File', '/usr/lib/hadoop/bin/task-controller',
  361. owner = 'root',
  362. group = 'hadoop',
  363. mode = 06050,
  364. )
  365. self.assertResourceCalled('File', '/etc/hadoop/conf/taskcontroller.cfg',
  366. content = Template('taskcontroller.cfg.j2'),
  367. owner = 'root',
  368. group = 'hadoop',
  369. mode = 0644,
  370. )
  371. self.assertResourceCalled('File', '/etc/hadoop/conf/mapred-queue-acls.xml',
  372. owner = 'mapred',
  373. group = 'hadoop',
  374. )
  375. self.assertResourceCalled('XmlConfig', 'mapred-site.xml',
  376. owner = 'mapred',
  377. group = 'hadoop',
  378. conf_dir = '/etc/hadoop/conf',
  379. configurations = self.getConfig()['configurations']['mapred-site'],
  380. configuration_attributes = self.getConfig()['configuration_attributes']['mapred-site']
  381. )
  382. self.assertResourceCalled('File', '/etc/hadoop/conf/fair-scheduler.xml',
  383. owner = 'mapred',
  384. group = 'hadoop',
  385. )
  386. self.assertResourceCalled('File', '/etc/hadoop/conf/ssl-client.xml.example',
  387. owner = 'mapred',
  388. group = 'hadoop',
  389. )
  390. self.assertResourceCalled('File', '/etc/hadoop/conf/ssl-server.xml.example',
  391. owner = 'mapred',
  392. group = 'hadoop',
  393. )