Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create a Bugzilla bug for a new Merge Request (Gitlab) #1087

Merged
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions packit_service/worker/handlers/__init__.py
Expand Up @@ -16,14 +16,14 @@
FedmsgHandler,
DistGitCommitHandler,
)
from packit_service.worker.handlers.github_handlers import (
from packit_service.worker.handlers.forges_handlers import (
lachmanfrantisek marked this conversation as resolved.
Show resolved Hide resolved
GithubAppInstallationHandler,
ProposeDownstreamHandler,
TestingFarmHandler,
CoprBuildHandler,
KojiBuildHandler,
)
from packit_service.worker.handlers.testing_farm_handlers import (
TestingFarmHandler,
TestingFarmResultsHandler,
)

Expand Down
Expand Up @@ -29,8 +29,6 @@
PERMISSIONS_ERROR_WRITE_OR_ADMIN,
)
from packit_service.models import (
AbstractTriggerDbType,
CoprBuildModel,
InstallationModel,
)
from packit_service.service.events import (
Expand Down Expand Up @@ -60,7 +58,6 @@
run_for_comment,
)
from packit_service.worker.result import TaskResults
from packit_service.worker.testing_farm import TestingFarmJobHelper
from packit_service.worker.allowlist import Allowlist

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -380,75 +377,3 @@ def pre_check(self) -> bool:
return False

return True


@run_for_comment(command="test")
@reacts_to(PullRequestCommentGithubEvent)
@reacts_to(MergeRequestCommentGitlabEvent)
@reacts_to(PullRequestCommentPagureEvent)
@configured_as(job_type=JobType.tests)
class TestingFarmHandler(JobHandler):
"""
The automatic matching is now used only for /packit test
TODO: We can react directly to the finished Copr build.
"""

task_name = TaskName.testing_farm

def __init__(
self,
package_config: PackageConfig,
job_config: JobConfig,
event: dict,
chroot: Optional[str] = None,
build_id: Optional[int] = None,
):
super().__init__(
package_config=package_config,
job_config=job_config,
event=event,
)
self.chroot = chroot
self.build_id = build_id
self._db_trigger: Optional[AbstractTriggerDbType] = None

@property
def db_trigger(self) -> Optional[AbstractTriggerDbType]:
if not self._db_trigger:
# copr build end
if self.build_id:
build = CoprBuildModel.get_by_id(self.build_id)
self._db_trigger = build.get_trigger_object()
# '/packit test' comment
else:
self._db_trigger = self.data.db_trigger
return self._db_trigger

def run(self) -> TaskResults:
# TODO: once we turn handlers into respective celery tasks, we should iterate
# here over *all* matching jobs and do them all, not just the first one
testing_farm_helper = TestingFarmJobHelper(
service_config=self.service_config,
package_config=self.package_config,
project=self.project,
metadata=self.data,
db_trigger=self.db_trigger,
job_config=self.job_config,
)

if self.data.event_type in (
PullRequestCommentGithubEvent.__name__,
MergeRequestCommentGitlabEvent.__name__,
PullRequestCommentPagureEvent.__name__,
):
logger.debug(f"Test job config: {testing_farm_helper.job_tests}")
return testing_farm_helper.run_testing_farm_on_all()

if self.build_id:
copr_build = CoprBuildModel.get_by_id(self.build_id)
else:
copr_build = testing_farm_helper.get_latest_copr_build(target=self.chroot)
logger.info(f"Running testing farm for {copr_build}:{self.chroot}.")
return testing_farm_helper.run_testing_farm(
build=copr_build, chroot=self.chroot
)
84 changes: 82 additions & 2 deletions packit_service/worker/handlers/testing_farm_handlers.py
Expand Up @@ -12,22 +12,102 @@
from packit.config import JobConfig, JobType
from packit.config.package_config import PackageConfig

from packit_service.models import AbstractTriggerDbType, TFTTestRunModel
from packit_service.models import AbstractTriggerDbType, TFTTestRunModel, CoprBuildModel
from packit_service.service.events import (
TestResult,
TestingFarmResult,
TestingFarmResultsEvent,
PullRequestCommentGithubEvent,
MergeRequestCommentGitlabEvent,
PullRequestCommentPagureEvent,
)
from packit_service.service.urls import get_testing_farm_info_url
from packit_service.worker.handlers import JobHandler
from packit_service.worker.handlers.abstract import TaskName, configured_as, reacts_to
from packit_service.worker.handlers.abstract import (
TaskName,
configured_as,
reacts_to,
run_for_comment,
)
from packit_service.worker.reporting import StatusReporter
from packit_service.worker.result import TaskResults
from packit_service.worker.testing_farm import TestingFarmJobHelper

