Exemplo n.º 1
0
def test_check_copr_build_not_ended():
    flexmock(CoprBuildModel).should_receive("get_all_by_build_id").with_args(
        1).and_return([flexmock()])
    flexmock(Client).should_receive("create_from_config_file").and_return(
        flexmock(build_proxy=flexmock().should_receive("get").with_args(
            1).and_return(flexmock(ended_on=False)).mock()))
    assert not check_copr_build(build_id=1)
Exemplo n.º 2
0
def test_check_copr_build_already_successful():
    flexmock(CoprBuildModel).should_receive("get_all_by_build_id").with_args(
        1).and_return([flexmock(status="success")])
    flexmock(Client).should_receive("create_from_config_file").and_return(
        flexmock(build_proxy=flexmock().should_receive(
            "get").with_args(1).and_return(
                flexmock(ended_on="timestamp", state="completed")).mock()))
    assert check_copr_build(build_id=1)
Exemplo n.º 3
0
def test_check_copr_build_updated():
    flexmock(CoprBuildModel).should_receive("get_by_build_id").and_return()
    flexmock(CoprBuildModel).should_receive("get_all_by_build_id").with_args(
        1).and_return([
            flexmock(
                status="pending",
                target="the-target",
                owner="the-owner",
                project_name="the-project-name",
                commit_sha="123456",
                job_trigger=flexmock(type=JobTriggerModelType.pull_request).
                should_receive("get_trigger_object").and_return(
                    flexmock(
                        project=flexmock(
                            repo_name="repo_name",
                            namespace="the-namespace",
                            project_url=
                            "https://github.com/the-namespace/repo_name",
                        ),
                        pr_id=5,
                        job_config_trigger_type=JobConfigTriggerType.
                        pull_request,
                        id=123,
                    )).mock(),
                srpm_build=flexmock(url=None).should_receive(
                    "set_url").with_args("https://some.host/my.srpm").mock(),
            )
        ])
    flexmock(Client).should_receive("create_from_config_file").and_return(
        flexmock(
            build_proxy=flexmock().should_receive("get").with_args(
                1).and_return(
                    flexmock(
                        ended_on=True,
                        state="completed",
                        source_package={
                            "name": "source_package_name",
                            "url": "https://some.host/my.srpm",
                        },
                    )).mock(),
            build_chroot_proxy=flexmock().should_receive("get").with_args(
                1, "the-target").and_return(
                    flexmock(ended_on="timestamp", state="completed")).mock(),
        ))
    flexmock(AbstractCoprBuildEvent).should_receive(
        "get_package_config").and_return(
            PackageConfig(jobs=[
                JobConfig(type=JobType.build,
                          trigger=JobConfigTriggerType.pull_request)
            ]))
    flexmock(CoprBuildEndHandler).should_receive("run").and_return().once()
    assert check_copr_build(build_id=1)
Exemplo n.º 4
0
def babysit_copr_build(self, build_id: int):
    """ check status of a copr build and update it in DB """
    if not check_copr_build(build_id=build_id):
        self.retry()
