mirror of
https://github.com/ceph/ceph
synced 2024-12-24 20:33:27 +00:00
4d89c9e4de
It is not enough to look for the first install task. In upgrade tests, the install.upgrade task requires more packages to be built. In more complicated tests using sequential and parallel tasks, the actual install or install.upgrade task may be deeper in the config tree. Signed-off-by: Loic Dachary <loic@dachary.org>
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
|