test_atlas_server.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  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 stacks.utils.RMFTestCase import *
  18. from only_for_platform import not_for_platform, PLATFORM_WINDOWS
  19. @not_for_platform(PLATFORM_WINDOWS)
  20. class TestAtlasServer(RMFTestCase):
  21. COMMON_SERVICES_PACKAGE_DIR = "ATLAS/0.1.0.2.3/package"
  22. STACK_VERSION = "2.5"
  23. def configureResourcesCalled(self):
  24. # Both server and client
  25. self.assertResourceCalled('Directory', '/etc/atlas/conf',
  26. owner='atlas',
  27. group='hadoop',
  28. create_parents = True,
  29. cd_access='a',
  30. mode=0755
  31. )
  32. # Pid dir
  33. self.assertResourceCalled('Directory', '/var/run/atlas',
  34. owner='atlas',
  35. group='hadoop',
  36. create_parents = True,
  37. cd_access='a',
  38. mode=0755
  39. )
  40. self.assertResourceCalled('Directory', '/etc/atlas/conf/solr',
  41. owner='atlas',
  42. group='hadoop',
  43. create_parents = True,
  44. cd_access='a',
  45. mode=0755,
  46. recursive_ownership = True
  47. )
  48. # Log dir
  49. self.assertResourceCalled('Directory', '/var/log/atlas',
  50. owner='atlas',
  51. group='hadoop',
  52. create_parents = True,
  53. cd_access='a',
  54. mode=0755
  55. )
  56. # Data dir
  57. self.assertResourceCalled('Directory', '/usr/hdp/current/atlas-server/data',
  58. owner='atlas',
  59. group='hadoop',
  60. create_parents = True,
  61. cd_access='a',
  62. mode=0644
  63. )
  64. # Expanded war dir
  65. self.assertResourceCalled('Directory', '/usr/hdp/current/atlas-server/server/webapp',
  66. owner='atlas',
  67. group='hadoop',
  68. create_parents = True,
  69. cd_access='a',
  70. mode=0644
  71. )
  72. self.assertResourceCalled('File', '/usr/hdp/current/atlas-server/server/webapp/atlas.war',
  73. content = StaticFile('/usr/hdp/current/atlas-server/server/webapp/atlas.war'),
  74. )
  75. host_name = u"c6401.ambari.apache.org"
  76. app_props = dict(self.getConfig()['configurations'][
  77. 'application-properties'])
  78. app_props['atlas.http.authentication.kerberos.name.rules'] = ' \\ \n'.join(app_props['atlas.http.authentication.kerberos.name.rules'].splitlines())
  79. app_props['atlas.server.bind.address'] = host_name
  80. metadata_protocol = "https" if app_props["atlas.enableTLS"] is True else "http"
  81. metadata_port = app_props["atlas.server.https.port"] if metadata_protocol == "https" else app_props["atlas.server.http.port"]
  82. app_props["atlas.rest.address"] = u'%s://%s:%s' % (metadata_protocol, host_name, metadata_port)
  83. app_props["atlas.server.ids"] = "id1"
  84. app_props["atlas.server.address.id1"] = u"%s:%s" % (host_name, metadata_port)
  85. app_props["atlas.server.ha.enabled"] = "false"
  86. self.assertResourceCalled('File', '/etc/atlas/conf/atlas-log4j.xml',
  87. content=InlineTemplate(
  88. self.getConfig()['configurations'][
  89. 'atlas-log4j']['content']),
  90. owner='atlas',
  91. group='hadoop',
  92. mode=0644,
  93. )
  94. self.assertResourceCalled('File', '/etc/atlas/conf/atlas-env.sh',
  95. content=InlineTemplate(
  96. self.getConfig()['configurations'][
  97. 'atlas-env']['content']),
  98. owner='atlas',
  99. group='hadoop',
  100. mode=0755,
  101. )
  102. self.assertResourceCalled('File', '/etc/atlas/conf/solr/solrconfig.xml',
  103. content=InlineTemplate(
  104. self.getConfig()['configurations'][
  105. 'atlas-solrconfig']['content']),
  106. owner='atlas',
  107. group='hadoop',
  108. mode=0644,
  109. )
  110. # application.properties file
  111. self.assertResourceCalled('PropertiesFile',
  112. '/etc/atlas/conf/atlas-application.properties',
  113. properties=app_props,
  114. owner=u'atlas',
  115. group=u'hadoop',
  116. mode=0644,
  117. )
  118. self.assertResourceCalled('Directory', '/var/log/ambari-logsearch-solr-client',
  119. owner='solr',
  120. group='hadoop',
  121. create_parents=True,
  122. cd_access='a',
  123. mode=0755
  124. )
  125. self.assertResourceCalled('Directory', '/usr/lib/ambari-logsearch-solr-client',
  126. owner='solr',
  127. group='hadoop',
  128. create_parents = True,
  129. recursive_ownership = True,
  130. cd_access='a',
  131. mode=0755
  132. )
  133. self.assertResourceCalled('File', '/usr/lib/ambari-logsearch-solr-client/solrCloudCli.sh',
  134. content=StaticFile('/usr/lib/ambari-logsearch-solr-client/solrCloudCli.sh'),
  135. owner='solr',
  136. group='hadoop',
  137. mode=0755,
  138. )
  139. self.assertResourceCalled('File', '/usr/lib/ambari-logsearch-solr-client/log4j.properties',
  140. content=InlineTemplate(self.getConfig()['configurations'][
  141. 'logsearch-solr-client-log4j']['content']),
  142. owner='solr',
  143. group='hadoop',
  144. mode=0644,
  145. )
  146. self.assertResourceCalled('File', '/var/log/ambari-logsearch-solr-client/solr-client.log',
  147. owner='solr',
  148. group='hadoop',
  149. mode=0664,
  150. content = ''
  151. )
  152. self.assertResourceCalledRegexp('^Execute$', '^export JAVA_HOME=/usr/jdk64/jdk1.7.0_45 ; /usr/lib/ambari-logsearch-solr-client/solrCloudCli.sh --zookeeper-connect-string c6401.ambari.apache.org:2181 --znode /logsearch --check-znode --retry 5 --interval 10')
  153. self.assertResourceCalledRegexp('^Execute$', '^export JAVA_HOME=/usr/jdk64/jdk1.7.0_45 ; /usr/lib/ambari-logsearch-solr-client/solrCloudCli.sh --zookeeper-connect-string c6401.ambari.apache.org:2181/logsearch --download-config --config-dir /tmp/solr_config_basic_configs_0.[0-9]* --config-set basic_configs --retry 30 --interval 5')
  154. self.assertResourceCalledRegexp('^File$', '^/tmp/solr_config_basic_configs_0.[0-9]*',
  155. content=InlineTemplate(self.getConfig()['configurations']['atlas-solrconfig']['content']),
  156. owner='atlas',
  157. only_if='test -d /tmp/solr_config_basic_configs_0.[0-9]*')
  158. self.assertResourceCalledRegexp('^Execute$', '^export JAVA_HOME=/usr/jdk64/jdk1.7.0_45 ; /usr/lib/ambari-logsearch-solr-client/solrCloudCli.sh --zookeeper-connect-string c6401.ambari.apache.org:2181/logsearch --upload-config --config-dir /tmp/solr_config_basic_configs_0.[0-9]* --config-set basic_configs --retry 30 --interval 5',
  159. only_if='test -d /tmp/solr_config_basic_configs_0.[0-9]*')
  160. self.assertResourceCalledRegexp('^Execute$', '^export JAVA_HOME=/usr/jdk64/jdk1.7.0_45 ; /usr/lib/ambari-logsearch-solr-client/solrCloudCli.sh --zookeeper-connect-string c6401.ambari.apache.org:2181/logsearch --upload-config --config-dir /etc/atlas/conf/solr --config-set basic_configs --retry 30 --interval 5',
  161. not_if='test -d /tmp/solr_config_basic_configs_0.[0-9]*')
  162. self.assertResourceCalledRegexp('^Directory$', '^/tmp/solr_config_basic_configs_0.[0-9]*',
  163. action=['delete'],
  164. owner='atlas',
  165. create_parents=True)
  166. self.assertResourceCalledRegexp('^Execute$', '^export JAVA_HOME=/usr/jdk64/jdk1.7.0_45 ; /usr/lib/ambari-logsearch-solr-client/solrCloudCli.sh --zookeeper-connect-string c6401.ambari.apache.org:2181/logsearch --create-collection --collection vertex_index --config-set basic_configs --shards 1 --replication 1 --max-shards 1 --retry 5 --interval 10')
  167. self.assertResourceCalledRegexp('^Execute$', '^export JAVA_HOME=/usr/jdk64/jdk1.7.0_45 ; /usr/lib/ambari-logsearch-solr-client/solrCloudCli.sh --zookeeper-connect-string c6401.ambari.apache.org:2181/logsearch --create-collection --collection edge_index --config-set basic_configs --shards 1 --replication 1 --max-shards 1 --retry 5 --interval 10')
  168. self.assertResourceCalledRegexp('^Execute$', '^export JAVA_HOME=/usr/jdk64/jdk1.7.0_45 ; /usr/lib/ambari-logsearch-solr-client/solrCloudCli.sh --zookeeper-connect-string c6401.ambari.apache.org:2181/logsearch --create-collection --collection fulltext_index --config-set basic_configs --shards 1 --replication 1 --max-shards 1 --retry 5 --interval 10')
  169. def test_configure_default(self):
  170. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/metadata_server.py",
  171. classname = "MetadataServer",
  172. command = "configure",
  173. config_file="default.json",
  174. stack_version = self.STACK_VERSION,
  175. target = RMFTestCase.TARGET_COMMON_SERVICES
  176. )
  177. self.configureResourcesCalled()
  178. self.assertNoMoreResources()