You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ja...@apache.org on 2016/02/26 21:24:20 UTC
[2/2] ambari git commit: AMBARI-13439: Unit tests for the HAWQ
service under common-services (nalex via jaoki)
AMBARI-13439: Unit tests for the HAWQ service under common-services (nalex via jaoki)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2f8636e5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2f8636e5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2f8636e5
Branch: refs/heads/trunk
Commit: 2f8636e5eafa4d9d26097a6e0d8f8dcde59d2e75
Parents: 73ac59f
Author: Jun Aoki <ja...@apache.org>
Authored: Fri Feb 26 12:24:11 2016 -0800
Committer: Jun Aoki <ja...@apache.org>
Committed: Fri Feb 26 12:24:11 2016 -0800
----------------------------------------------------------------------
.../HAWQ/2.0.0/package/scripts/__init__.py | 19 +
.../HAWQ/2.0.0/package/scripts/params.py | 4 +-
.../python/stacks/2.3/HAWQ/test_hawqmaster.py | 292 ++++
.../python/stacks/2.3/HAWQ/test_hawqsegment.py | 160 +++
.../python/stacks/2.3/HAWQ/test_hawqstandby.py | 200 +++
.../python/stacks/2.3/configs/hawq_default.json | 1324 ++++++++++++++++++
6 files changed, 1997 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/2f8636e5/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/__init__.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/__init__.py b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/__init__.py
new file mode 100644
index 0000000..5561e10
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/__init__.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+"""
http://git-wip-us.apache.org/repos/asf/ambari/blob/2f8636e5/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/params.py
index 7633731..50a8fda 100644
--- a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/package/scripts/params.py
@@ -51,9 +51,9 @@ hawq_password = unicode(config['configurations']['hawq-env']['hawq_password'])
# HAWQ Hostnames
hawqmaster_host = __get_component_host('hawqmaster_hosts')
hawqstandby_host = __get_component_host('hawqstandby_hosts')
-hawqsegment_hosts = default('/clusterHostInfo/hawqsegment_hosts', [])
+hawqsegment_hosts = sorted(default('/clusterHostInfo/hawqsegment_hosts', []))
hawq_master_hosts = [host for host in hawqmaster_host, hawqstandby_host if host]
-hawq_all_hosts = set(hawq_master_hosts + hawqsegment_hosts)
+hawq_all_hosts = sorted(set(hawq_master_hosts + hawqsegment_hosts))
# HDFS
http://git-wip-us.apache.org/repos/asf/ambari/blob/2f8636e5/ambari-server/src/test/python/stacks/2.3/HAWQ/test_hawqmaster.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.3/HAWQ/test_hawqmaster.py b/ambari-server/src/test/python/stacks/2.3/HAWQ/test_hawqmaster.py
new file mode 100644
index 0000000..355207c
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/2.3/HAWQ/test_hawqmaster.py
@@ -0,0 +1,292 @@
+#!/usr/bin/env python
+
+'''
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+'''
+
+from mock.mock import MagicMock, call, patch
+from stacks.utils.RMFTestCase import *
+import resource_management.libraries.functions
+
+@patch.object(resource_management.libraries.functions, 'check_process_status', new = MagicMock())
+class TestHawqMaster(RMFTestCase):
+ COMMON_SERVICES_PACKAGE_DIR = 'HAWQ/2.0.0/package'
+ STACK_VERSION = '2.3'
+ GPADMIN = 'gpadmin'
+
+ def __asserts_for_configure(self):
+
+ self.assertResourceCalled('Group', self.GPADMIN,
+ ignore_failures = True
+ )
+
+ self.assertResourceCalled('User', self.GPADMIN,
+ gid = self.GPADMIN,
+ groups = ['gpadmin', u'hadoop'],
+ ignore_failures = True,
+ password = 'saNIJ3hOyqasU'
+ )
+
+ self.assertResourceCalled('Execute', 'chown -R gpadmin:gpadmin /usr/local/hawq/',
+ timeout = 600
+ )
+
+ self.assertResourceCalled('XmlConfig', 'hdfs-client.xml',
+ conf_dir = '/usr/local/hawq/etc/',
+ configurations = self.getConfig()['configurations']['hdfs-client'],
+ configuration_attributes = self.getConfig()['configuration_attributes']['hdfs-client'],
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('XmlConfig', 'yarn-client.xml',
+ conf_dir = '/usr/local/hawq/etc/',
+ configurations = self.getConfig()['configurations']['yarn-client'],
+ configuration_attributes = self.getConfig()['configuration_attributes']['yarn-client'],
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('XmlConfig', 'hawq-site.xml',
+ conf_dir = '/usr/local/hawq/etc/',
+ configurations = self.getConfig()['configurations']['hawq-site'],
+ configuration_attributes = self.getConfig()['configuration_attributes']['hawq-site'],
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('File', '/usr/local/hawq/etc/hawq_check.cnf',
+ content = self.getConfig()['configurations']['hawq-check-env']['content'],
+ owner = self.GPADMIN,
+ group = self.GPADMIN,
+ mode=0644
+ )
+
+ self.assertResourceCalled('File', '/usr/local/hawq/etc/slaves',
+ content = InlineTemplate('c6401.ambari.apache.org\nc6402.ambari.apache.org\nc6403.ambari.apache.org\n\n'),
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('File', '/usr/local/hawq/etc/hawq_hosts',
+ content = InlineTemplate('c6401.ambari.apache.org\nc6402.ambari.apache.org\nc6403.ambari.apache.org\n\n'),
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('Directory', '/data/hawq/master',
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ create_parents = True
+ )
+
+ self.assertResourceCalled('Directory', '/tmp',
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ create_parents = True
+ )
+
+ self.assertResourceCalled('Execute', 'chmod 700 /data/hawq/master',
+ user = 'root',
+ timeout = 600
+ )
+
+
+ @patch ('hawqmaster.common.__set_osparams')
+ def test_configure_default(self, set_osparams_mock):
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqmaster.py',
+ classname = 'HawqMaster',
+ command = 'configure',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.__asserts_for_configure()
+ self.assertNoMoreResources()
+
+
+ @patch ('hawqmaster.common.__set_osparams')
+ def test_install_default(self, set_osparams_mock):
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqmaster.py',
+ classname = 'HawqMaster',
+ command = 'install',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.__asserts_for_configure()
+ self.assertNoMoreResources()
+
+
+ @patch ('hawqmaster.common.__set_osparams')
+ @patch ('hawqmaster.master_helper.__is_active_master')
+ @patch ('hawqmaster.master_helper.__is_local_initialized')
+ def test_start_default(self, is_local_initialized_mock, active_master_mock, set_osparams_mock):
+ active_master_mock.return_value = True
+ is_local_initialized_mock.return_value = False
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqmaster.py',
+ classname = 'HawqMaster',
+ command = 'start',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.__asserts_for_configure()
+
+ self.assertResourceCalled('Execute', 'source /usr/local/hawq/greenplum_path.sh && hawq ssh-exkeys -f /usr/local/hawq/etc/hawq_hosts -p gpadmin',
+ logoutput = True,
+ not_if = None,
+ only_if = None,
+ user = self.GPADMIN,
+ timeout = 900
+ )
+
+ self.assertResourceCalled('HdfsResource', '/hawq_default',
+ default_fs = u'hdfs://c6401.ambari.apache.org:8020',
+ hdfs_site = self.getConfig()['configurations']['hdfs-site'],
+ type = 'directory',
+ action = ['create_on_execute'],
+ owner = self.GPADMIN,
+ group = self.GPADMIN,
+ user = u'hdfs',
+ mode = 493,
+ security_enabled = False,
+ kinit_path_local = '/usr/bin/kinit',
+ recursive_chown = True,
+ keytab = UnknownConfigurationMock(),
+ principal_name = UnknownConfigurationMock(),
+ )
+
+ self.assertResourceCalled('HdfsResource', None,
+ default_fs = u'hdfs://c6401.ambari.apache.org:8020',
+ hdfs_site = self.getConfig()['configurations']['hdfs-site'],
+ action = ['execute'],
+ user = u'hdfs',
+ security_enabled = False,
+ kinit_path_local = '/usr/bin/kinit',
+ keytab = UnknownConfigurationMock(),
+ principal_name = UnknownConfigurationMock()
+ )
+
+ self.assertResourceCalled('Execute', 'source /usr/local/hawq/greenplum_path.sh && hawq init master -a -v',
+ logoutput = True,
+ not_if = None,
+ only_if = None,
+ user = self.GPADMIN,
+ timeout = 900
+ )
+
+ self.assertNoMoreResources()
+
+
+ @patch ('hawqmaster.common.__set_osparams')
+ @patch ('hawqmaster.master_helper.__is_active_master')
+ @patch ('hawqmaster.master_helper.__is_local_initialized')
+ def test_start_localmaster(self, is_local_initialized_mock, active_master_mock, set_osparams_mock):
+ active_master_mock.return_value = True
+ is_local_initialized_mock.return_value = True
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqmaster.py',
+ classname = 'HawqMaster',
+ command = 'start',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.__asserts_for_configure()
+
+ self.assertResourceCalled('Execute', 'source /usr/local/hawq/greenplum_path.sh && hawq ssh-exkeys -f /usr/local/hawq/etc/hawq_hosts -p gpadmin',
+ logoutput = True,
+ not_if = None,
+ only_if = None,
+ user = self.GPADMIN,
+ timeout = 900
+ )
+
+ self.assertResourceCalled('HdfsResource', '/hawq_default',
+ default_fs = u'hdfs://c6401.ambari.apache.org:8020',
+ hdfs_site = self.getConfig()['configurations']['hdfs-site'],
+ type = 'directory',
+ action = ['create_on_execute'],
+ owner = self.GPADMIN,
+ group = self.GPADMIN,
+ user = u'hdfs',
+ mode = 493,
+ security_enabled = False,
+ kinit_path_local = '/usr/bin/kinit',
+ recursive_chown = True,
+ keytab = UnknownConfigurationMock(),
+ principal_name = UnknownConfigurationMock(),
+ )
+
+ self.assertResourceCalled('HdfsResource', None,
+ default_fs = u'hdfs://c6401.ambari.apache.org:8020',
+ hdfs_site = self.getConfig()['configurations']['hdfs-site'],
+ action = ['execute'],
+ user = u'hdfs',
+ security_enabled = False,
+ kinit_path_local = '/usr/bin/kinit',
+ keytab = UnknownConfigurationMock(),
+ principal_name = UnknownConfigurationMock()
+ )
+
+ self.assertResourceCalled('Execute', 'source /usr/local/hawq/greenplum_path.sh && hawq start master -a -v',
+ logoutput = True,
+ not_if = "netstat -tupln | egrep ':5432\\s' | egrep postgres",
+ only_if = None,
+ user = self.GPADMIN,
+ timeout = 900
+ )
+
+ self.assertNoMoreResources()
+
+
+ @patch ('hawqmaster.common.__set_osparams')
+ @patch ('hawqmaster.master_helper.__is_active_master')
+ def test_stop_default(self, active_master_mock, set_osparams_mock):
+ active_master_mock.return_value = True
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqmaster.py',
+ classname = 'HawqMaster',
+ command = 'stop',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.assertResourceCalled('Execute', 'source /usr/local/hawq/greenplum_path.sh && hawq stop master -M fast -a -v',
+ logoutput = True,
+ not_if = None,
+ only_if = "netstat -tupln | egrep ':5432\\s' | egrep postgres",
+ user = self.GPADMIN,
+ timeout = 900
+ )
+
+ self.assertNoMoreResources()
+
http://git-wip-us.apache.org/repos/asf/ambari/blob/2f8636e5/ambari-server/src/test/python/stacks/2.3/HAWQ/test_hawqsegment.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.3/HAWQ/test_hawqsegment.py b/ambari-server/src/test/python/stacks/2.3/HAWQ/test_hawqsegment.py
new file mode 100644
index 0000000..66800ea
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/2.3/HAWQ/test_hawqsegment.py
@@ -0,0 +1,160 @@
+#!/usr/bin/env python
+
+'''
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+'''
+
+from mock.mock import MagicMock, call, patch
+from stacks.utils.RMFTestCase import *
+
+class TestHawqSegment(RMFTestCase):
+ COMMON_SERVICES_PACKAGE_DIR = 'HAWQ/2.0.0/package'
+ STACK_VERSION = '2.3'
+ GPADMIN = 'gpadmin'
+
+ def __asserts_for_configure(self):
+
+ self.assertResourceCalled('Group', self.GPADMIN,
+ ignore_failures = True
+ )
+
+ self.assertResourceCalled('User', self.GPADMIN,
+ gid = self.GPADMIN,
+ groups = [self.GPADMIN, u'hadoop'],
+ ignore_failures = True,
+ password = 'saNIJ3hOyqasU'
+ )
+
+ self.assertResourceCalled('Execute', 'chown -R gpadmin:gpadmin /usr/local/hawq/',
+ timeout = 600
+ )
+
+ self.assertResourceCalled('XmlConfig', 'hdfs-client.xml',
+ conf_dir = '/usr/local/hawq/etc/',
+ configurations = self.getConfig()['configurations']['hdfs-client'],
+ configuration_attributes = self.getConfig()['configuration_attributes']['hdfs-client'],
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('XmlConfig', 'yarn-client.xml',
+ conf_dir = '/usr/local/hawq/etc/',
+ configurations = self.getConfig()['configurations']['yarn-client'],
+ configuration_attributes = self.getConfig()['configuration_attributes']['yarn-client'],
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('XmlConfig', 'hawq-site.xml',
+ conf_dir = '/usr/local/hawq/etc/',
+ configurations = self.getConfig()['configurations']['hawq-site'],
+ configuration_attributes = self.getConfig()['configuration_attributes']['hawq-site'],
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+
+
+ @patch ('hawqsegment.common.__set_osparams')
+ def test_configure_default(self, set_osparams_mock):
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqsegment.py',
+ classname = 'HawqSegment',
+ command = 'configure',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.__asserts_for_configure()
+ self.assertNoMoreResources()
+
+
+ @patch ('hawqsegment.common.__set_osparams')
+ def test_install_default(self, set_osparams_mock):
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqsegment.py',
+ classname = 'HawqSegment',
+ command = 'install',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.__asserts_for_configure()
+ self.assertNoMoreResources()
+
+
+ @patch ('hawqsegment.common.__set_osparams')
+ def test_start_default(self, set_osparams_mock):
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqsegment.py',
+ classname = 'HawqSegment',
+ command = 'start',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.__asserts_for_configure()
+
+ self.assertResourceCalled('Directory', '/data/hawq/segment',
+ owner = self.GPADMIN,
+ group = self.GPADMIN,
+ create_parents = True
+ )
+
+ self.assertResourceCalled('Directory', '/tmp',
+ owner = self.GPADMIN,
+ group = self.GPADMIN,
+ create_parents = True
+ )
+
+ self.assertResourceCalled('Execute', 'source /usr/local/hawq/greenplum_path.sh && hawq init segment -a -v',
+ logoutput = True,
+ not_if = None,
+ only_if = None,
+ user = self.GPADMIN,
+ timeout = 900
+ )
+
+ self.assertNoMoreResources()
+
+
+ def test_stop_default(self):
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqsegment.py',
+ classname = 'HawqSegment',
+ command = 'stop',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.assertResourceCalled('Execute', 'source /usr/local/hawq/greenplum_path.sh && hawq stop segment -M fast -a -v',
+ logoutput = True,
+ not_if = None,
+ only_if = "netstat -tupln | egrep ':40000\\s' | egrep postgres",
+ user = self.GPADMIN,
+ timeout = 900
+ )
+
+ self.assertNoMoreResources()
+
http://git-wip-us.apache.org/repos/asf/ambari/blob/2f8636e5/ambari-server/src/test/python/stacks/2.3/HAWQ/test_hawqstandby.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.3/HAWQ/test_hawqstandby.py b/ambari-server/src/test/python/stacks/2.3/HAWQ/test_hawqstandby.py
new file mode 100644
index 0000000..26a211d
--- /dev/null
+++ b/ambari-server/src/test/python/stacks/2.3/HAWQ/test_hawqstandby.py
@@ -0,0 +1,200 @@
+#!/usr/bin/env python
+
+'''
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+'''
+
+from mock.mock import MagicMock, call, patch
+from stacks.utils.RMFTestCase import *
+
+
+class TestHawqStandby(RMFTestCase):
+ COMMON_SERVICES_PACKAGE_DIR = 'HAWQ/2.0.0/package'
+ STACK_VERSION = '2.3'
+ GPADMIN = 'gpadmin'
+
+ def __asserts_for_configure(self):
+
+ self.assertResourceCalled('Group', self.GPADMIN,
+ ignore_failures = True
+ )
+
+ self.assertResourceCalled('User', self.GPADMIN,
+ gid = self.GPADMIN,
+ groups = [self.GPADMIN, u'hadoop'],
+ ignore_failures = True,
+ password = 'saNIJ3hOyqasU'
+ )
+
+ self.assertResourceCalled('Execute', 'chown -R gpadmin:gpadmin /usr/local/hawq/',
+ timeout = 600
+ )
+
+ self.assertResourceCalled('XmlConfig', 'hdfs-client.xml',
+ conf_dir = '/usr/local/hawq/etc/',
+ configurations = self.getConfig()['configurations']['hdfs-client'],
+ configuration_attributes = self.getConfig()['configuration_attributes']['hdfs-client'],
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('XmlConfig', 'yarn-client.xml',
+ conf_dir = '/usr/local/hawq/etc/',
+ configurations = self.getConfig()['configurations']['yarn-client'],
+ configuration_attributes = self.getConfig()['configuration_attributes']['yarn-client'],
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('XmlConfig', 'hawq-site.xml',
+ conf_dir = '/usr/local/hawq/etc/',
+ configurations = self.getConfig()['configurations']['hawq-site'],
+ configuration_attributes = self.getConfig()['configuration_attributes']['hawq-site'],
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('File', '/usr/local/hawq/etc/hawq_check.cnf',
+ content = self.getConfig()['configurations']['hawq-check-env']['content'],
+ owner = self.GPADMIN,
+ group = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('File', '/usr/local/hawq/etc/slaves',
+ content = InlineTemplate('c6401.ambari.apache.org\nc6402.ambari.apache.org\nc6403.ambari.apache.org\n\n'),
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('File', '/usr/local/hawq/etc/hawq_hosts',
+ content = InlineTemplate('c6401.ambari.apache.org\nc6402.ambari.apache.org\nc6403.ambari.apache.org\n\n'),
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ mode = 0644
+ )
+
+ self.assertResourceCalled('Directory', '/data/hawq/master',
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ create_parents = True
+ )
+
+ self.assertResourceCalled('Directory', '/tmp',
+ group = self.GPADMIN,
+ owner = self.GPADMIN,
+ create_parents = True
+ )
+
+ self.assertResourceCalled('Execute', 'chmod 700 /data/hawq/master',
+ user = 'root',
+ timeout = 600
+ )
+
+
+ @patch ('hawqstandby.common.__set_osparams')
+ def test_configure_default(self, set_osparams_mock):
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqstandby.py',
+ classname = 'HawqStandby',
+ command = 'configure',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.__asserts_for_configure()
+ self.assertNoMoreResources()
+
+
+ @patch ('hawqstandby.common.__set_osparams')
+ def test_install_default(self, set_osparams_mock):
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqstandby.py',
+ classname = 'HawqStandby',
+ command = 'install',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.__asserts_for_configure()
+ self.assertNoMoreResources()
+
+
+
+ @patch ('hawqstandby.common.__set_osparams')
+ @patch ('hawqstandby.master_helper.__is_active_master')
+ @patch ('hawqstandby.master_helper.__is_standby_host')
+ def test_start_default(self, standby_host_mock, active_master_mock, set_osparams_mock):
+ standby_host_mock.return_value = True
+ active_master_mock.return_value = False
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqstandby.py',
+ classname = 'HawqStandby',
+ command = 'start',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.__asserts_for_configure()
+
+ self.assertResourceCalled('Execute', 'source /usr/local/hawq/greenplum_path.sh && hawq ssh-exkeys -f /usr/local/hawq/etc/hawq_hosts -p gpadmin',
+ logoutput = True,
+ not_if = None,
+ only_if = None,
+ user = self.GPADMIN,
+ timeout = 900
+ )
+
+ self.assertResourceCalled('Execute', 'source /usr/local/hawq/greenplum_path.sh && hawq init standby -a -v',
+ logoutput = True,
+ not_if = None,
+ only_if = None,
+ user = self.GPADMIN,
+ timeout = 900
+ )
+ self.assertNoMoreResources()
+
+
+ @patch ('hawqstandby.common.__set_osparams')
+ @patch ('hawqstandby.master_helper.__is_active_master')
+ def test_stop_default(self, active_master_mock, set_osparams_mock):
+ active_master_mock.return_value = False
+
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + '/scripts/hawqstandby.py',
+ classname = 'HawqStandby',
+ command = 'stop',
+ config_file ='hawq_default.json',
+ hdp_stack_version = self.STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES
+ )
+
+ self.assertResourceCalled('Execute', 'source /usr/local/hawq/greenplum_path.sh && hawq stop standby -M fast -a -v',
+ logoutput = True,
+ not_if = None,
+ only_if = "netstat -tupln | egrep ':5432\\s' | egrep gpsyncmaster",
+ user = self.GPADMIN,
+ timeout = 900
+ )
+
+ self.assertNoMoreResources()