mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-04-24 02:32:26 +08:00
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:
@@ -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]
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user