Fix another place where test results depend on the yaml parsing order.

This commit is contained in:
Jan Kaluza
2017-04-18 09:52:49 +02:00
parent c828f60444
commit f8bb6e8e99
5 changed files with 49 additions and 36 deletions

View File

@@ -491,8 +491,16 @@ def _scm_get_latest(pkg):
pkgref = module_build_service.scm.SCM(
pkg.repository).get_latest(branch=pkg.ref)
except Exception as e:
return True, "Failed to get the latest commit for %s#%s" % (pkg.repository, pkg.ref)
return False, (pkg.name, pkgref)
log.exception(e)
return {
'error': "Failed to get the latest commit for %s#%s" % (pkg.repository, pkg.ref)
}
return {
'pkg_name': pkg.name,
'pkg_ref': pkgref,
'error': None
}
def format_mmd(mmd, scmurl):
"""
@@ -582,26 +590,28 @@ def format_mmd(mmd, scmurl):
# pkg.ref by real SCM hash and store the result to our private xmd
# place in modulemd.
pool = ThreadPool(20)
pkgrefs = pool.map(_scm_get_latest, mmd.components.rpms.values())
pkg_dicts = pool.map(_scm_get_latest, mmd.components.rpms.values())
err_msg = ""
for is_error, pkgref in pkgrefs:
if is_error:
err_msg += pkgref + "\n"
for pkg_dict in pkg_dicts:
if pkg_dict["error"]:
err_msg += pkg_dict["error"] + "\n"
else:
mmd.xmd['mbs']['rpms'][pkgref[0]] = {'ref': pkgref[1]}
pkg_name = pkg_dict["pkg_name"]
pkg_ref = pkg_dict["pkg_ref"]
mmd.xmd['mbs']['rpms'][pkg_name] = {'ref': pkg_ref}
if err_msg:
raise UnprocessableEntity(err_msg)
def merge_included_mmd(main_mmd, mmd):
def merge_included_mmd(mmd, included_mmd):
"""
Merges two modulemds. This merges only metadata which are needed in
the `main_mmd` when it includes another module defined by `mmd`
the `main` when it includes another module defined by `included_mmd`
"""
if 'rpms' in mmd.xmd['mbs']:
if 'rpms' not in main_mmd.xmd['mbs']:
main_mmd.xmd['mbs']['rpms'] = mmd.xmd['mbs']['rpms']
if 'rpms' in included_mmd.xmd['mbs']:
if 'rpms' not in mmd.xmd['mbs']:
mmd.xmd['mbs']['rpms'] = included_mmd.xmd['mbs']['rpms']
else:
main_mmd.xmd['mbs']['rpms'].update(mmd.xmd['mbs']['rpms'])
mmd.xmd['mbs']['rpms'].update(included_mmd.xmd['mbs']['rpms'])
def record_component_builds(mmd, module, initial_batch = 1,
previous_buildorder = None, main_mmd = None):

View File

@@ -29,8 +29,8 @@ data:
ref: f25
perl-Tangerine:
rationale: Provides API for this module and is a dependency of tangerine.
ref: f25
ref: f24
tangerine:
rationale: Provides API for this module.
buildorder: 10
ref: f25
ref: f23

View File

@@ -265,8 +265,8 @@ class TestBuild(unittest.TestCase):
# Check that components are tagged after the batch is built.
tag_groups = []
tag_groups.append(set([u'perl-Tangerine?#f25-1-1', u'perl-List-Compare?#f25-1-1']))
tag_groups.append(set([u'tangerine?#f25-1-1']))
tag_groups.append(set([u'perl-Tangerine?#f24-1-1', u'perl-List-Compare?#f25-1-1']))
tag_groups.append(set([u'tangerine?#f23-1-1']))
def on_tag_artifacts_cb(cls, artifacts):
self.assertEqual(tag_groups.pop(0), set(artifacts))
@@ -277,8 +277,8 @@ class TestBuild(unittest.TestCase):
# is built.
buildroot_groups = []
buildroot_groups.append(set([u'module-build-macros-0.1-1.module_fc4ed5f7.src.rpm-1-1']))
buildroot_groups.append(set([u'perl-Tangerine?#f25-1-1', u'perl-List-Compare?#f25-1-1']))
buildroot_groups.append(set([u'tangerine?#f25-1-1']))
buildroot_groups.append(set([u'perl-Tangerine?#f24-1-1', u'perl-List-Compare?#f25-1-1']))
buildroot_groups.append(set([u'tangerine?#f23-1-1']))
def on_buildroot_add_artifacts_cb(cls, artifacts, install):
self.assertEqual(buildroot_groups.pop(0), set(artifacts))

View File

@@ -81,12 +81,16 @@ class TestUtils(unittest.TestCase):
mocked_scm.return_value.commit = \
'620ec77321b2ea7b0d67d82992dda3e1d67055b4'
# For all the RPMs in testmodule, get_latest is called
hashes_returned = [
'4ceea43add2366d8b8c5a622a2fb563b625b9abf',
'fbed359411a1baa08d4a88e0d12d426fbf8f602c',
'76f9d8c8e87eed0aab91034b01d3d5ff6bd5b4cb']
original_refs = ["f25"]
mocked_scm.return_value.get_latest.side_effect = hashes_returned
hashes_returned = {
'f24': '4ceea43add2366d8b8c5a622a2fb563b625b9abf',
'f23': 'fbed359411a1baa08d4a88e0d12d426fbf8f602c',
'f25': '76f9d8c8e87eed0aab91034b01d3d5ff6bd5b4cb'}
original_refs = ["f23", "f24", "f25"]
def mocked_get_latest(branch = "master"):
return hashes_returned[branch]
mocked_scm.return_value.get_latest = mocked_get_latest
mmd = modulemd.ModuleMetadata()
with open(path.join(BASE_DIR, '..', 'staged_data', 'testmodule.yaml')) \
as mmd_file:
@@ -96,11 +100,6 @@ class TestUtils(unittest.TestCase):
'?#620ec77321b2ea7b0d67d82992dda3e1d67055b4')
module_build_service.utils.format_mmd(mmd, scmurl)
# Make sure all the commit hashes were properly set in xmd section
# of modulemd.
xmd_pkg_refs = [pkg['ref'] for pkg in mmd.xmd['mbs']['rpms'].values()]
self.assertEqual(set(xmd_pkg_refs), set(hashes_returned))
# Make sure that original refs are not changed.
mmd_pkg_refs = [pkg.ref for pkg in mmd.components.rpms.values()]
self.assertEqual(set(mmd_pkg_refs), set(original_refs))
@@ -121,6 +120,7 @@ class TestUtils(unittest.TestCase):
'.git?#620ec77321b2ea7b0d67d82992dda3e1d67055b4',
}
}
self.assertEqual(mmd.xmd, xmd)
@vcr.use_cassette(
@@ -128,10 +128,13 @@ class TestUtils(unittest.TestCase):
@patch('module_build_service.scm.SCM')
def test_format_mmd_empty_scmurl(self, mocked_scm):
# For all the RPMs in testmodule, get_latest is called
mocked_scm.return_value.get_latest.side_effect = [
'4ceea43add2366d8b8c5a622a2fb563b625b9abf',
'fbed359411a1baa08d4a88e0d12d426fbf8f602c',
'76f9d8c8e87eed0aab91034b01d3d5ff6bd5b4cb']
hashes_returned = {
'f24': '4ceea43add2366d8b8c5a622a2fb563b625b9abf',
'f23': 'fbed359411a1baa08d4a88e0d12d426fbf8f602c',
'f25': '76f9d8c8e87eed0aab91034b01d3d5ff6bd5b4cb'}
def mocked_get_latest(branch = "master"):
return hashes_returned[branch]
mocked_scm.return_value.get_latest = mocked_get_latest
mmd = modulemd.ModuleMetadata()
with open(path.join(BASE_DIR, '..', 'staged_data', 'testmodule.yaml')) \

View File

@@ -536,9 +536,9 @@ class TestViews(unittest.TestCase):
# Test that RPMs are properly merged in case of included modules in mmd.
xmd_rpms = {'ed': {'ref': '40bd001563'},
'perl-List-Compare': {'ref': '2ee8474e44'},
'tangerine': {'ref': '2ee8474e44'},
'tangerine': {'ref': 'd29d5c24b8'},
'file': {'ref': 'a2740663f8'},
'perl-Tangerine': {'ref': '2ee8474e44'}}
'perl-Tangerine': {'ref': '27785f9f05'}}
self.assertEqual(mmd.xmd['mbs']['rpms'], xmd_rpms)
@patch('module_build_service.auth.get_user', return_value=user)