logger = logging.getLogger(__name__)


@run_for_comment(command="test")
@reacts_to(PullRequestCommentGithubEvent)
@reacts_to(MergeRequestCommentGitlabEvent)
@reacts_to(PullRequestCommentPagureEvent)
@configured_as(job_type=JobType.tests)
class TestingFarmHandler(JobHandler):
"""
The automatic matching is now used only for /packit test
TODO: We can react directly to the finished Copr build.
"""

task_name = TaskName.testing_farm

def __init__(
self,
package_config: PackageConfig,
job_config: JobConfig,
event: dict,
chroot: Optional[str] = None,
build_id: Optional[int] = None,
):
super().__init__(
package_config=package_config,
job_config=job_config,
event=event,
)
self.chroot = chroot
self.build_id = build_id
self._db_trigger: Optional[AbstractTriggerDbType] = None

@property
def db_trigger(self) -> Optional[AbstractTriggerDbType]:
if not self._db_trigger:
# copr build end
if self.build_id:
build = CoprBuildModel.get_by_id(self.build_id)
self._db_trigger = build.get_trigger_object()
# '/packit test' comment
else:
self._db_trigger = self.data.db_trigger
return self._db_trigger

def run(self) -> TaskResults:
# TODO: once we turn handlers into respective celery tasks, we should iterate
# here over *all* matching jobs and do them all, not just the first one
testing_farm_helper = TestingFarmJobHelper(
service_config=self.service_config,
package_config=self.package_config,
project=self.project,
metadata=self.data,
db_trigger=self.db_trigger,
job_config=self.job_config,
)

if self.data.event_type in (
PullRequestCommentGithubEvent.__name__,
MergeRequestCommentGitlabEvent.__name__,
PullRequestCommentPagureEvent.__name__,
):
logger.debug(f"Test job config: {testing_farm_helper.job_tests}")
return testing_farm_helper.run_testing_farm_on_all()

if self.build_id:
copr_build = CoprBuildModel.get_by_id(self.build_id)
else:
copr_build = testing_farm_helper.get_latest_copr_build(target=self.chroot)
logger.info(f"Running testing farm for {copr_build}:{self.chroot}.")
return testing_farm_helper.run_testing_farm(
build=copr_build, chroot=self.chroot
)


@configured_as(job_type=JobType.tests)
@reacts_to(event=TestingFarmResultsEvent)
class TestingFarmResultsHandler(JobHandler):
Expand Down
4 changes: 2 additions & 2 deletions packit_service/worker/tasks.py
Expand Up @@ -17,17 +17,17 @@
KojiBuildReportHandler,
DistGitCommitHandler,
)
from packit_service.worker.handlers.github_handlers import (
from packit_service.worker.handlers.forges_handlers import (
CoprBuildHandler,
GithubAppInstallationHandler,
KojiBuildHandler,
ProposeDownstreamHandler,
TestingFarmHandler,
)
from packit_service.worker.handlers.pagure_handlers import (
PagurePullRequestLabelHandler,
)
from packit_service.worker.handlers.testing_farm_handlers import (
TestingFarmHandler,
TestingFarmResultsHandler,
)
from packit_service.worker.jobs import SteveJobs
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/test_handler.py
Expand Up @@ -14,7 +14,7 @@
from packit_service.constants import KOJI_PRODUCTION_BUILDS_ISSUE
from packit_service.models import GitBranchModel, PullRequestModel
from packit_service.worker.handlers import JobHandler
from packit_service.worker.handlers.github_handlers import (
from packit_service.worker.handlers.forges_handlers import (
CoprBuildHandler,
KojiBuildHandler,
)
Expand Down
4 changes: 2 additions & 2 deletions tests/unit/test_jobs.py
Expand Up @@ -27,14 +27,14 @@
CoprBuildEndHandler,
CoprBuildStartHandler,
JobHandler,
TestingFarmHandler,
TestingFarmResultsHandler,
)
from packit_service.worker.handlers.fedmsg_handlers import KojiBuildReportHandler
from packit_service.worker.handlers.github_handlers import (
from packit_service.worker.handlers.forges_handlers import (
CoprBuildHandler,
KojiBuildHandler,
ProposeDownstreamHandler,
TestingFarmHandler,
)
from packit_service.worker.jobs import (
get_config_for_handler_kls,
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/test_tasks.py
Expand Up @@ -6,7 +6,7 @@
from copr.v3 import CoprRequestException
from flexmock import flexmock
from packit_service.worker.tasks import run_copr_build_handler
from packit_service.worker.handlers.github_handlers import CoprBuildHandler
from packit_service.worker.handlers.forges_handlers import CoprBuildHandler


def test_autoretry():
Expand Down