Exemplo n.º 5
0
def test_check_copr_build(clean_before_and_after, packit_build_752):
    flexmock(Client).should_receive("create_from_config_file").and_return(
        Client(None))
    flexmock(AbstractCoprBuildEvent).should_receive(
        "get_package_config").and_return(
            PackageConfig(jobs=[
                JobConfig(
                    type=JobType.copr_build,
                    trigger=JobConfigTriggerType.pull_request,
                    metadata=JobMetadataConfig(_targets=[
                        "fedora-30-x86_64",
                        "fedora-rawhide-x86_64",
                        "fedora-31-x86_64",
                        "fedora-32-x86_64",
                    ]),
                )
            ]))
    coprs_response = Munch({
        "chroots": [
            "fedora-30-x86_64",
            "fedora-rawhide-x86_64",
            "fedora-31-x86_64",
            "fedora-32-x86_64",
        ],
        "ended_on":
        1583916564,
        "id":
        1300329,
        "ownername":
        "packit",
        "project_dirname":
        "packit-service-packit-752",
        "projectname":
        "packit-service-packit-752",
        "repo_url": ("https://download.copr.fedorainfracloud.org/"
                     "results/packit/packit-service-packit-752"),
        "source_package": {
            "name":
            "packit",
            "url":
            ("https://download.copr.fedorainfracloud.org/"
             "results/packit/packit-service-packit-752/"
             "srpm-builds/01300329/packit-0.8.2.dev122g64ebb47-1.fc31.src.rpm"
             ),
            "version":
            "0.8.2.dev122+g64ebb47-1.fc31",
        },
        "started_on":
        1583916315,
        "state":
        "succeeded",
        "submitted_on":
        1583916261,
        "submitter":
        "packit",
    })
    flexmock(BuildProxy).should_receive("get").and_return(coprs_response)

    copr_response_built_packages = Munch({
        "packages": [
            {
                "arch": "noarch",
                "epoch": 0,
                "name": "python3-packit",
                "release": "1.20210930124525726166.main.0.g0b7b36b.fc36",
                "version": "0.38.0",
            },
            {
                "arch": "src",
                "epoch": 0,
                "name": "packit",
                "release": "1.20210930124525726166.main.0.g0b7b36b.fc36",
                "version": "0.38.0",
            },
            {
                "arch": "noarch",
                "epoch": 0,
                "name": "packit",
                "release": "1.20210930124525726166.main.0.g0b7b36b.fc36",
                "version": "0.38.0",
            },
        ],
    })
    flexmock(BuildChrootProxy).should_receive("get_built_packages").with_args(
        BUILD_ID,
        "fedora-rawhide-x86_64").and_return(copr_response_built_packages)

    chroot_response = Munch({
        "ended_on":
        1583916564,
        "name":
        "fedora-rawhide-x86_64",
        "result_url":
        "https://download.copr.fedorainfracloud.org/"
        "results/packit/packit-service-packit-752/fedora-rawhide-x86_64/"
        "01300329-packit/",
        "started_on":
        1583916315,
        "state":
        "succeeded",
    })
    flexmock(BuildChrootProxy).should_receive("get").with_args(
        BUILD_ID, "fedora-rawhide-x86_64").and_return(chroot_response)

    pr = flexmock(source_project=flexmock(), target_branch="main")
    pr.should_receive("get_comments").and_return([])
    pr.should_receive("comment").and_return()

    # Reporting
    flexmock(GithubProject).should_receive("get_pr").and_return(pr)
    flexmock(GithubProject).should_receive(
        "create_check_run").and_return().once()
    flexmock(GithubProject).should_receive("get_git_urls").and_return(
        {"git": "https://github.com/packit-service/packit.git"})
    flexmock(packit_service.worker.build.copr_build).should_receive(
        "get_valid_build_targets").and_return({
            "fedora-33-x86_64",
            "fedora-32-x86_64",
            "fedora-31-x86_64",
            "fedora-rawhide-x86_64",
        })

    check_copr_build(BUILD_ID)
    assert packit_build_752.status == PG_BUILD_STATUS_SUCCESS
Exemplo n.º 6
0
def test_check_copr_build_no_build():
    flexmock(CoprBuildModel).should_receive("get_all_by_build_id").with_args(
        1).and_return([])
    assert check_copr_build(build_id=1)
Exemplo n.º 7
0
def test_check_copr_build(clean_before_and_after, packit_build_752):
    flexmock(Client).should_receive("create_from_config_file").and_return(
        Client(None))
    flexmock(CoprBuildEvent).should_receive("get_package_config").and_return(
        PackageConfig(jobs=[
            JobConfig(
                type=JobType.copr_build,
                trigger=JobConfigTriggerType.pull_request,
                metadata=JobMetadataConfig(targets=[
                    "fedora-30-x86_64",
                    "fedora-rawhide-x86_64",
                    "fedora-31-x86_64",
                    "fedora-32-x86_64",
                ]),
            )
        ]))
    coprs_response = Munch({
        "chroots": [
            "fedora-30-x86_64",
            "fedora-rawhide-x86_64",
            "fedora-31-x86_64",
            "fedora-32-x86_64",
        ],
        "ended_on":
        1583916564,
        "id":
        1300329,
        "ownername":
        "packit",
        "project_dirname":
        "packit-service-packit-752",
        "projectname":
        "packit-service-packit-752",
        "repo_url": ("https://download.copr.fedorainfracloud.org/"
                     "results/packit/packit-service-packit-752"),
        "source_package": {
            "name":
            "packit",
            "url":
            ("https://download.copr.fedorainfracloud.org/"
             "results/packit/packit-service-packit-752/"
             "srpm-builds/01300329/packit-0.8.2.dev122g64ebb47-1.fc31.src.rpm"
             ),
            "version":
            "0.8.2.dev122+g64ebb47-1.fc31",
        },
        "started_on":
        1583916315,
        "state":
        "succeeded",
        "submitted_on":
        1583916261,
        "submitter":
        "packit",
    })
    flexmock(BuildProxy).should_receive("get").and_return(coprs_response)

    chroot_response = Munch({
        "ended_on":
        1583916564,
        "name":
        "fedora-rawhide-x86_64",
        "result_url":
        "https://download.copr.fedorainfracloud.org/"
        "results/packit/packit-service-packit-752/fedora-rawhide-x86_64/"
        "01300329-packit/",
        "started_on":
        1583916315,
        "state":
        "succeeded",
    })
    flexmock(BuildChrootProxy).should_receive("get").with_args(
        BUILD_ID, "fedora-rawhide-x86_64").and_return(chroot_response)

    # Reporting
    flexmock(GithubProject).should_receive("get_pr").and_return(flexmock())
    flexmock(GithubProject).should_receive("get_pr_comments").and_return([])
    flexmock(GithubProject).should_receive("pr_comment").and_return()
    flexmock(GithubProject).should_receive(
        "set_commit_status").and_return().once()

    check_copr_build(BUILD_ID)
    assert packit_build_752.status == PG_COPR_BUILD_STATUS_SUCCESS