Merge #1365 Allow components to be reused from module builds even if the buildrequires commit hashes changed for the changed-and-after rebuild strategy

This commit is contained in:
Jan Kaluža
2019-08-06 11:08:46 +00:00
9 changed files with 34 additions and 80 deletions

View File

@@ -210,7 +210,6 @@ def _populate_data(db_session, data_size=10, contexts=False, scratch=False):
unique_hash = hashlib.sha1(nsvc.encode('utf-8')).hexdigest()
build_one.build_context = unique_hash
build_one.runtime_context = unique_hash
build_one.ref_build_context = unique_hash
combined_hashes = "{0}:{1}".format(unique_hash, unique_hash)
build_one.context = hashlib.sha1(combined_hashes.encode("utf-8")).hexdigest()[:8]

View File

@@ -107,7 +107,6 @@ def reuse_component_init_data(db_session):
stream="master",
version='20170109091357',
state=BUILD_STATES["ready"],
ref_build_context="ac4de1c346dcf09ce77d38cd4e75094ec1c08eb0",
runtime_context="ac4de1c346dcf09ce77d38cd4e75094ec1c08eb0",
build_context="ac4de1c346dcf09ce77d38cd4e75094ec1c08eb1",
context="78e4a6fd",
@@ -208,7 +207,6 @@ def reuse_component_init_data(db_session):
stream="master",
version='20170219191323',
state=BUILD_STATES["build"],
ref_build_context="ac4de1c346dcf09ce77d38cd4e75094ec1c08eb0",
runtime_context="ac4de1c346dcf09ce77d38cd4e75094ec1c08eb0",
build_context="ac4de1c346dcf09ce77d38cd4e75094ec1c08eb1",
context="c40c156c",

View File

@@ -1144,7 +1144,6 @@ class TestBuild(BaseTestBuild):
build_one.stream = "master"
build_one.version = "2820180205135154"
build_one.build_context = "return_runtime_context"
build_one.ref_build_context = "return_runtime_context"
build_one.runtime_context = "9c690d0e"
build_one.context = "9c690d0e"
build_one.state = models.BUILD_STATES["failed"]
@@ -1283,7 +1282,6 @@ class TestBuild(BaseTestBuild):
build_one.stream = "master"
build_one.version = "2820180205135154"
build_one.build_context = "return_runtime_context"
build_one.ref_build_context = "return_runtime_context"
build_one.runtime_context = "9c690d0e"
build_one.state = models.BUILD_STATES["failed"]
# this is not calculated by real but just a value to

View File

@@ -67,13 +67,8 @@ class TestModels:
build = ModuleBuild.get_by_id(db_session, 1)
db_session.commit()
build.modulemd = read_staged_data("testmodule_dependencies")
(
build.ref_build_context,
build.build_context,
build.runtime_context,
build.context,
) = ModuleBuild.contexts_from_mmd(build.modulemd)
assert build.ref_build_context == "f6e2aeec7576196241b9afa0b6b22acf2b6873d7"
build.build_context, build.runtime_context, build.context = \
ModuleBuild.contexts_from_mmd(build.modulemd)
assert build.build_context == "089df24993c037e10174f3fa7342ab4dc191a4d4"
assert build.runtime_context == "bbc84c7b817ab3dd54916c0bcd6c6bdf512f7f9c"
assert build.context == "3ee22b28"

View File

@@ -187,40 +187,6 @@ class TestUtilsComponentReuse:
db_session, second_module_build, "tangerine")
assert bool(tangerine is None) != bool(set_current_arch == set_database_arch)
@pytest.mark.parametrize("rebuild_strategy", models.ModuleBuild.rebuild_strategies.keys())
def test_get_reusable_component_different_buildrequires_hash(
self, rebuild_strategy, db_session
):
first_module_build = models.ModuleBuild.get_by_id(db_session, 2)
first_module_build.rebuild_strategy = rebuild_strategy
db_session.commit()
second_module_build = models.ModuleBuild.get_by_id(db_session, 3)
mmd = second_module_build.mmd()
xmd = mmd.get_xmd()
xmd["mbs"]["buildrequires"]["platform"]["ref"] = "da39a3ee5e6b4b0d3255bfef95601890afd80709"
mmd.set_xmd(xmd)
second_module_build.modulemd = mmd_to_str(mmd)
second_module_build.ref_build_context = "37c6c57bedf4305ef41249c1794760b5cb8fad17"
second_module_build.rebuild_strategy = rebuild_strategy
db_session.commit()
plc_rv = module_build_service.utils.get_reusable_component(
db_session, second_module_build, "perl-List-Compare")
pt_rv = module_build_service.utils.get_reusable_component(
db_session, second_module_build, "perl-Tangerine")
tangerine_rv = module_build_service.utils.get_reusable_component(
db_session, second_module_build, "tangerine")
if rebuild_strategy == "only-changed":
assert plc_rv is not None
assert pt_rv is not None
assert tangerine_rv is not None
else:
assert plc_rv is None
assert pt_rv is None
assert tangerine_rv is None
@pytest.mark.parametrize("rebuild_strategy", models.ModuleBuild.rebuild_strategies.keys())
def test_get_reusable_component_different_buildrequires_stream(
self, rebuild_strategy, db_session
@@ -273,7 +239,8 @@ class TestUtilsComponentReuse:
}
mmd.set_xmd(xmd)
second_module_build.modulemd = mmd_to_str(mmd)
second_module_build.ref_build_context = "37c6c57bedf4305ef41249c1794760b5cb8fad17"
second_module_build.build_context = models.ModuleBuild.calculate_build_context(
xmd["mbs"]["buildrequires"])
db_session.commit()
plc_rv = module_build_service.utils.get_reusable_component(