mirror of https://github.com/ceph/ceph
171 lines
5.0 KiB
Python
171 lines
5.0 KiB
Python
# 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
|