test_hbase_regionserver.py 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  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, patch
  18. from stacks.utils.RMFTestCase import *
  19. @patch("os.path.exists", new = MagicMock(return_value=True))
  20. class TestHbaseRegionServer(RMFTestCase):
  21. def test_configure_default(self):
  22. self.executeScript("2.0.6/services/HBASE/package/scripts/hbase_regionserver.py",
  23. classname = "HbaseRegionServer",
  24. command = "configure",
  25. config_file="default.json"
  26. )
  27. self.assert_configure_default()
  28. self.assertNoMoreResources()
  29. def test_start_default(self):
  30. self.executeScript("2.0.6/services/HBASE/package/scripts/hbase_regionserver.py",
  31. classname = "HbaseRegionServer",
  32. command = "start",
  33. config_file="default.json"
  34. )
  35. self.assert_configure_default()
  36. self.assertResourceCalled('Execute', '/usr/lib/hbase/bin/hbase-daemon.sh --config /etc/hbase/conf start regionserver',
  37. not_if = 'ls /var/run/hbase/hbase-hbase-regionserver.pid >/dev/null 2>&1 && ps -p `cat /var/run/hbase/hbase-hbase-regionserver.pid` >/dev/null 2>&1',
  38. user = 'hbase'
  39. )
  40. self.assertNoMoreResources()
  41. def test_stop_default(self):
  42. self.executeScript("2.0.6/services/HBASE/package/scripts/hbase_regionserver.py",
  43. classname = "HbaseRegionServer",
  44. command = "stop",
  45. config_file="default.json"
  46. )
  47. self.assertResourceCalled('Execute', '/usr/lib/hbase/bin/hbase-daemon.sh --config /etc/hbase/conf stop regionserver',
  48. on_timeout = '! ( ls /var/run/hbase/hbase-hbase-regionserver.pid >/dev/null 2>&1 && ps -p `cat /var/run/hbase/hbase-hbase-regionserver.pid` >/dev/null 2>&1 ) || sudo -H -E kill -9 `cat /var/run/hbase/hbase-hbase-regionserver.pid`',
  49. timeout = 30,
  50. user = 'hbase',
  51. )
  52. self.assertResourceCalled('Execute', 'rm -f /var/run/hbase/hbase-hbase-regionserver.pid',
  53. )
  54. self.assertNoMoreResources()
  55. def test_configure_secured(self):
  56. self.executeScript("2.0.6/services/HBASE/package/scripts/hbase_regionserver.py",
  57. classname = "HbaseRegionServer",
  58. command = "configure",
  59. config_file="secured.json"
  60. )
  61. self.assert_configure_secured()
  62. self.assertNoMoreResources()
  63. def test_start_secured(self):
  64. self.executeScript("2.0.6/services/HBASE/package/scripts/hbase_regionserver.py",
  65. classname = "HbaseRegionServer",
  66. command = "start",
  67. config_file="secured.json"
  68. )
  69. self.assert_configure_secured()
  70. self.assertResourceCalled('Execute', '/usr/lib/hbase/bin/hbase-daemon.sh --config /etc/hbase/conf start regionserver',
  71. not_if = 'ls /var/run/hbase/hbase-hbase-regionserver.pid >/dev/null 2>&1 && ps -p `cat /var/run/hbase/hbase-hbase-regionserver.pid` >/dev/null 2>&1',
  72. user = 'hbase',
  73. )
  74. self.assertNoMoreResources()
  75. def test_stop_secured(self):
  76. self.executeScript("2.0.6/services/HBASE/package/scripts/hbase_regionserver.py",
  77. classname = "HbaseRegionServer",
  78. command = "stop",
  79. config_file="secured.json"
  80. )
  81. self.assertResourceCalled('Execute', '/usr/lib/hbase/bin/hbase-daemon.sh --config /etc/hbase/conf stop regionserver',
  82. on_timeout = '! ( ls /var/run/hbase/hbase-hbase-regionserver.pid >/dev/null 2>&1 && ps -p `cat /var/run/hbase/hbase-hbase-regionserver.pid` >/dev/null 2>&1 ) || sudo -H -E kill -9 `cat /var/run/hbase/hbase-hbase-regionserver.pid`',
  83. timeout = 30,
  84. user = 'hbase',
  85. )
  86. self.assertResourceCalled('Execute', 'rm -f /var/run/hbase/hbase-hbase-regionserver.pid',
  87. )
  88. self.assertNoMoreResources()
  89. def assert_configure_default(self):
  90. self.assertResourceCalled('Directory', '/etc/hbase',
  91. mode = 0755
  92. )
  93. self.assertResourceCalled('Directory', '/etc/hbase/conf',
  94. owner = 'hbase',
  95. group = 'hadoop',
  96. recursive = True,
  97. )
  98. self.assertResourceCalled('Directory', '/hadoop/hbase',
  99. owner = 'hbase',
  100. mode=0775,
  101. recursive = True,
  102. recursive_permission = True
  103. )
  104. self.assertResourceCalled('Directory', '/hadoop/hbase/local',
  105. owner = 'hbase',
  106. group = 'hadoop',
  107. mode=0775,
  108. recursive = True,
  109. )
  110. self.assertResourceCalled('Directory', '/hadoop/hbase/local/jars',
  111. owner = 'hbase',
  112. group = 'hadoop',
  113. mode=0775,
  114. recursive = True,
  115. )
  116. self.assertResourceCalled('XmlConfig', 'hbase-site.xml',
  117. owner = 'hbase',
  118. group = 'hadoop',
  119. conf_dir = '/etc/hbase/conf',
  120. configurations = self.getConfig()['configurations']['hbase-site'],
  121. configuration_attributes = self.getConfig()['configuration_attributes']['hbase-site']
  122. )
  123. self.assertResourceCalled('XmlConfig', 'hdfs-site.xml',
  124. owner = 'hbase',
  125. group = 'hadoop',
  126. conf_dir = '/etc/hbase/conf',
  127. configurations = self.getConfig()['configurations']['hdfs-site'],
  128. configuration_attributes = self.getConfig()['configuration_attributes']['hdfs-site']
  129. )
  130. self.assertResourceCalled('XmlConfig', 'hdfs-site.xml',
  131. owner = 'hdfs',
  132. group = 'hadoop',
  133. conf_dir = '/etc/hadoop/conf',
  134. configurations = self.getConfig()['configurations']['hdfs-site'],
  135. configuration_attributes = self.getConfig()['configuration_attributes']['hdfs-site']
  136. )
  137. self.assertResourceCalled('File', '/etc/hbase/conf/hbase-policy.xml',
  138. owner = 'hbase',
  139. group = 'hadoop',
  140. )
  141. self.assertResourceCalled('File', '/etc/hbase/conf/hbase-env.sh',
  142. owner = 'hbase',
  143. content = InlineTemplate(self.getConfig()['configurations']['hbase-env']['content']),
  144. )
  145. self.assertResourceCalled('TemplateConfig', '/etc/hbase/conf/hadoop-metrics2-hbase.properties',
  146. owner = 'hbase',
  147. template_tag = 'GANGLIA-RS',
  148. )
  149. self.assertResourceCalled('TemplateConfig', '/etc/hbase/conf/regionservers',
  150. owner = 'hbase',
  151. template_tag = None,
  152. )
  153. self.assertResourceCalled('Directory', '/var/run/hbase',
  154. owner = 'hbase',
  155. recursive = True,
  156. )
  157. self.assertResourceCalled('Directory', '/var/log/hbase',
  158. owner = 'hbase',
  159. recursive = True,
  160. )
  161. self.assertResourceCalled('File',
  162. '/etc/hbase/conf/log4j.properties',
  163. mode=0644,
  164. group='hadoop',
  165. owner='hbase',
  166. content='log4jproperties\nline2'
  167. )
  168. self.assertResourceCalled('HdfsDirectory', 'hdfs://c6401.ambari.apache.org:8020/apps/hbase/data',
  169. security_enabled = False,
  170. keytab = UnknownConfigurationMock(),
  171. conf_dir = '/etc/hadoop/conf',
  172. hdfs_user = 'hdfs',
  173. kinit_path_local = '/usr/bin/kinit',
  174. owner = 'hbase',
  175. bin_dir = '/usr/bin',
  176. action = ['create_delayed'],
  177. )
  178. self.assertResourceCalled('HdfsDirectory', '/apps/hbase/staging',
  179. security_enabled = False,
  180. keytab = UnknownConfigurationMock(),
  181. conf_dir = '/etc/hadoop/conf',
  182. hdfs_user = 'hdfs',
  183. kinit_path_local = '/usr/bin/kinit',
  184. mode = 0711,
  185. owner = 'hbase',
  186. bin_dir = '/usr/bin',
  187. action = ['create_delayed'],
  188. )
  189. self.assertResourceCalled('HdfsDirectory', None,
  190. security_enabled = False,
  191. keytab = UnknownConfigurationMock(),
  192. conf_dir = '/etc/hadoop/conf',
  193. hdfs_user = 'hdfs',
  194. kinit_path_local = '/usr/bin/kinit',
  195. bin_dir = '/usr/bin',
  196. action = ['create'],
  197. )
  198. def assert_configure_secured(self):
  199. self.assertResourceCalled('Directory', '/etc/hbase',
  200. mode = 0755
  201. )
  202. self.assertResourceCalled('Directory', '/etc/hbase/conf',
  203. owner = 'hbase',
  204. group = 'hadoop',
  205. recursive = True,
  206. )
  207. self.assertResourceCalled('Directory', '/hadoop/hbase',
  208. owner = 'hbase',
  209. mode=0775,
  210. recursive = True,
  211. recursive_permission = True
  212. )
  213. self.assertResourceCalled('Directory', '/hadoop/hbase/local',
  214. owner = 'hbase',
  215. group = 'hadoop',
  216. mode=0775,
  217. recursive = True,
  218. )
  219. self.assertResourceCalled('Directory', '/hadoop/hbase/local/jars',
  220. owner = 'hbase',
  221. group = 'hadoop',
  222. mode=0775,
  223. recursive = True,
  224. )
  225. self.assertResourceCalled('XmlConfig', 'hbase-site.xml',
  226. owner = 'hbase',
  227. group = 'hadoop',
  228. conf_dir = '/etc/hbase/conf',
  229. configurations = self.getConfig()['configurations']['hbase-site'],
  230. configuration_attributes = self.getConfig()['configuration_attributes']['hbase-site']
  231. )
  232. self.assertResourceCalled('XmlConfig', 'hdfs-site.xml',
  233. owner = 'hbase',
  234. group = 'hadoop',
  235. conf_dir = '/etc/hbase/conf',
  236. configurations = self.getConfig()['configurations']['hdfs-site'],
  237. configuration_attributes = self.getConfig()['configuration_attributes']['hdfs-site']
  238. )
  239. self.assertResourceCalled('XmlConfig', 'hdfs-site.xml',
  240. owner = 'hdfs',
  241. group = 'hadoop',
  242. conf_dir = '/etc/hadoop/conf',
  243. configurations = self.getConfig()['configurations']['hdfs-site'],
  244. configuration_attributes = self.getConfig()['configuration_attributes']['hdfs-site']
  245. )
  246. self.assertResourceCalled('File', '/etc/hbase/conf/hbase-policy.xml',
  247. owner = 'hbase',
  248. group = 'hadoop',
  249. )
  250. self.assertResourceCalled('File', '/etc/hbase/conf/hbase-env.sh',
  251. owner = 'hbase',
  252. content = InlineTemplate(self.getConfig()['configurations']['hbase-env']['content']),
  253. )
  254. self.assertResourceCalled('TemplateConfig', '/etc/hbase/conf/hadoop-metrics2-hbase.properties',
  255. owner = 'hbase',
  256. template_tag = 'GANGLIA-RS',
  257. )
  258. self.assertResourceCalled('TemplateConfig', '/etc/hbase/conf/regionservers',
  259. owner = 'hbase',
  260. template_tag = None,
  261. )
  262. self.assertResourceCalled('TemplateConfig', '/etc/hbase/conf/hbase_regionserver_jaas.conf',
  263. owner = 'hbase',
  264. template_tag = None,
  265. )
  266. self.assertResourceCalled('Directory', '/var/run/hbase',
  267. owner = 'hbase',
  268. recursive = True,
  269. )
  270. self.assertResourceCalled('Directory', '/var/log/hbase',
  271. owner = 'hbase',
  272. recursive = True,
  273. )
  274. self.assertResourceCalled('File',
  275. '/etc/hbase/conf/log4j.properties',
  276. mode=0644,
  277. group='hadoop',
  278. owner='hbase',
  279. content='log4jproperties\nline2'
  280. )
  281. self.assertResourceCalled('HdfsDirectory', 'hdfs://c6401.ambari.apache.org:8020/apps/hbase/data',
  282. security_enabled = True,
  283. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  284. conf_dir = '/etc/hadoop/conf',
  285. hdfs_user = 'hdfs',
  286. kinit_path_local = '/usr/bin/kinit',
  287. owner = 'hbase',
  288. bin_dir = '/usr/bin',
  289. action = ['create_delayed'],
  290. )
  291. self.assertResourceCalled('HdfsDirectory', '/apps/hbase/staging',
  292. security_enabled = True,
  293. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  294. conf_dir = '/etc/hadoop/conf',
  295. hdfs_user = 'hdfs',
  296. kinit_path_local = '/usr/bin/kinit',
  297. mode = 0711,
  298. owner = 'hbase',
  299. bin_dir = '/usr/bin',
  300. action = ['create_delayed'],
  301. )
  302. self.assertResourceCalled('HdfsDirectory', None,
  303. security_enabled = True,
  304. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  305. conf_dir = '/etc/hadoop/conf',
  306. hdfs_user = 'hdfs',
  307. kinit_path_local = '/usr/bin/kinit',
  308. bin_dir = '/usr/bin',
  309. action = ['create'],
  310. )