mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-02-03 13:13:27 +08:00
Reuse ModuleBuild.get_by_id
Signed-off-by: Chenxiong Qi <cqi@redhat.com>
This commit is contained in:
@@ -368,7 +368,7 @@ def scheduler_init_data(db_session, tangerine_state=None, scratch=False):
|
||||
db_session.add(module_build)
|
||||
db_session.commit()
|
||||
|
||||
platform_br = db_session.query(module_build_service.models.ModuleBuild).get(1)
|
||||
platform_br = module_build_service.models.ModuleBuild.get_by_id(db_session, 1)
|
||||
module_build.buildrequires.append(platform_br)
|
||||
|
||||
arch = db_session.query(module_build_service.models.ModuleArch).get(1)
|
||||
@@ -477,7 +477,7 @@ def reuse_component_init_data():
|
||||
db.session.commit()
|
||||
db.session.refresh(build_one)
|
||||
|
||||
platform_br = module_build_service.models.ModuleBuild.query.get(1)
|
||||
platform_br = module_build_service.models.ModuleBuild.get_by_id(db.session, 1)
|
||||
build_one.buildrequires.append(platform_br)
|
||||
|
||||
arch = module_build_service.models.ModuleArch.query.get(1)
|
||||
|
||||
@@ -1650,7 +1650,7 @@ class TestBuild(BaseTestBuild):
|
||||
|
||||
# Simulate a random repo regen message that MBS didn't expect
|
||||
cleanup_moksha()
|
||||
module = db_session.query(models.ModuleBuild).get(module_build_id)
|
||||
module = models.ModuleBuild.get_by_id(db_session, module_build_id)
|
||||
msgs = [
|
||||
module_build_service.messaging.KojiRepoChange(
|
||||
msg_id="a faked internal message", repo_tag=module.koji_tag + "-build"
|
||||
|
||||
@@ -136,7 +136,7 @@ class TestKojiBuilder:
|
||||
"/module-base-runtime-0.25-9/latest/x86_64"
|
||||
)
|
||||
|
||||
def test_recover_orphaned_artifact_when_tagged(self):
|
||||
def test_recover_orphaned_artifact_when_tagged(self, db_session):
|
||||
""" Test recover_orphaned_artifact when the artifact is found and tagged in both tags
|
||||
"""
|
||||
builder = FakeKojiModuleBuilder(
|
||||
@@ -154,7 +154,7 @@ class TestKojiBuilder:
|
||||
build_tagged = [{"nvr": "foo-1.0-1.module+e0095747", "task_id": 12345, "build_id": 91}]
|
||||
dest_tagged = [{"nvr": "foo-1.0-1.module+e0095747", "task_id": 12345, "build_id": 91}]
|
||||
builder.koji_session.listTagged.side_effect = [build_tagged, dest_tagged]
|
||||
module_build = module_build_service.models.ModuleBuild.query.get(4)
|
||||
module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 4)
|
||||
component_build = module_build.component_builds[0]
|
||||
component_build.task_id = None
|
||||
component_build.state = None
|
||||
@@ -181,7 +181,7 @@ class TestKojiBuilder:
|
||||
assert component_build.state_reason == "Found existing build"
|
||||
assert builder.koji_session.tagBuild.call_count == 0
|
||||
|
||||
def test_recover_orphaned_artifact_when_untagged(self):
|
||||
def test_recover_orphaned_artifact_when_untagged(self, db_session):
|
||||
""" Tests recover_orphaned_artifact when the build is found but untagged
|
||||
"""
|
||||
builder = FakeKojiModuleBuilder(
|
||||
@@ -203,7 +203,7 @@ class TestKojiBuilder:
|
||||
builder.koji_session.untaggedBuilds.return_value = untagged
|
||||
build_info = {"nvr": "foo-1.0-1.{0}".format(dist_tag), "task_id": 12345, "build_id": 91}
|
||||
builder.koji_session.getBuild.return_value = build_info
|
||||
module_build = module_build_service.models.ModuleBuild.query.get(4)
|
||||
module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 4)
|
||||
component_build = module_build.component_builds[0]
|
||||
component_build.task_id = None
|
||||
component_build.nvr = None
|
||||
@@ -224,7 +224,7 @@ class TestKojiBuilder:
|
||||
assert component_build.state_reason == "Found existing build"
|
||||
builder.koji_session.tagBuild.assert_called_once_with(2, "foo-1.0-1.{0}".format(dist_tag))
|
||||
|
||||
def test_recover_orphaned_artifact_when_nothing_exists(self):
|
||||
def test_recover_orphaned_artifact_when_nothing_exists(self, db_session):
|
||||
""" Test recover_orphaned_artifact when the build is not found
|
||||
"""
|
||||
builder = FakeKojiModuleBuilder(
|
||||
@@ -243,7 +243,7 @@ class TestKojiBuilder:
|
||||
builder.koji_session.listTagged.return_value = tagged
|
||||
untagged = [{"nvr": "foo-1.0-1.nope", "release": "nope"}]
|
||||
builder.koji_session.untaggedBuilds.return_value = untagged
|
||||
module_build = module_build_service.models.ModuleBuild.query.get(4)
|
||||
module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 4)
|
||||
component_build = module_build.component_builds[0]
|
||||
component_build.task_id = None
|
||||
component_build.nvr = None
|
||||
@@ -729,7 +729,9 @@ class TestKojiBuilder:
|
||||
),
|
||||
)
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession")
|
||||
def test_get_filtered_rpms_on_self_dep(self, ClientSession, br_filtered_rpms, expected):
|
||||
def test_get_filtered_rpms_on_self_dep(
|
||||
self, ClientSession, br_filtered_rpms, expected, db_session
|
||||
):
|
||||
session = ClientSession.return_value
|
||||
session.listTaggedRPMS.return_value = (
|
||||
[
|
||||
@@ -774,7 +776,7 @@ class TestKojiBuilder:
|
||||
],
|
||||
)
|
||||
reuse_component_init_data()
|
||||
current_module = module_build_service.models.ModuleBuild.query.get(3)
|
||||
current_module = module_build_service.models.ModuleBuild.get_by_id(db_session, 3)
|
||||
rv = KojiModuleBuilder._get_filtered_rpms_on_self_dep(current_module, br_filtered_rpms)
|
||||
assert set(rv) == set(expected)
|
||||
session.assert_not_called()
|
||||
|
||||
@@ -77,20 +77,19 @@ class TestModels:
|
||||
assert build.runtime_context == "bbc84c7b817ab3dd54916c0bcd6c6bdf512f7f9c"
|
||||
assert build.context == "3ee22b28"
|
||||
|
||||
def test_siblings_property(self):
|
||||
def test_siblings_property(self, db_session):
|
||||
""" Tests that the siblings property returns the ID of all modules with
|
||||
the same name:stream:version
|
||||
"""
|
||||
clean_database()
|
||||
mmd = load_mmd(read_staged_data("formatted_testmodule"))
|
||||
with make_session(conf) as session:
|
||||
for i in range(3):
|
||||
build = module_build_from_modulemd(mmd_to_str(mmd))
|
||||
build.build_context = "f6e2aeec7576196241b9afa0b6b22acf2b6873d" + str(i)
|
||||
build.runtime_context = "bbc84c7b817ab3dd54916c0bcd6c6bdf512f7f9c" + str(i)
|
||||
session.add(build)
|
||||
session.commit()
|
||||
build_one = ModuleBuild.query.get(2)
|
||||
for i in range(3):
|
||||
build = module_build_from_modulemd(mmd_to_str(mmd))
|
||||
build.build_context = "f6e2aeec7576196241b9afa0b6b22acf2b6873d" + str(i)
|
||||
build.runtime_context = "bbc84c7b817ab3dd54916c0bcd6c6bdf512f7f9c" + str(i)
|
||||
db_session.add(build)
|
||||
db_session.commit()
|
||||
build_one = ModuleBuild.get_by_id(db_session, 2)
|
||||
assert build_one.siblings == [3, 4]
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
||||
@@ -90,15 +90,15 @@ class TestDBModule:
|
||||
assert nsvcs == set(["platform:f29.1.0:3:00000000"])
|
||||
|
||||
@pytest.mark.parametrize("empty_buildrequires", [False, True])
|
||||
def test_get_module_build_dependencies(self, empty_buildrequires):
|
||||
def test_get_module_build_dependencies(self, empty_buildrequires, db_session):
|
||||
"""
|
||||
Tests that the buildrequires of testmodule are returned
|
||||
"""
|
||||
expected = set(["module-f28-build"])
|
||||
module = models.ModuleBuild.query.get(2)
|
||||
module = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
if empty_buildrequires:
|
||||
expected = set()
|
||||
module = models.ModuleBuild.query.get(2)
|
||||
module = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
mmd = module.mmd()
|
||||
# Wipe out the dependencies
|
||||
mmd.clear_dependencies()
|
||||
@@ -106,19 +106,18 @@ class TestDBModule:
|
||||
xmd["mbs"]["buildrequires"] = {}
|
||||
mmd.set_xmd(xmd)
|
||||
module.modulemd = mmd_to_str(mmd)
|
||||
db.session.add(module)
|
||||
db.session.commit()
|
||||
db_session.commit()
|
||||
resolver = mbs_resolver.GenericResolver.create(tests.conf, backend="db")
|
||||
result = resolver.get_module_build_dependencies(
|
||||
"testmodule", "master", "20170109091357", "78e4a6fd").keys()
|
||||
assert set(result) == expected
|
||||
|
||||
def test_get_module_build_dependencies_recursive(self):
|
||||
def test_get_module_build_dependencies_recursive(self, db_session):
|
||||
"""
|
||||
Tests that the buildrequires are returned when it is two layers deep
|
||||
"""
|
||||
# Add testmodule2 that requires testmodule
|
||||
module = models.ModuleBuild.query.get(3)
|
||||
module = models.ModuleBuild.get_by_id(db_session, 3)
|
||||
mmd = module.mmd()
|
||||
# Rename the module
|
||||
mmd = mmd.copy("testmodule2")
|
||||
@@ -139,8 +138,7 @@ class TestDBModule:
|
||||
module.version = str(mmd.get_version())
|
||||
module.koji_tag = "module-ae2adf69caf0e1b6"
|
||||
|
||||
db.session.add(module)
|
||||
db.session.commit()
|
||||
db_session.commit()
|
||||
|
||||
resolver = mbs_resolver.GenericResolver.create(tests.conf, backend="db")
|
||||
result = resolver.get_module_build_dependencies(
|
||||
@@ -171,8 +169,8 @@ class TestDBModule:
|
||||
expected = [os.path.join(local_path, "module-parent-master-20170816080815/results")]
|
||||
assert set(result) == set(expected)
|
||||
|
||||
def test_resolve_requires(self):
|
||||
build = models.ModuleBuild.query.get(2)
|
||||
def test_resolve_requires(self, db_session):
|
||||
build = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
resolver = mbs_resolver.GenericResolver.create(tests.conf, backend="db")
|
||||
result = resolver.resolve_requires(
|
||||
[":".join([build.name, build.stream, build.version, build.context])]
|
||||
@@ -188,11 +186,11 @@ class TestDBModule:
|
||||
}
|
||||
}
|
||||
|
||||
def test_resolve_profiles(self):
|
||||
def test_resolve_profiles(self, db_session):
|
||||
"""
|
||||
Tests that the profiles get resolved recursively
|
||||
"""
|
||||
mmd = models.ModuleBuild.query.get(2).mmd()
|
||||
mmd = models.ModuleBuild.get_by_id(db_session, 2).mmd()
|
||||
resolver = mbs_resolver.GenericResolver.create(tests.conf, backend="db")
|
||||
result = resolver.resolve_profiles(mmd, ("buildroot", "srpm-buildroot"))
|
||||
expected = {
|
||||
@@ -242,17 +240,16 @@ class TestDBModule:
|
||||
new_callable=PropertyMock,
|
||||
return_value=tests.staged_data_filename("local_builds")
|
||||
)
|
||||
def test_resolve_profiles_local_module(self, local_builds, conf_system):
|
||||
def test_resolve_profiles_local_module(self, local_builds, conf_system, db_session):
|
||||
"""
|
||||
Test that profiles get resolved recursively on local builds
|
||||
"""
|
||||
with app.app_context():
|
||||
utils.load_local_builds(["platform"])
|
||||
mmd = models.ModuleBuild.query.get(2).mmd()
|
||||
resolver = mbs_resolver.GenericResolver.create(tests.conf, backend="mbs")
|
||||
result = resolver.resolve_profiles(mmd, ("buildroot", "srpm-buildroot"))
|
||||
expected = {"buildroot": set(["foo"]), "srpm-buildroot": set(["bar"])}
|
||||
assert result == expected
|
||||
utils.load_local_builds(["platform"])
|
||||
mmd = models.ModuleBuild.get_by_id(db_session, 2).mmd()
|
||||
resolver = mbs_resolver.GenericResolver.create(tests.conf, backend="mbs")
|
||||
result = resolver.resolve_profiles(mmd, ("buildroot", "srpm-buildroot"))
|
||||
expected = {"buildroot": set(["foo"]), "srpm-buildroot": set(["bar"])}
|
||||
assert result == expected
|
||||
|
||||
def test_get_latest_with_virtual_stream(self):
|
||||
tests.init_data(1, multiple_stream_versions=True)
|
||||
|
||||
@@ -27,7 +27,7 @@ from tests import conf, clean_database, read_staged_data
|
||||
from tests.test_views.test_views import FakeSCM
|
||||
import module_build_service.messaging
|
||||
import module_build_service.scheduler.handlers.modules
|
||||
from module_build_service import build_logs, db
|
||||
from module_build_service import build_logs
|
||||
from module_build_service.models import make_session, ModuleBuild, ComponentBuild
|
||||
from module_build_service.utils.general import mmd_to_str, load_mmd
|
||||
|
||||
@@ -59,7 +59,7 @@ class TestModuleInit:
|
||||
@patch("module_build_service.scm.SCM")
|
||||
@patch("module_build_service.scheduler.handlers.modules.handle_stream_collision_modules")
|
||||
@patch("module_build_service.utils.submit.get_build_arches", return_value=["x86_64"])
|
||||
def test_init_basic(self, get_build_arches, rscm, mocked_scm, built_rpms):
|
||||
def init_basic(self, db_session, get_build_arches, rscm, mocked_scm, built_rpms):
|
||||
FakeSCM(
|
||||
mocked_scm,
|
||||
"testmodule",
|
||||
@@ -76,22 +76,23 @@ class TestModuleInit:
|
||||
"x-debuginfo-0:2.5.48-3.el8+1308+551bfa71",
|
||||
]
|
||||
|
||||
platform_build = ModuleBuild.query.get(1)
|
||||
platform_build = ModuleBuild.get_by_id(db_session, 1)
|
||||
mmd = platform_build.mmd()
|
||||
for rpm in mmd.get_rpm_filters():
|
||||
mmd.remove_rpm_filter(rpm)
|
||||
mmd.add_rpm_filter("foo")
|
||||
mmd.add_rpm_filter("bar")
|
||||
|
||||
platform_build.modulemd = mmd_to_str(mmd)
|
||||
db.session.commit()
|
||||
db_session.commit()
|
||||
|
||||
msg = module_build_service.messaging.MBSModule(
|
||||
msg_id=None, module_build_id=2, module_build_state="init"
|
||||
)
|
||||
|
||||
with make_session(conf) as session:
|
||||
self.fn(config=conf, session=session, msg=msg)
|
||||
build = ModuleBuild.query.filter_by(id=2).one()
|
||||
self.fn(config=conf, session=db_session, msg=msg)
|
||||
|
||||
build = ModuleBuild.get_by_id(db_session, 2)
|
||||
# Make sure the module entered the wait state
|
||||
assert build.state == 1, build.state
|
||||
# Make sure format_mmd was run properly
|
||||
@@ -102,15 +103,15 @@ class TestModuleInit:
|
||||
]
|
||||
return build
|
||||
|
||||
def test_init_called_twice(self):
|
||||
build = self.test_init_basic()
|
||||
def test_init_called_twice(self, db_session):
|
||||
build = self.init_basic(db_session)
|
||||
old_component_builds = len(build.component_builds)
|
||||
old_mmd = load_mmd(build.modulemd)
|
||||
|
||||
build.state = 4
|
||||
db.session.commit()
|
||||
build = self.test_init_basic()
|
||||
db.session.refresh(build)
|
||||
db_session.commit()
|
||||
build = self.init_basic(db_session)
|
||||
db_session.refresh(build)
|
||||
|
||||
assert build.state == 1
|
||||
assert old_component_builds == len(build.component_builds)
|
||||
|
||||
@@ -442,28 +442,29 @@ class TestPoller:
|
||||
# Ensure we did *not* process any of the non-waiting builds.
|
||||
assert consumer.incoming.qsize() == 0
|
||||
|
||||
def test_cleanup_stale_failed_builds(self, create_builder, global_consumer, dbg):
|
||||
def test_cleanup_stale_failed_builds(self, create_builder, global_consumer, dbg, db_session):
|
||||
""" Test that one of the two module builds gets to the garbage state when running
|
||||
cleanup_stale_failed_builds.
|
||||
"""
|
||||
builder = mock.MagicMock()
|
||||
create_builder.return_value = builder
|
||||
module_build_one = models.ModuleBuild.query.get(2)
|
||||
module_build_two = models.ModuleBuild.query.get(3)
|
||||
|
||||
module_build_one = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
module_build_one.state = models.BUILD_STATES["failed"]
|
||||
module_build_one.time_modified = datetime.utcnow() - timedelta(
|
||||
days=conf.cleanup_failed_builds_time + 1)
|
||||
|
||||
module_build_two = models.ModuleBuild.get_by_id(db_session, 3)
|
||||
module_build_two.time_modified = datetime.utcnow()
|
||||
module_build_two.state = models.BUILD_STATES["failed"]
|
||||
failed_component = models.ComponentBuild.query.filter_by(
|
||||
|
||||
failed_component = db_session.query(models.ComponentBuild).filter_by(
|
||||
package="tangerine", module_id=3).one()
|
||||
failed_component.state = koji.BUILD_STATES["FAILED"]
|
||||
failed_component.tagged = False
|
||||
failed_component.tagged_in_final = False
|
||||
db.session.add(failed_component)
|
||||
db.session.add(module_build_one)
|
||||
db.session.add(module_build_two)
|
||||
db.session.commit()
|
||||
|
||||
db_session.commit()
|
||||
|
||||
consumer = mock.MagicMock()
|
||||
consumer.incoming = queue.Queue()
|
||||
@@ -473,8 +474,8 @@ class TestPoller:
|
||||
|
||||
# Ensure the queue is empty before we start
|
||||
assert consumer.incoming.qsize() == 0
|
||||
poller.cleanup_stale_failed_builds(conf, db.session)
|
||||
db.session.refresh(module_build_two)
|
||||
poller.cleanup_stale_failed_builds(conf, db_session)
|
||||
db_session.refresh(module_build_two)
|
||||
# Make sure module_build_one was transitioned to garbage
|
||||
assert module_build_one.state == models.BUILD_STATES["garbage"]
|
||||
state_reason = (
|
||||
@@ -496,25 +497,27 @@ class TestPoller:
|
||||
"module-build-macros-0.1-1.module+0+d027b723",
|
||||
])
|
||||
|
||||
def test_cleanup_stale_failed_builds_no_components(self, create_builder, global_consumer, dbg):
|
||||
def test_cleanup_stale_failed_builds_no_components(
|
||||
self, create_builder, global_consumer, dbg, db_session
|
||||
):
|
||||
""" Test that a module build without any components built gets to the garbage state when
|
||||
running cleanup_stale_failed_builds.
|
||||
"""
|
||||
module_build_one = models.ModuleBuild.query.get(1)
|
||||
module_build_two = models.ModuleBuild.query.get(2)
|
||||
module_build_one = models.ModuleBuild.get_by_id(db_session, 1)
|
||||
module_build_one.state = models.BUILD_STATES["failed"]
|
||||
module_build_one.time_modified = datetime.utcnow()
|
||||
|
||||
module_build_two = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
module_build_two.state = models.BUILD_STATES["failed"]
|
||||
module_build_two.time_modified = datetime.utcnow() - timedelta(
|
||||
days=conf.cleanup_failed_builds_time + 1)
|
||||
module_build_two.koji_tag = None
|
||||
module_build_two.cg_build_koji_tag = None
|
||||
|
||||
for c in module_build_two.component_builds:
|
||||
c.state = None
|
||||
db.session.add(c)
|
||||
db.session.add(module_build_one)
|
||||
db.session.add(module_build_two)
|
||||
db.session.commit()
|
||||
|
||||
db_session.commit()
|
||||
|
||||
consumer = mock.MagicMock()
|
||||
consumer.incoming = queue.Queue()
|
||||
@@ -524,8 +527,8 @@ class TestPoller:
|
||||
|
||||
# Ensure the queue is empty before we start
|
||||
assert consumer.incoming.qsize() == 0
|
||||
poller.cleanup_stale_failed_builds(conf, db.session)
|
||||
db.session.refresh(module_build_two)
|
||||
poller.cleanup_stale_failed_builds(conf, db_session)
|
||||
db_session.refresh(module_build_two)
|
||||
# Make sure module_build_two was transitioned to garbage
|
||||
assert module_build_two.state == models.BUILD_STATES["garbage"]
|
||||
state_reason = (
|
||||
@@ -541,24 +544,26 @@ class TestPoller:
|
||||
@pytest.mark.parametrize(
|
||||
"test_state", [models.BUILD_STATES[state] for state in conf.cleanup_stuck_builds_states]
|
||||
)
|
||||
def test_cancel_stuck_module_builds(self, create_builder, global_consumer, dbg, test_state):
|
||||
def test_cancel_stuck_module_builds(
|
||||
self, create_builder, global_consumer, dbg, test_state, db_session
|
||||
):
|
||||
|
||||
module_build1 = models.ModuleBuild.query.get(1)
|
||||
module_build1 = models.ModuleBuild.get_by_id(db_session, 1)
|
||||
module_build1.state = test_state
|
||||
under_thresh = conf.cleanup_stuck_builds_time - 1
|
||||
module_build1.time_modified = datetime.utcnow() - timedelta(
|
||||
days=under_thresh, hours=23, minutes=59)
|
||||
|
||||
module_build2 = models.ModuleBuild.query.get(2)
|
||||
module_build2 = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
module_build2.state = test_state
|
||||
module_build2.time_modified = datetime.utcnow() - timedelta(
|
||||
days=conf.cleanup_stuck_builds_time)
|
||||
|
||||
module_build2 = models.ModuleBuild.query.get(3)
|
||||
module_build2 = models.ModuleBuild.get_by_id(db_session, 3)
|
||||
module_build2.state = test_state
|
||||
module_build2.time_modified = datetime.utcnow()
|
||||
|
||||
db.session.commit()
|
||||
db_session.commit()
|
||||
|
||||
consumer = mock.MagicMock()
|
||||
consumer.incoming = queue.Queue()
|
||||
@@ -568,9 +573,9 @@ class TestPoller:
|
||||
|
||||
assert consumer.incoming.qsize() == 0
|
||||
|
||||
poller.cancel_stuck_module_builds(conf, db.session)
|
||||
poller.cancel_stuck_module_builds(conf, db_session)
|
||||
|
||||
module = models.ModuleBuild.query.filter_by(state=4).all()
|
||||
module = db_session.query(models.ModuleBuild).filter_by(state=4).all()
|
||||
assert len(module) == 1
|
||||
assert module[0].id == 2
|
||||
|
||||
@@ -634,18 +639,20 @@ class TestPoller:
|
||||
|
||||
@pytest.mark.parametrize("greenwave_result", [True, False])
|
||||
@patch("module_build_service.utils.greenwave.Greenwave.check_gating")
|
||||
def test_poll_greenwave(self, mock_gw, create_builder, global_consumer, dbg, greenwave_result):
|
||||
def test_poll_greenwave(
|
||||
self, mock_gw, create_builder, global_consumer, dbg, greenwave_result, db_session
|
||||
):
|
||||
|
||||
module_build1 = models.ModuleBuild.query.get(1)
|
||||
module_build1 = models.ModuleBuild.get_by_id(db_session, 1)
|
||||
module_build1.state = models.BUILD_STATES["ready"]
|
||||
|
||||
module_build2 = models.ModuleBuild.query.get(2)
|
||||
module_build2 = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
module_build2.state = models.BUILD_STATES["done"]
|
||||
|
||||
module_build2 = models.ModuleBuild.query.get(3)
|
||||
module_build2 = models.ModuleBuild.get_by_id(db_session, 3)
|
||||
module_build2.state = models.BUILD_STATES["init"]
|
||||
|
||||
db.session.commit()
|
||||
db_session.commit()
|
||||
|
||||
consumer = mock.MagicMock()
|
||||
consumer.incoming = queue.Queue()
|
||||
|
||||
@@ -122,15 +122,15 @@ class TestRepoDone:
|
||||
|
||||
# Ensure the time_completed is None, so we can test it is set to
|
||||
# some date once the build is finalized.
|
||||
module_build = module_build_service.models.ModuleBuild.query.get(2)
|
||||
module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 2)
|
||||
module_build.time_completed = None
|
||||
db.session.commit()
|
||||
db_session.commit()
|
||||
|
||||
def mocked_finalizer(succeeded=None):
|
||||
# Check that the time_completed is set in the time when
|
||||
# finalizer is called.
|
||||
assert succeeded is True
|
||||
module_build = db_session.query(module_build_service.models.ModuleBuild).get(2)
|
||||
module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 2)
|
||||
assert module_build.time_completed is not None
|
||||
|
||||
finalizer.side_effect = mocked_finalizer
|
||||
@@ -207,7 +207,7 @@ class TestRepoDone:
|
||||
mock_log_info.assert_called_with(
|
||||
"Ignoring repo regen, because not all components are tagged."
|
||||
)
|
||||
module_build = module_build_service.models.ModuleBuild.query.get(2)
|
||||
module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 2)
|
||||
# Make sure the module build didn't transition since all the components weren't tagged
|
||||
assert module_build.state == module_build_service.models.BUILD_STATES["build"]
|
||||
|
||||
@@ -242,6 +242,6 @@ class TestRepoDone:
|
||||
msg = module_build_service.messaging.KojiRepoChange(
|
||||
"some_msg_id", "module-testmodule-master-20170109091357-7c29193d-build")
|
||||
module_build_service.scheduler.handlers.repos.done(config=conf, session=db_session, msg=msg)
|
||||
module_build = module_build_service.models.ModuleBuild.query.get(2)
|
||||
module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 2)
|
||||
|
||||
assert module_build.state == module_build_service.models.BUILD_STATES["failed"]
|
||||
|
||||
@@ -436,18 +436,20 @@ class TestUtils:
|
||||
else:
|
||||
module_build_service.utils.import_mmd(db.session, mmd)
|
||||
|
||||
def test_get_rpm_release_mse(self):
|
||||
def test_get_rpm_release_mse(self, db_session):
|
||||
init_data(contexts=True)
|
||||
build_one = models.ModuleBuild.query.get(2)
|
||||
build_two = models.ModuleBuild.query.get(3)
|
||||
|
||||
build_one = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
release_one = module_build_service.utils.get_rpm_release(build_one)
|
||||
release_two = module_build_service.utils.get_rpm_release(build_two)
|
||||
assert release_one == "module+2+b8645bbb"
|
||||
|
||||
build_two = models.ModuleBuild.get_by_id(db_session, 3)
|
||||
release_two = module_build_service.utils.get_rpm_release(build_two)
|
||||
assert release_two == "module+2+17e35784"
|
||||
|
||||
def test_get_rpm_release_platform_stream(self, db_session):
|
||||
scheduler_init_data(db_session, 1)
|
||||
build_one = db_session.query(models.ModuleBuild).get(2)
|
||||
build_one = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
release = module_build_service.utils.get_rpm_release(build_one)
|
||||
assert release == "module+f28+2+814cfa39"
|
||||
|
||||
@@ -468,7 +470,7 @@ class TestUtils:
|
||||
db_session.add(platform)
|
||||
db_session.commit()
|
||||
|
||||
build_one = db_session.query(models.ModuleBuild).get(2)
|
||||
build_one = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
release = module_build_service.utils.get_rpm_release(build_one)
|
||||
assert release == "module+fedora28+2+814cfa39"
|
||||
|
||||
@@ -486,7 +488,7 @@ class TestUtils:
|
||||
metadata_mmd = load_mmd(read_staged_data("build_metadata_module"))
|
||||
module_build_service.utils.import_mmd(db_session, metadata_mmd)
|
||||
|
||||
build_one = db_session.query(models.ModuleBuild).get(2)
|
||||
build_one = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
mmd = build_one.mmd()
|
||||
deps = mmd.get_dependencies()[0]
|
||||
deps.add_buildtime_stream("build", "product1.2")
|
||||
@@ -506,18 +508,20 @@ class TestUtils:
|
||||
release = module_build_service.utils.get_rpm_release(build_one)
|
||||
assert release == "module+product12+2+814cfa39"
|
||||
|
||||
def test_get_rpm_release_mse_scratch(self):
|
||||
def test_get_rpm_release_mse_scratch(self, db_session):
|
||||
init_data(contexts=True, scratch=True)
|
||||
build_one = models.ModuleBuild.query.get(2)
|
||||
build_two = models.ModuleBuild.query.get(3)
|
||||
|
||||
build_one = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
release_one = module_build_service.utils.get_rpm_release(build_one)
|
||||
release_two = module_build_service.utils.get_rpm_release(build_two)
|
||||
assert release_one == "scrmod+2+b8645bbb"
|
||||
|
||||
build_two = models.ModuleBuild.get_by_id(db_session, 3)
|
||||
release_two = module_build_service.utils.get_rpm_release(build_two)
|
||||
assert release_two == "scrmod+2+17e35784"
|
||||
|
||||
def test_get_rpm_release_platform_stream_scratch(self, db_session):
|
||||
scheduler_init_data(db_session, 1, scratch=True)
|
||||
build_one = db_session.query(models.ModuleBuild).get(2)
|
||||
build_one = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
release = module_build_service.utils.get_rpm_release(build_one)
|
||||
assert release == "scrmod+f28+2+814cfa39"
|
||||
|
||||
@@ -525,7 +529,7 @@ class TestUtils:
|
||||
def test_record_module_build_arches(self, get_build_arches, db_session):
|
||||
get_build_arches.return_value = ["x86_64", "i686"]
|
||||
scheduler_init_data(db_session, 1)
|
||||
build = db_session.query(models.ModuleBuild).get(2)
|
||||
build = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
build.arches = []
|
||||
module_build_service.utils.record_module_build_arches(build.mmd(), build, db_session)
|
||||
|
||||
@@ -592,7 +596,7 @@ class TestUtils:
|
||||
mmd_xmd = mmd.get_xmd()
|
||||
assert mmd_xmd == xmd
|
||||
|
||||
def test_get_reusable_component_shared_userspace_ordering(self):
|
||||
def test_get_reusable_component_shared_userspace_ordering(self, db_session):
|
||||
"""
|
||||
For modules with lot of components per batch, there is big chance that
|
||||
the database will return them in different order than what we have for
|
||||
@@ -600,7 +604,7 @@ class TestUtils:
|
||||
reuse the components.
|
||||
"""
|
||||
reuse_shared_userspace_init_data()
|
||||
new_module = models.ModuleBuild.query.get(3)
|
||||
new_module = models.ModuleBuild.get_by_id(db_session, 3)
|
||||
rv = module_build_service.utils.get_reusable_component(db.session, new_module, "llvm")
|
||||
assert rv.package == "llvm"
|
||||
|
||||
@@ -830,24 +834,23 @@ class TestUtils:
|
||||
|
||||
@patch("module_build_service.scm.SCM")
|
||||
@patch("module_build_service.utils.submit.ThreadPool")
|
||||
def test_format_mmd_update_time_modified(self, tp, mocked_scm):
|
||||
with app.app_context():
|
||||
init_data()
|
||||
build = models.ModuleBuild.query.get(2)
|
||||
def test_format_mmd_update_time_modified(self, tp, mocked_scm, db_session):
|
||||
init_data()
|
||||
build = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
|
||||
async_result = mock.MagicMock()
|
||||
async_result.ready.side_effect = [False, False, False, True]
|
||||
tp.return_value.map_async.return_value = async_result
|
||||
async_result = mock.MagicMock()
|
||||
async_result.ready.side_effect = [False, False, False, True]
|
||||
tp.return_value.map_async.return_value = async_result
|
||||
|
||||
test_datetime = datetime(2019, 2, 14, 11, 11, 45, 42968)
|
||||
test_datetime = datetime(2019, 2, 14, 11, 11, 45, 42968)
|
||||
|
||||
mmd = load_mmd(read_staged_data("testmodule"))
|
||||
mmd = load_mmd(read_staged_data("testmodule"))
|
||||
|
||||
with patch("module_build_service.utils.submit.datetime") as dt:
|
||||
dt.utcnow.return_value = test_datetime
|
||||
module_build_service.utils.format_mmd(mmd, None, build, db.session)
|
||||
with patch("module_build_service.utils.submit.datetime") as dt:
|
||||
dt.utcnow.return_value = test_datetime
|
||||
module_build_service.utils.format_mmd(mmd, None, build, db_session)
|
||||
|
||||
assert build.time_modified == test_datetime
|
||||
assert build.time_modified == test_datetime
|
||||
|
||||
def test_generate_koji_tag_in_nsvc_format(self):
|
||||
name, stream, version, context = ("testmodule", "master", "20170816080815", "37c6c57")
|
||||
@@ -893,13 +896,13 @@ class TestUtils:
|
||||
|
||||
def test_get_prefixed_version_f28(self, db_session):
|
||||
scheduler_init_data(db_session, 1)
|
||||
build_one = db_session.query(models.ModuleBuild).get(2)
|
||||
build_one = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
v = module_build_service.utils.submit.get_prefixed_version(build_one.mmd())
|
||||
assert v == 2820180205135154
|
||||
|
||||
def test_get_prefixed_version_fl701(self, db_session):
|
||||
scheduler_init_data(db_session, 1)
|
||||
build_one = db_session.query(models.ModuleBuild).get(2)
|
||||
build_one = models.ModuleBuild.get_by_id(db_session, 2)
|
||||
mmd = build_one.mmd()
|
||||
xmd = mmd.get_xmd()
|
||||
xmd["mbs"]["buildrequires"]["platform"]["stream"] = "fl7.0.1-beta"
|
||||
|
||||
@@ -758,7 +758,7 @@ class TestViews:
|
||||
|
||||
def test_query_builds_order_by_multiple(self):
|
||||
init_data(data_size=1, multiple_stream_versions=True)
|
||||
platform_f28 = db.session.query(module_build_service.models.ModuleBuild).get(1)
|
||||
platform_f28 = module_build_service.models.ModuleBuild.get_by_id(db.session, 1)
|
||||
platform_f28.version = "150"
|
||||
db.session.add(platform_f28)
|
||||
db.session.commit()
|
||||
@@ -945,7 +945,7 @@ class TestViews:
|
||||
module_build_service.utils.load_mmd(data["modulemd"])
|
||||
|
||||
# Make sure the buildrequires entry was created
|
||||
module = ModuleBuild.query.get(8)
|
||||
module = ModuleBuild.get_by_id(db.session, 8)
|
||||
assert len(module.buildrequires) == 1
|
||||
assert module.buildrequires[0].name == "platform"
|
||||
assert module.buildrequires[0].stream == "f28"
|
||||
@@ -2082,7 +2082,7 @@ class TestViews:
|
||||
module_build_service.utils.load_mmd(data["modulemd"])
|
||||
|
||||
# Make sure the buildrequires entry was created
|
||||
module = ModuleBuild.query.get(8)
|
||||
module = ModuleBuild.get_by_id(db.session, 8)
|
||||
assert len(module.buildrequires) == 1
|
||||
assert module.buildrequires[0].name == "platform"
|
||||
assert module.buildrequires[0].stream == "f28"
|
||||
@@ -2178,7 +2178,7 @@ class TestViews:
|
||||
module_build_service.utils.load_mmd(data["modulemd"])
|
||||
|
||||
# Make sure the buildrequires entry was created
|
||||
module = ModuleBuild.query.get(8)
|
||||
module = ModuleBuild.get_by_id(db.session, 8)
|
||||
assert len(module.buildrequires) == 1
|
||||
assert module.buildrequires[0].name == "platform"
|
||||
assert module.buildrequires[0].stream == "f28"
|
||||
|
||||
Reference in New Issue
Block a user