Remove config argument from event handlers

For the purpose of migrating to Celery to run event handler inside a
worker, Config object is not serializable. And from the usage of config
argument, every event handler can just access module_build_service.conf
directly. This removal would make the migration easier.

Signed-off-by: Chenxiong Qi <cqi@redhat.com>
This commit is contained in:
Chenxiong Qi
2019-10-29 16:19:50 +08:00
committed by mprahl
parent 9c76f27d78
commit e1581ac831
12 changed files with 92 additions and 125 deletions

View File

@@ -87,7 +87,7 @@ class MBSConsumer(fedmsg.consumers.FedmsgConsumer):
# These are our main lookup tables for figuring out what to run in
# response to what messaging events.
self.NO_OP = NO_OP = lambda config, msg: True
self.NO_OP = NO_OP = lambda msg: True
self.on_build_change = {
koji.BUILD_STATES["BUILDING"]: NO_OP,
koji.BUILD_STATES[
@@ -187,7 +187,7 @@ class MBSConsumer(fedmsg.consumers.FedmsgConsumer):
all_fns = list(self.on_build_change.items()) + list(self.on_module_change.items())
for key, callback in all_fns:
expected = ["config", "msg"]
expected = ["msg"]
if six.PY2:
argspec = inspect.getargspec(callback)[0]
else:
@@ -255,7 +255,7 @@ class MBSConsumer(fedmsg.consumers.FedmsgConsumer):
log.info("Calling %s", idx)
try:
further_work = handler(conf, msg) or []
further_work = handler(msg) or []
except Exception as e:
log.exception("Could not process message handler.")
db_session.rollback()

View File

@@ -6,7 +6,7 @@ import logging
import koji
import module_build_service.builder
from module_build_service import models, log
from module_build_service import conf, models, log
from module_build_service.builder.KojiModuleBuilder import KojiModuleBuilder
from module_build_service.scheduler import events
from module_build_service.utils.general import mmd_to_str
@@ -15,7 +15,7 @@ from module_build_service.db_session import db_session
logging.basicConfig(level=logging.DEBUG)
def _finalize(config, msg, state):
def _finalize(msg, state):
""" Called whenever a koji build completes or fails. """
# First, find our ModuleBuild associated with this component, if any.
@@ -50,7 +50,7 @@ def _finalize(config, msg, state):
if component_build.package == "module-build-macros" and state != koji.BUILD_STATES["COMPLETE"]:
parent.transition(
db_session,
config,
conf,
state=models.BUILD_STATES["failed"],
state_reason=state_reason,
failure_type="user",
@@ -60,10 +60,10 @@ def _finalize(config, msg, state):
if (
component_build.buildonly
and config.system in ["koji", "test"]
and conf.system in ["koji", "test"]
and state == koji.BUILD_STATES["COMPLETE"]
):
koji_session = KojiModuleBuilder.get_session(config)
koji_session = KojiModuleBuilder.get_session(conf)
rpms = koji_session.listBuildRPMs(component_build.nvr)
mmd = parent.mmd()
for artifact in rpms:
@@ -86,7 +86,7 @@ def _finalize(config, msg, state):
built_components_in_batch = [c for c in parent_current_batch if c.is_completed]
builder = module_build_service.builder.GenericBuilder.create_from_module(
db_session, parent, config
db_session, parent, conf
)
if failed_components_in_batch:
@@ -98,7 +98,7 @@ def _finalize(config, msg, state):
", ".join(c.package for c in failed_components_in_batch))
parent.transition(
db_session,
config,
conf,
state=models.BUILD_STATES["failed"],
state_reason=state_reason,
failure_type="user",
@@ -149,20 +149,20 @@ def _finalize(config, msg, state):
# build, try to call continue_batch_build again so in case we hit the
# threshold previously, we will submit another build from this batch.
builder = module_build_service.builder.GenericBuilder.create_from_module(
db_session, parent, config)
db_session, parent, conf)
further_work += module_build_service.utils.continue_batch_build(
config, parent, builder)
conf, parent, builder)
return further_work
def complete(config, msg):
return _finalize(config, msg, state=koji.BUILD_STATES["COMPLETE"])
def complete(msg):
return _finalize(msg, state=koji.BUILD_STATES["COMPLETE"])
def failed(config, msg):
return _finalize(config, msg, state=koji.BUILD_STATES["FAILED"])
def failed(msg):
return _finalize(msg, state=koji.BUILD_STATES["FAILED"])
def canceled(config, msg):
return _finalize(config, msg, state=koji.BUILD_STATES["CANCELED"])
def canceled(msg):
return _finalize(msg, state=koji.BUILD_STATES["CANCELED"])

View File

@@ -31,7 +31,7 @@ def get_corresponding_module_build(nvr):
return ModuleBuild.get_by_id(db_session, module_build_id)
def decision_update(config, msg):
def decision_update(msg):
"""Move module build to ready or failed according to Greenwave result
:param config: the config object returned from function :func:`init_config`,
@@ -41,7 +41,7 @@ def decision_update(config, msg):
``greenwave.decision.update``.
:type msg: :class:`GreenwaveDecisionUpdate`
"""
if not config.greenwave_decision_context:
if not conf.greenwave_decision_context:
log.debug(
"Skip Greenwave message %s as MBS does not have GREENWAVE_DECISION_CONTEXT "
"configured",
@@ -49,12 +49,12 @@ def decision_update(config, msg):
)
return
if msg.decision_context != config.greenwave_decision_context:
if msg.decision_context != conf.greenwave_decision_context:
log.debug(
"Skip Greenwave message %s as MBS only handles messages with the "
'decision context "%s"',
msg.msg_id,
config.greenwave_decision_context,
conf.greenwave_decision_context,
)
return

View File

@@ -40,7 +40,7 @@ def get_artifact_from_srpm(srpm_path):
return os.path.basename(srpm_path).replace(".src.rpm", "")
def failed(config, msg):
def failed(msg):
"""
Called whenever a module enters the 'failed' state.
@@ -60,7 +60,7 @@ def failed(config, msg):
if build.koji_tag:
builder = module_build_service.builder.GenericBuilder.create_from_module(
db_session, build, config)
db_session, build, conf)
if build.new_repo_task_id:
builder.cancel_build(build.new_repo_task_id)
@@ -80,7 +80,7 @@ def failed(config, msg):
reason = "Missing koji tag. Assuming previously failed module lookup."
log.error(reason)
build.transition(
db_session, config,
db_session, conf,
state=models.BUILD_STATES["failed"],
state_reason=reason, failure_type="infra")
db_session.commit()
@@ -89,7 +89,7 @@ def failed(config, msg):
# Don't transition it again if it's already been transitioned
if build.state != models.BUILD_STATES["failed"]:
build.transition(
db_session, config, state=models.BUILD_STATES["failed"], failure_type="user")
db_session, conf, state=models.BUILD_STATES["failed"], failure_type="user")
db_session.commit()
@@ -97,7 +97,7 @@ def failed(config, msg):
module_build_service.builder.GenericBuilder.clear_cache(build)
def done(config, msg):
def done(msg):
"""Called whenever a module enters the 'done' state.
We currently don't do anything useful, so moving to ready.
@@ -117,7 +117,7 @@ def done(config, msg):
# Scratch builds stay in 'done' state
if not build.scratch:
if greenwave is None or greenwave.check_gating(build):
build.transition(db_session, config, state=models.BUILD_STATES["ready"])
build.transition(db_session, conf, state=models.BUILD_STATES["ready"])
else:
build.state_reason = "Gating failed"
if greenwave.error_occurred:
@@ -129,7 +129,7 @@ def done(config, msg):
module_build_service.builder.GenericBuilder.clear_cache(build)
def init(config, msg):
def init(msg):
""" Called whenever a module enters the 'init' state."""
# Sleep for a few seconds to make sure the module in the database is committed
# TODO: Remove this once messaging is implemented in SQLAlchemy hooks
@@ -297,7 +297,7 @@ def get_content_generator_build_koji_tag(module_deps):
return conf.koji_cg_default_build_tag
def wait(config, msg):
def wait(msg):
""" Called whenever a module enters the 'wait' state.
We transition to this state shortly after a modulebuild is first requested.
@@ -337,7 +337,7 @@ def wait(config, msg):
reason = "Failed to get module info from MBS. Max retries reached."
log.exception(reason)
build.transition(
db_session, config,
db_session, conf,
state=models.BUILD_STATES["failed"],
state_reason=reason, failure_type="infra")
db_session.commit()
@@ -366,7 +366,7 @@ def wait(config, msg):
log.debug("Skip to assign Content Generator build koji tag to module build.")
builder = module_build_service.builder.GenericBuilder.create_from_module(
db_session, build, config)
db_session, build, conf)
log.debug(
"Adding dependencies %s into buildroot for module %s:%s:%s",
@@ -376,7 +376,7 @@ def wait(config, msg):
if not build.component_builds:
log.info("There are no components in module %r, skipping build" % build)
build.transition(db_session, config, state=models.BUILD_STATES["build"])
build.transition(db_session, conf, state=models.BUILD_STATES["build"])
db_session.add(build)
db_session.commit()
# Return a KojiRepoChange message so that the build can be transitioned to done
@@ -390,7 +390,7 @@ def wait(config, msg):
# module-build-macros, because there won't be any build done.
if attempt_to_reuse_all_components(builder, build):
log.info("All components have been reused for module %r, skipping build" % build)
build.transition(db_session, config, state=models.BUILD_STATES["build"])
build.transition(db_session, conf, state=models.BUILD_STATES["build"])
db_session.add(build)
db_session.commit()
return []
@@ -446,12 +446,12 @@ def wait(config, msg):
component_build.nvr = nvr
db_session.add(component_build)
build.transition(db_session, config, state=models.BUILD_STATES["build"])
build.transition(db_session, conf, state=models.BUILD_STATES["build"])
db_session.add(build)
db_session.commit()
# We always have to regenerate the repository.
if config.system == "koji":
if conf.system == "koji":
log.info("Regenerating the repository")
task_id = builder.koji_session.newRepo(builder.module_build_tag["name"])
build.new_repo_task_id = task_id

View File

@@ -5,19 +5,19 @@
import module_build_service.builder
import logging
from datetime import datetime
from module_build_service import models, log
from module_build_service import conf, models, log
from module_build_service.utils import start_next_batch_build
from module_build_service.db_session import db_session
logging.basicConfig(level=logging.DEBUG)
def done(config, msg):
def done(msg):
""" Called whenever koji rebuilds a repo, any repo. """
# First, find our ModuleBuild associated with this repo, if any.
tag = msg.repo_tag
if config.system in ("koji", "test") and not tag.endswith("-build"):
if conf.system in ("koji", "test") and not tag.endswith("-build"):
log.debug("Tag %r does not end with '-build' suffix, ignoring" % tag)
return
tag = tag[:-6] if tag.endswith("-build") else tag
@@ -41,7 +41,7 @@ def done(config, msg):
# Get the list of untagged components in current/previous batches which
# have been built successfully
if config.system in ("koji", "test") and current_batch:
if conf.system in ("koji", "test") and current_batch:
if any(c.is_completed and not c.is_tagged for c in module_build.up_to_current_batch()):
log.info("Ignoring repo regen, because not all components are tagged.")
return
@@ -70,7 +70,7 @@ def done(config, msg):
state_reason = "Component(s) {} failed to build.".format(
", ".join(c.package for c in current_batch if c.is_unsuccessful))
module_build.transition(
db_session, config, models.BUILD_STATES["failed"], state_reason, failure_type="infra")
db_session, conf, models.BUILD_STATES["failed"], state_reason, failure_type="infra")
db_session.commit()
log.warning("Odd! All components in batch failed for %r." % module_build)
return
@@ -82,8 +82,8 @@ def done(config, msg):
db_session,
module_build.owner,
module_build,
config.system,
config,
conf.system,
conf,
tag_name=tag,
components=[c.package for c in module_build.component_builds],
)
@@ -112,7 +112,7 @@ def done(config, msg):
# Try to start next batch build, because there are still unbuilt
# components in a module.
further_work += start_next_batch_build(config, module_build, builder)
further_work += start_next_batch_build(conf, module_build, builder)
else:
if has_failed_components:
@@ -123,7 +123,7 @@ def done(config, msg):
)
module_build.transition(
db_session,
config,
conf,
state=models.BUILD_STATES["failed"],
state_reason=state_reason,
failure_type="user",
@@ -133,7 +133,7 @@ def done(config, msg):
module_build.time_completed = datetime.utcnow()
builder.finalize(succeeded=True)
module_build.transition(db_session, config, state=models.BUILD_STATES["done"])
module_build.transition(db_session, conf, state=models.BUILD_STATES["done"])
db_session.commit()
return further_work

View File

@@ -5,16 +5,16 @@
import module_build_service.builder
import logging
import koji
from module_build_service import models, log
from module_build_service import conf, models, log
from module_build_service.db_session import db_session
from module_build_service.scheduler import events
logging.basicConfig(level=logging.DEBUG)
def tagged(config, msg):
def tagged(msg):
""" Called whenever koji tags a build to tag. """
if config.system not in ("koji", "test"):
if conf.system not in ("koji", "test"):
return []
# Find our ModuleBuild associated with this tagged artifact.
@@ -51,7 +51,7 @@ def tagged(config, msg):
# If all components are tagged, start newRepo task.
if not any(c.is_completed and not c.is_tagged for c in module_build.up_to_current_batch()):
builder = module_build_service.builder.GenericBuilder.create_from_module(
db_session, module_build, config)
db_session, module_build, conf)
if any(c.is_unbuilt for c in module_build.component_builds):
if not _is_new_repo_generating(module_build, builder.koji_session):

View File

@@ -75,7 +75,7 @@ class TestDecisionUpdateHandler:
@patch("module_build_service.scheduler.handlers.greenwave.log")
def test_decision_context_is_not_match(self, log):
msg = Mock(msg_id="msg-id-1", decision_context="bodhi_update_push_testing")
decision_update(conf, msg)
decision_update(msg)
log.debug.assert_called_once_with(
'Skip Greenwave message %s as MBS only handles messages with the decision context "%s"',
"msg-id-1",
@@ -90,7 +90,7 @@ class TestDecisionUpdateHandler:
policies_satisfied=False,
subject_identifier="pkg-0.1-1.c1",
)
decision_update(conf, msg)
decision_update(msg)
log.debug.assert_called_once_with(
"Skip to handle module build %s because it has not satisfied Greenwave policies.",
msg.subject_identifier,

View File

@@ -72,7 +72,7 @@ class TestModuleInit:
db_session.commit()
msg = MBSModule(msg_id=None, module_build_id=2, module_build_state="init")
self.fn(config=conf, msg=msg)
self.fn(msg=msg)
build = ModuleBuild.get_by_id(db_session, 2)
# Make sure the module entered the wait state
@@ -113,7 +113,7 @@ class TestModuleInit:
)
msg = MBSModule(msg_id=None, module_build_id=2, module_build_state="init")
self.fn(config=conf, msg=msg)
self.fn(msg=msg)
build = ModuleBuild.get_by_id(db_session, 2)
# Make sure the module entered the failed state
@@ -139,7 +139,7 @@ class TestModuleInit:
ModuleBuild.create(
db_session, conf, "includemodule", "1", 3, mmd_to_str(mmd), scmurl, "mprahl")
msg = MBSModule(msg_id=None, module_build_id=3, module_build_state="init")
self.fn(config=conf, msg=msg)
self.fn(msg=msg)
build = ModuleBuild.get_by_id(db_session, 3)
assert build.state == 1
assert build.name == "includemodule"
@@ -177,7 +177,7 @@ class TestModuleInit:
build = ModuleBuild.get_by_id(db_session, 2)
mocked_from_module_event.return_value = build
self.fn(config=conf, msg=msg)
self.fn(msg=msg)
# Query the database again to make sure the build object is updated
db_session.refresh(build)

View File

@@ -46,7 +46,7 @@ class TestModuleWait:
module_build_id=module_build_id,
module_build_state="some state")
with patch("module_build_service.resolver.GenericResolver.create"):
self.fn(config=self.config, msg=msg)
self.fn(msg=msg)
@patch(
"module_build_service.builder.GenericBuilder.default_buildroot_groups",
@@ -83,8 +83,7 @@ class TestModuleWait:
generic_resolver.create.return_value = resolver
msg = MBSModule(msg_id=None, module_build_id=2, module_build_state="some state")
module_build_service.scheduler.handlers.modules.wait(
config=conf, msg=msg)
module_build_service.scheduler.handlers.modules.wait(msg=msg)
koji_session.newRepo.assert_called_once_with("module-123-build")
@@ -129,8 +128,7 @@ class TestModuleWait:
generic_resolver.create.return_value = resolver
msg = MBSModule(msg_id=None, module_build_id=2, module_build_state="some state")
module_build_service.scheduler.handlers.modules.wait(
config=conf, msg=msg)
module_build_service.scheduler.handlers.modules.wait(msg=msg)
assert koji_session.newRepo.called
@@ -174,8 +172,7 @@ class TestModuleWait:
generic_resolver.create.return_value = resolver
msg = MBSModule(msg_id=None, module_build_id=2, module_build_state="some state")
module_build_service.scheduler.handlers.modules.wait(
config=conf, msg=msg)
module_build_service.scheduler.handlers.modules.wait(msg=msg)
module_build = ModuleBuild.get_by_id(db_session, 2)
assert module_build.cg_build_koji_tag == "modular-updates-candidate"
@@ -243,8 +240,6 @@ class TestModuleWait:
):
generic_resolver.create.return_value = resolver
msg = MBSModule(msg_id=None, module_build_id=2, module_build_state="some state")
module_build_service.scheduler.handlers.modules.wait(
config=conf, msg=msg
)
module_build_service.scheduler.handlers.modules.wait(msg=msg)
module_build = ModuleBuild.get_by_id(db_session, 2)
assert module_build.cg_build_koji_tag == expected_cg_koji_build_tag

View File

@@ -8,7 +8,7 @@ import module_build_service.models
from module_build_service.db_session import db_session
from module_build_service.models import ComponentBuild
from module_build_service.scheduler.events import KojiRepoChange
from tests import conf, scheduler_init_data
from tests import scheduler_init_data
class TestRepoDone:
@@ -22,7 +22,7 @@ class TestRepoDone:
from_repo_done_event.return_value = None
msg = KojiRepoChange(
"no matches for this...", "2016-some-nonexistent-build")
module_build_service.scheduler.handlers.repos.done(config=conf, msg=msg)
module_build_service.scheduler.handlers.repos.done(msg=msg)
@mock.patch(
"module_build_service.builder.KojiModuleBuilder."
@@ -59,7 +59,7 @@ class TestRepoDone:
msg = KojiRepoChange(
"some_msg_id", "module-testmodule-master-20170109091357-7c29193d-build")
module_build_service.scheduler.handlers.repos.done(config=conf, msg=msg)
module_build_service.scheduler.handlers.repos.done(msg=msg)
build_fn.assert_called_once_with(
artifact_name="tangerine",
source=(
@@ -119,7 +119,7 @@ class TestRepoDone:
msg = KojiRepoChange(
"some_msg_id", "module-testmodule-master-20170109091357-7c29193d-build")
module_build_service.scheduler.handlers.repos.done(config=conf, msg=msg)
module_build_service.scheduler.handlers.repos.done(msg=msg)
finalizer.assert_called_once()
@@ -159,7 +159,7 @@ class TestRepoDone:
msg = KojiRepoChange(
"some_msg_id", "module-testmodule-master-20170109091357-7c29193d-build")
module_build_service.scheduler.handlers.repos.done(config=conf, msg=msg)
module_build_service.scheduler.handlers.repos.done(msg=msg)
build_fn.assert_called_once_with(
artifact_name="tangerine",
source=(
@@ -186,7 +186,7 @@ class TestRepoDone:
msg = KojiRepoChange(
"some_msg_id", "module-testmodule-master-20170109091357-7c29193d-build")
module_build_service.scheduler.handlers.repos.done(config=conf, msg=msg)
module_build_service.scheduler.handlers.repos.done(msg=msg)
mock_log_info.assert_called_with(
"Ignoring repo regen, because not all components are tagged."
@@ -225,7 +225,7 @@ class TestRepoDone:
msg = KojiRepoChange(
"some_msg_id", "module-testmodule-master-20170109091357-7c29193d-build")
module_build_service.scheduler.handlers.repos.done(config=conf, msg=msg)
module_build_service.scheduler.handlers.repos.done(msg=msg)
module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 2)
assert module_build.state == module_build_service.models.BUILD_STATES["failed"]

View File

@@ -11,7 +11,6 @@ import module_build_service.scheduler.handlers.tags
import module_build_service.models
from module_build_service.scheduler.events import KojiTagChange
from tests import conf
from module_build_service.db_session import db_session
import koji
@@ -28,8 +27,7 @@ class TestTagTagged:
from_tag_change_event.return_value = None
msg = KojiTagChange(
"no matches for this...", "2016-some-nonexistent-build", "artifact", "artifact-1.2-1")
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
def test_no_matching_artifact(self):
""" Test that when a tag msg hits us and we have no match,
@@ -41,8 +39,7 @@ class TestTagTagged:
"artifact",
"artifact-1.2-1",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
@patch(
"module_build_service.builder.GenericBuilder.default_buildroot_groups",
@@ -94,9 +91,7 @@ class TestTagTagged:
"perl-Tangerine",
"perl-Tangerine-0.23-1.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg
)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# Tag the first component to the final tag.
msg = KojiTagChange(
"id",
@@ -104,9 +99,7 @@ class TestTagTagged:
"perl-Tangerine",
"perl-Tangerine-0.23-1.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg
)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# newRepo should not be called, because there are still components
# to tag.
@@ -119,9 +112,7 @@ class TestTagTagged:
"perl-List-Compare",
"perl-List-Compare-0.53-5.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg
)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# newRepo should not be called, because the component has not been
# tagged to final tag so far.
@@ -134,8 +125,7 @@ class TestTagTagged:
"perl-List-Compare",
"perl-List-Compare-0.53-5.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# newRepo should be called now - all components have been tagged.
koji_session.newRepo.assert_called_once_with(
@@ -190,8 +180,7 @@ class TestTagTagged:
"perl-Tangerine",
"perl-Tangerine-0.23-1.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# Tag the perl-List-Compare component to final tag.
msg = KojiTagChange(
"id",
@@ -199,8 +188,7 @@ class TestTagTagged:
"perl-Tangerine",
"perl-Tangerine-0.23-1.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# newRepo should not be called, because perl-List-Compare has not been
# built yet.
@@ -260,9 +248,7 @@ class TestTagTagged:
"perl-List-Compare",
"perl-List-Compare-0.53-5.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg
)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# Tag the perl-List-Compare component to final tag.
msg = KojiTagChange(
"id",
@@ -270,8 +256,7 @@ class TestTagTagged:
"perl-List-Compare",
"perl-List-Compare-0.53-5.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# newRepo should be called now - all successfully built
# components have been tagged.
@@ -336,8 +321,7 @@ class TestTagTagged:
"perl-Tangerine",
"perl-Tangerine-0.23-1.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# Tag the first component to the final tag.
msg = KojiTagChange(
"id",
@@ -345,8 +329,7 @@ class TestTagTagged:
"perl-Tangerine",
"perl-Tangerine-0.23-1.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# newRepo should not be called, because there are still components
# to tag.
@@ -359,8 +342,7 @@ class TestTagTagged:
"perl-List-Compare",
"perl-List-Compare-0.53-5.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# Tag the second component to final tag.
msg = KojiTagChange(
"id",
@@ -368,8 +350,7 @@ class TestTagTagged:
"perl-List-Compare",
"perl-List-Compare-0.53-5.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# newRepo should not be called, because there are still components
# to tag.
@@ -382,8 +363,7 @@ class TestTagTagged:
"module-build-macros",
"module-build-macros-0.1-1.module+0+b0a1d1f7",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# Tag the component from first batch to the buildroot.
msg = KojiTagChange(
"id",
@@ -391,8 +371,7 @@ class TestTagTagged:
"module-build-macros",
"module-build-macros-0.1-1.module+0+b0a1d1f7",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# newRepo should be called now - all components have been tagged.
koji_session.newRepo.assert_called_once_with(
@@ -463,8 +442,7 @@ class TestTagTagged:
"perl-Tangerine",
"perl-Tangerine-0.23-1.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
assert not koji_session.newRepo.called
# Tag the perl-List-Compare component to the buildroot.
msg = KojiTagChange(
@@ -473,8 +451,7 @@ class TestTagTagged:
"perl-List-Compare",
"perl-List-Compare-0.53-5.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# Tag the perl-List-Compare component to final tag.
msg = KojiTagChange(
"id",
@@ -482,8 +459,7 @@ class TestTagTagged:
"perl-List-Compare",
"perl-List-Compare-0.53-5.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# newRepo should be called now - all successfully built
# components have been tagged.
@@ -562,8 +538,7 @@ class TestTagTagged:
"perl-Tangerine",
"perl-Tangerine-0.23-1.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# Tag the first component to the final tag.
msg = KojiTagChange(
"id",
@@ -571,8 +546,7 @@ class TestTagTagged:
"perl-Tangerine",
"perl-Tangerine-0.23-1.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# Tag the second component to the buildroot.
msg = KojiTagChange(
"id",
@@ -580,8 +554,7 @@ class TestTagTagged:
"perl-List-Compare",
"perl-List-Compare-0.53-5.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# Tag the second component to the final tag.
msg = KojiTagChange(
"id",
@@ -589,8 +562,7 @@ class TestTagTagged:
"perl-List-Compare",
"perl-List-Compare-0.53-5.module+0+d027b723",
)
module_build_service.scheduler.handlers.tags.tagged(
config=conf, msg=msg)
module_build_service.scheduler.handlers.tags.tagged(msg=msg)
# All components are tagged, newRepo should be called if there are no active tasks.
if expect_new_repo:

View File

@@ -1238,7 +1238,7 @@ class TestBatches:
# the components just once.
for msg in further_work:
if type(msg) == KojiBuildChange:
module_build_service.scheduler.handlers.components.complete(conf, msg)
module_build_service.scheduler.handlers.components.complete(msg)
# Since we have reused all the components in the batch, there should
# be fake KojiRepoChange message.