diff options
Diffstat (limited to 'src/ceph/qa/tasks/tests')
-rw-r--r-- | src/ceph/qa/tasks/tests/__init__.py | 0 | ||||
-rw-r--r-- | src/ceph/qa/tasks/tests/test_buildpackages.py | 170 | ||||
-rw-r--r-- | src/ceph/qa/tasks/tests/test_devstack.py | 48 | ||||
-rw-r--r-- | src/ceph/qa/tasks/tests/test_radosgw_admin.py | 31 |
4 files changed, 249 insertions, 0 deletions
diff --git a/src/ceph/qa/tasks/tests/__init__.py b/src/ceph/qa/tasks/tests/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/ceph/qa/tasks/tests/__init__.py diff --git a/src/ceph/qa/tasks/tests/test_buildpackages.py b/src/ceph/qa/tasks/tests/test_buildpackages.py new file mode 100644 index 0000000..fed5aa0 --- /dev/null +++ b/src/ceph/qa/tasks/tests/test_buildpackages.py @@ -0,0 +1,170 @@ +# py.test -v -s tests/test_buildpackages.py + +from mock import patch, Mock + +from .. import buildpackages +from teuthology import packaging + +def test_get_tag_branch_sha1(): + gitbuilder = packaging.GitbuilderProject( + 'ceph', + { + 'os_type': 'centos', + 'os_version': '7.0', + }) + (tag, branch, sha1) = buildpackages.get_tag_branch_sha1(gitbuilder) + assert tag == None + assert branch == None + assert sha1 is not None + + gitbuilder = packaging.GitbuilderProject( + 'ceph', + { + 'os_type': 'centos', + 'os_version': '7.0', + 'sha1': 'asha1', + }) + (tag, branch, sha1) = buildpackages.get_tag_branch_sha1(gitbuilder) + assert tag == None + assert branch == None + assert sha1 == 'asha1' + + remote = Mock + remote.arch = 'x86_64' + remote.os = Mock + remote.os.name = 'ubuntu' + remote.os.version = '14.04' + remote.os.codename = 'trusty' + remote.system_type = 'deb' + ctx = Mock + ctx.cluster = Mock + ctx.cluster.remotes = {remote: ['client.0']} + + expected_tag = 'v0.94.1' + expected_sha1 = 'expectedsha1' + def check_output(cmd, shell): + assert shell == True + return expected_sha1 + " refs/tags/" + expected_tag + with patch.multiple( + buildpackages, + check_output=check_output, + ): + gitbuilder = packaging.GitbuilderProject( + 'ceph', + { + 'os_type': 'centos', + 'os_version': '7.0', + 'sha1': 'asha1', + 'all': { + 'tag': tag, + }, + }, + ctx = ctx, + remote = remote) + (tag, branch, sha1) = buildpackages.get_tag_branch_sha1(gitbuilder) + assert tag == expected_tag + assert branch == None + assert sha1 == expected_sha1 + + expected_branch = 'hammer' + expected_sha1 = 'otherexpectedsha1' + def check_output(cmd, shell): + assert shell == True + return expected_sha1 + " refs/heads/" + expected_branch + with patch.multiple( + buildpackages, + check_output=check_output, + ): + gitbuilder = packaging.GitbuilderProject( + 'ceph', + { + 'os_type': 'centos', + 'os_version': '7.0', + 'sha1': 'asha1', + 'all': { + 'branch': branch, + }, + }, + ctx = ctx, + remote = remote) + (tag, branch, sha1) = buildpackages.get_tag_branch_sha1(gitbuilder) + assert tag == None + assert branch == expected_branch + assert sha1 == expected_sha1 + +def test_lookup_configs(): + expected_system_type = 'deb' + def make_remote(): + remote = Mock() + remote.arch = 'x86_64' + remote.os = Mock() + remote.os.name = 'ubuntu' + remote.os.version = '14.04' + remote.os.codename = 'trusty' + remote.system_type = expected_system_type + return remote + ctx = Mock() + class cluster: + remote1 = make_remote() + remote2 = make_remote() + remotes = { + remote1: ['client.0'], + remote2: ['mon.a','osd.0'], + } + def only(self, role): + result = Mock() + if role in ('client.0',): + result.remotes = { cluster.remote1: None } + elif role in ('osd.0', 'mon.a'): + result.remotes = { cluster.remote2: None } + else: + result.remotes = None + return result + ctx.cluster = cluster() + ctx.config = { + 'roles': [ ['client.0'], ['mon.a','osd.0'] ], + } + + # nothing -> nothing + assert buildpackages.lookup_configs(ctx, {}) == [] + assert buildpackages.lookup_configs(ctx, {1:[1,2,3]}) == [] + assert buildpackages.lookup_configs(ctx, [[1,2,3]]) == [] + assert buildpackages.lookup_configs(ctx, None) == [] + + # + # the overrides applies to install and to install.upgrade + # that have no tag, branch or sha1 + # + config = { + 'overrides': { + 'install': { + 'ceph': { + 'sha1': 'overridesha1', + 'tag': 'overridetag', + 'branch': 'overridebranch', + }, + }, + }, + 'tasks': [ + { + 'install': { + 'sha1': 'installsha1', + }, + }, + { + 'install.upgrade': { + 'osd.0': { + }, + 'client.0': { + 'sha1': 'client0sha1', + }, + }, + } + ], + } + ctx.config = config + expected_configs = [{'branch': 'overridebranch', 'sha1': 'overridesha1', 'tag': 'overridetag'}, + {'project': 'ceph', 'branch': 'overridebranch', 'sha1': 'overridesha1', 'tag': 'overridetag'}, + {'project': 'ceph', 'sha1': 'client0sha1'}] + + assert buildpackages.lookup_configs(ctx, config) == expected_configs diff --git a/src/ceph/qa/tasks/tests/test_devstack.py b/src/ceph/qa/tasks/tests/test_devstack.py new file mode 100644 index 0000000..117b307 --- /dev/null +++ b/src/ceph/qa/tasks/tests/test_devstack.py @@ -0,0 +1,48 @@ +from textwrap import dedent + +from .. import devstack + + +class TestDevstack(object): + def test_parse_os_table(self): + table_str = dedent(""" + +---------------------+--------------------------------------+ + | Property | Value | + +---------------------+--------------------------------------+ + | attachments | [] | + | availability_zone | nova | + | bootable | false | + | created_at | 2014-02-21T17:14:47.548361 | + | display_description | None | + | display_name | NAME | + | id | ffdbd1bb-60dc-4d95-acfe-88774c09ad3e | + | metadata | {} | + | size | 1 | + | snapshot_id | None | + | source_volid | None | + | status | creating | + | volume_type | None | + +---------------------+--------------------------------------+ + """).strip() + expected = { + 'Property': 'Value', + 'attachments': '[]', + 'availability_zone': 'nova', + 'bootable': 'false', + 'created_at': '2014-02-21T17:14:47.548361', + 'display_description': 'None', + 'display_name': 'NAME', + 'id': 'ffdbd1bb-60dc-4d95-acfe-88774c09ad3e', + 'metadata': '{}', + 'size': '1', + 'snapshot_id': 'None', + 'source_volid': 'None', + 'status': 'creating', + 'volume_type': 'None'} + + vol_info = devstack.parse_os_table(table_str) + assert vol_info == expected + + + + diff --git a/src/ceph/qa/tasks/tests/test_radosgw_admin.py b/src/ceph/qa/tasks/tests/test_radosgw_admin.py new file mode 100644 index 0000000..59f3578 --- /dev/null +++ b/src/ceph/qa/tasks/tests/test_radosgw_admin.py @@ -0,0 +1,31 @@ +from mock import Mock + +from .. import radosgw_admin + +acl_with_version = """<?xml version="1.0" encoding="UTF-8"?><AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>foo</ID><DisplayName>Foo</DisplayName></Owner><AccessControlList><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>foo</ID><DisplayName>Foo</DisplayName></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy> +""" # noqa + + +acl_without_version = """<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>foo</ID><DisplayName>Foo</DisplayName></Owner><AccessControlList><Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>foo</ID><DisplayName>Foo</DisplayName></Grantee><Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy> +""" # noqa + + +class TestGetAcl(object): + + def setup(self): + self.key = Mock() + + def test_removes_xml_version(self): + self.key.get_xml_acl = Mock(return_value=acl_with_version) + result = radosgw_admin.get_acl(self.key) + assert result.startswith('<AccessControlPolicy') + + def test_xml_version_is_already_removed(self): + self.key.get_xml_acl = Mock(return_value=acl_without_version) + result = radosgw_admin.get_acl(self.key) + assert result.startswith('<AccessControlPolicy') + + def test_newline_gets_trimmed(self): + self.key.get_xml_acl = Mock(return_value=acl_without_version) + result = radosgw_admin.get_acl(self.key) + assert result.endswith('\n') is False |