예제 #1
0
def test_is_loaded_kernel_latest_skip_on_not_latest_ol(pretend_os, caplog):
    message = (
        "Skipping the check because there are no publicly available Oracle Linux Server 8.4 repositories available."
    )

    is_loaded_kernel_latest()

    assert message in caplog.records[-1].message
예제 #2
0
def test_is_loaded_kernel_latest_eus_system(
    pretend_os,
    repoquery_version,
    uname_version,
    return_code,
    package_name,
    raise_system_exit,
    tmpdir,
    monkeypatch,
    caplog,
):
    fake_reposdir_path = str(tmpdir)
    monkeypatch.setattr(checks,
                        "get_hardcoded_repofiles_dir",
                        value=lambda: fake_reposdir_path)
    run_subprocess_mocked = mock.Mock(
        spec=run_subprocess,
        side_effect=run_subprocess_side_effect(
            (
                (
                    "repoquery",
                    "--quiet",
                    "--qf",
                    '"%{BUILDTIME}\\t%{VERSION}-%{RELEASE}\\t%{REPOID}"',
                    "--setopt=reposdir=%s" % fake_reposdir_path,
                    package_name,
                ),
                (
                    repoquery_version,
                    return_code,
                ),
            ),
            (("uname", "-r"), (uname_version, return_code)),
        ),
    )
    monkeypatch.setattr(
        checks,
        "run_subprocess",
        value=run_subprocess_mocked,
    )

    if raise_system_exit:
        with pytest.raises(SystemExit):
            is_loaded_kernel_latest()

        repoquery_kernel_version = repoquery_version.split("\t")[1]
        uname_kernel_version = uname_version.rsplit(".", 1)[0]
        assert (
            "The version of the loaded kernel is different from the latest version in repositories defined in the %s folder"
            % fake_reposdir_path)
        assert ("Latest kernel version available in baseos: %s\n" %
                repoquery_kernel_version in caplog.records[-1].message)
        assert "Loaded kernel version: %s\n" % uname_kernel_version in caplog.records[
            -1].message
    else:
        is_loaded_kernel_latest()
        assert "The currently loaded kernel is at the latest version." in caplog.records[
            -1].message
예제 #3
0
def test_is_loaded_kernel_latest_eus_system_no_connection(
        pretend_os, monkeypatch, tmpdir, caplog):
    monkeypatch.setattr(checks,
                        "get_hardcoded_repofiles_dir",
                        value=lambda: str(tmpdir))
    system_info.has_internet_access = False

    is_loaded_kernel_latest()
    assert "Skipping the check as no internet connection has been detected." in caplog.records[
        -1].message
예제 #4
0
def test_is_loaded_kernel_latest(repoquery_version, uname_version, return_code,
                                 major_ver, package_name, raise_system_exit,
                                 monkeypatch, caplog):
    Version = namedtuple("Version", ("major", "minor"))
    # Using the minor version as 99, so the tests should never fail because of a constraint in the code, since we don't
    # mind the minor version number (for now), and require only that the major version to be in the range of 6 to 8,
    # we can set the minor version to 99 to avoid hardcoded checks in the code.
    monkeypatch.setattr(
        checks.system_info,
        "version",
        value=Version(major=major_ver, minor=99),
    )
    system_info.id = "centos"
    run_subprocess_mocked = mock.Mock(
        spec=run_subprocess,
        side_effect=run_subprocess_side_effect(
            (
                (
                    "repoquery",
                    "--quiet",
                    "--qf",
                    '"%{BUILDTIME}\\t%{VERSION}-%{RELEASE}\\t%{REPOID}"',
                    package_name,
                ),
                (
                    repoquery_version,
                    return_code,
                ),
            ),
            (("uname", "-r"), (uname_version, return_code)),
        ),
    )
    monkeypatch.setattr(
        checks,
        "run_subprocess",
        value=run_subprocess_mocked,
    )

    if raise_system_exit:
        with pytest.raises(SystemExit):
            is_loaded_kernel_latest()

        repoquery_kernel_version = repoquery_version.split("\t")[1]
        uname_kernel_version = uname_version.rsplit(".", 1)[0]
        assert ("Latest kernel version available in baseos: %s\n" %
                repoquery_kernel_version in caplog.records[-1].message)
        assert "Loaded kernel version: %s\n" % uname_kernel_version in caplog.records[
            -1].message
    else:
        is_loaded_kernel_latest()
        assert "The currently loaded kernel is at the latest version." in caplog.records[
            -1].message
예제 #5
0
def test_is_loaded_kernel_latest_unsupported_skip(repoquery_version,
                                                  return_code, major_ver,
                                                  package_name,
                                                  unsupported_skip, expected,
                                                  monkeypatch, caplog):
    run_subprocess_mocked = mock.Mock(
        spec=run_subprocess,
        side_effect=run_subprocess_side_effect((
            (
                "repoquery",
                "--quiet",
                "--qf",
                '"%{BUILDTIME}\\t%{VERSION}-%{RELEASE}\\t%{REPOID}"',
                package_name,
            ),
            (
                repoquery_version,
                return_code,
            ),
        ), ),
    )
    monkeypatch.setattr(
        checks.system_info,
        "version",
        value=systeminfo.Version(major=major_ver, minor=0),
    )
    monkeypatch.setattr(
        checks,
        "run_subprocess",
        value=run_subprocess_mocked,
    )
    monkeypatch.setattr(os, "environ", {
        "CONVERT2RHEL_UNSUPPORTED_SKIP_KERNEL_CURRENCY_CHECK":
        unsupported_skip
    })

    if unsupported_skip == "0":
        with pytest.raises(SystemExit):
            is_loaded_kernel_latest()
        expected = expected.format(package_name)
    else:
        is_loaded_kernel_latest()

    assert expected in caplog.records[-1].message