mirror of
https://github.com/ceph/ceph
synced 2025-01-04 10:12:30 +00:00
cephadm: add tests for Packager validate function
With the validate function split from the add_repo function we can independently test the behavior of the validate function. Signed-off-by: John Mulligan <jmulligan@redhat.com>
This commit is contained in:
parent
ee71ff79a3
commit
c0b1a910f1
@ -1374,6 +1374,240 @@ class TestRmRepo:
|
||||
cd.command_rm_repo(ctx)
|
||||
|
||||
|
||||
class TestValidateRepo:
|
||||
|
||||
@pytest.mark.parametrize('values',
|
||||
[
|
||||
# Apt - no checks
|
||||
dict(
|
||||
version="",
|
||||
release="pacific",
|
||||
err_text="",
|
||||
os_release=dedent("""
|
||||
NAME="Ubuntu"
|
||||
VERSION="20.04 LTS (Focal Fossa)"
|
||||
ID=ubuntu
|
||||
ID_LIKE=debian
|
||||
PRETTY_NAME="Ubuntu 20.04 LTS"
|
||||
VERSION_ID="20.04"
|
||||
HOME_URL="https://www.ubuntu.com/"
|
||||
SUPPORT_URL="https://help.ubuntu.com/"
|
||||
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
|
||||
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
|
||||
VERSION_CODENAME=focal
|
||||
UBUNTU_CODENAME=focal
|
||||
""")),
|
||||
|
||||
# YumDnf on Centos8 - OK
|
||||
dict(
|
||||
version="",
|
||||
release="pacific",
|
||||
err_text="",
|
||||
os_release=dedent("""
|
||||
NAME="CentOS Linux"
|
||||
VERSION="8 (Core)"
|
||||
ID="centos"
|
||||
ID_LIKE="rhel fedora"
|
||||
VERSION_ID="8"
|
||||
PLATFORM_ID="platform:el8"
|
||||
PRETTY_NAME="CentOS Linux 8 (Core)"
|
||||
ANSI_COLOR="0;31"
|
||||
CPE_NAME="cpe:/o:centos:centos:8"
|
||||
HOME_URL="https://www.centos.org/"
|
||||
BUG_REPORT_URL="https://bugs.centos.org/"
|
||||
|
||||
CENTOS_MANTISBT_PROJECT="CentOS-8"
|
||||
CENTOS_MANTISBT_PROJECT_VERSION="8"
|
||||
REDHAT_SUPPORT_PRODUCT="centos"
|
||||
REDHAT_SUPPORT_PRODUCT_VERSION="8"
|
||||
""")),
|
||||
|
||||
# YumDnf on Fedora - Fedora not supported
|
||||
dict(
|
||||
version="",
|
||||
release="pacific",
|
||||
err_text="does not build Fedora",
|
||||
os_release=dedent("""
|
||||
NAME="Fedora Linux"
|
||||
VERSION="35 (Cloud Edition)"
|
||||
ID=fedora
|
||||
VERSION_ID=35
|
||||
VERSION_CODENAME=""
|
||||
PLATFORM_ID="platform:f35"
|
||||
PRETTY_NAME="Fedora Linux 35 (Cloud Edition)"
|
||||
ANSI_COLOR="0;38;2;60;110;180"
|
||||
LOGO=fedora-logo-icon
|
||||
CPE_NAME="cpe:/o:fedoraproject:fedora:35"
|
||||
HOME_URL="https://fedoraproject.org/"
|
||||
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f35/system-administrators-guide/"
|
||||
SUPPORT_URL="https://ask.fedoraproject.org/"
|
||||
BUG_REPORT_URL="https://bugzilla.redhat.com/"
|
||||
REDHAT_BUGZILLA_PRODUCT="Fedora"
|
||||
REDHAT_BUGZILLA_PRODUCT_VERSION=35
|
||||
REDHAT_SUPPORT_PRODUCT="Fedora"
|
||||
REDHAT_SUPPORT_PRODUCT_VERSION=35
|
||||
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
|
||||
VARIANT="Cloud Edition"
|
||||
VARIANT_ID=cloud
|
||||
""")),
|
||||
|
||||
# YumDnf on Centos 7 - no pacific
|
||||
dict(
|
||||
version="",
|
||||
release="pacific",
|
||||
err_text="does not support pacific",
|
||||
os_release=dedent("""
|
||||
NAME="CentOS Linux"
|
||||
VERSION="7 (Core)"
|
||||
ID="centos"
|
||||
ID_LIKE="rhel fedora"
|
||||
VERSION_ID="7"
|
||||
PRETTY_NAME="CentOS Linux 7 (Core)"
|
||||
ANSI_COLOR="0;31"
|
||||
CPE_NAME="cpe:/o:centos:centos:7"
|
||||
HOME_URL="https://www.centos.org/"
|
||||
BUG_REPORT_URL="https://bugs.centos.org/"
|
||||
|
||||
CENTOS_MANTISBT_PROJECT="CentOS-7"
|
||||
CENTOS_MANTISBT_PROJECT_VERSION="7"
|
||||
REDHAT_SUPPORT_PRODUCT="centos"
|
||||
REDHAT_SUPPORT_PRODUCT_VERSION="7"
|
||||
""")),
|
||||
|
||||
# YumDnf on Centos 7 - nothing after pacific
|
||||
dict(
|
||||
version="",
|
||||
release="zillions",
|
||||
err_text="does not support pacific",
|
||||
os_release=dedent("""
|
||||
NAME="CentOS Linux"
|
||||
VERSION="7 (Core)"
|
||||
ID="centos"
|
||||
ID_LIKE="rhel fedora"
|
||||
VERSION_ID="7"
|
||||
PRETTY_NAME="CentOS Linux 7 (Core)"
|
||||
ANSI_COLOR="0;31"
|
||||
CPE_NAME="cpe:/o:centos:centos:7"
|
||||
HOME_URL="https://www.centos.org/"
|
||||
BUG_REPORT_URL="https://bugs.centos.org/"
|
||||
|
||||
CENTOS_MANTISBT_PROJECT="CentOS-7"
|
||||
CENTOS_MANTISBT_PROJECT_VERSION="7"
|
||||
REDHAT_SUPPORT_PRODUCT="centos"
|
||||
REDHAT_SUPPORT_PRODUCT_VERSION="7"
|
||||
""")),
|
||||
|
||||
# YumDnf on Centos 7 - nothing v16 or higher
|
||||
dict(
|
||||
version="v16.1.3",
|
||||
release="",
|
||||
err_text="does not support",
|
||||
os_release=dedent("""
|
||||
NAME="CentOS Linux"
|
||||
VERSION="7 (Core)"
|
||||
ID="centos"
|
||||
ID_LIKE="rhel fedora"
|
||||
VERSION_ID="7"
|
||||
PRETTY_NAME="CentOS Linux 7 (Core)"
|
||||
ANSI_COLOR="0;31"
|
||||
CPE_NAME="cpe:/o:centos:centos:7"
|
||||
HOME_URL="https://www.centos.org/"
|
||||
BUG_REPORT_URL="https://bugs.centos.org/"
|
||||
|
||||
CENTOS_MANTISBT_PROJECT="CentOS-7"
|
||||
CENTOS_MANTISBT_PROJECT_VERSION="7"
|
||||
REDHAT_SUPPORT_PRODUCT="centos"
|
||||
REDHAT_SUPPORT_PRODUCT_VERSION="7"
|
||||
""")),
|
||||
])
|
||||
@mock.patch('cephadm.find_executable', return_value='foo')
|
||||
def test_distro_validation(self, find_executable, values, cephadm_fs):
|
||||
os_release = values['os_release']
|
||||
release = values['release']
|
||||
version = values['version']
|
||||
err_text = values['err_text']
|
||||
|
||||
cephadm_fs.create_file('/etc/os-release', contents=os_release)
|
||||
ctx = cd.CephadmContext()
|
||||
ctx.repo_url = 'http://localhost'
|
||||
pkg = cd.create_packager(ctx, stable=release, version=version)
|
||||
|
||||
if err_text:
|
||||
with pytest.raises(cd.Error, match=err_text):
|
||||
pkg.validate()
|
||||
else:
|
||||
with mock.patch('cephadm.urlopen', return_value=None):
|
||||
pkg.validate()
|
||||
|
||||
@pytest.mark.parametrize('values',
|
||||
[
|
||||
# Apt - not checked
|
||||
dict(
|
||||
version="",
|
||||
release="pacific",
|
||||
err_text="",
|
||||
os_release=dedent("""
|
||||
NAME="Ubuntu"
|
||||
VERSION="20.04 LTS (Focal Fossa)"
|
||||
ID=ubuntu
|
||||
ID_LIKE=debian
|
||||
PRETTY_NAME="Ubuntu 20.04 LTS"
|
||||
VERSION_ID="20.04"
|
||||
HOME_URL="https://www.ubuntu.com/"
|
||||
SUPPORT_URL="https://help.ubuntu.com/"
|
||||
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
|
||||
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
|
||||
VERSION_CODENAME=focal
|
||||
UBUNTU_CODENAME=focal
|
||||
""")),
|
||||
|
||||
# YumDnf on Centos8 - force failure
|
||||
dict(
|
||||
version="",
|
||||
release="foobar",
|
||||
err_text="failed to fetch repository metadata",
|
||||
os_release=dedent("""
|
||||
NAME="CentOS Linux"
|
||||
VERSION="8 (Core)"
|
||||
ID="centos"
|
||||
ID_LIKE="rhel fedora"
|
||||
VERSION_ID="8"
|
||||
PLATFORM_ID="platform:el8"
|
||||
PRETTY_NAME="CentOS Linux 8 (Core)"
|
||||
ANSI_COLOR="0;31"
|
||||
CPE_NAME="cpe:/o:centos:centos:8"
|
||||
HOME_URL="https://www.centos.org/"
|
||||
BUG_REPORT_URL="https://bugs.centos.org/"
|
||||
|
||||
CENTOS_MANTISBT_PROJECT="CentOS-8"
|
||||
CENTOS_MANTISBT_PROJECT_VERSION="8"
|
||||
REDHAT_SUPPORT_PRODUCT="centos"
|
||||
REDHAT_SUPPORT_PRODUCT_VERSION="8"
|
||||
""")),
|
||||
])
|
||||
@mock.patch('cephadm.find_executable', return_value='foo')
|
||||
def test_http_validation(self, find_executable, values, cephadm_fs):
|
||||
from urllib.error import HTTPError
|
||||
|
||||
os_release = values['os_release']
|
||||
release = values['release']
|
||||
version = values['version']
|
||||
err_text = values['err_text']
|
||||
|
||||
cephadm_fs.create_file('/etc/os-release', contents=os_release)
|
||||
ctx = cd.CephadmContext()
|
||||
ctx.repo_url = 'http://localhost'
|
||||
pkg = cd.create_packager(ctx, stable=release, version=version)
|
||||
|
||||
with mock.patch('cephadm.urlopen') as _urlopen:
|
||||
_urlopen.side_effect = HTTPError(ctx.repo_url, 404, "not found", None, fp=None)
|
||||
if err_text:
|
||||
with pytest.raises(cd.Error, match=err_text):
|
||||
pkg.validate()
|
||||
else:
|
||||
pkg.validate()
|
||||
|
||||
|
||||
class TestPull:
|
||||
|
||||
@mock.patch('time.sleep')
|
||||
|
Loading…
Reference in New Issue
Block a user