123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- import pytest
- from openshift_checks.package_version import PackageVersion, OpenShiftCheckException
- def task_vars_for(openshift_release, deployment_type):
- return dict(
- ansible_pkg_mgr='yum',
- openshift=dict(common=dict(service_type=deployment_type)),
- openshift_release=openshift_release,
- openshift_image_tag='v' + openshift_release,
- openshift_deployment_type=deployment_type,
- )
- def test_openshift_version_not_supported():
- check = PackageVersion(None, task_vars_for("1.2.3", 'origin'))
- check.get_openshift_version_tuple = lambda: (3, 4, 1) # won't be in the dict
- with pytest.raises(OpenShiftCheckException) as excinfo:
- check.get_required_ovs_version()
- assert "no recommended version of Open vSwitch" in str(excinfo.value)
- with pytest.raises(OpenShiftCheckException) as excinfo:
- check.get_required_docker_version()
- assert "no recommended version of Docker" in str(excinfo.value)
- def test_invalid_openshift_release_format():
- task_vars = dict(
- ansible_pkg_mgr='yum',
- openshift=dict(common=dict(service_type='origin')),
- openshift_image_tag='v0',
- openshift_deployment_type='origin',
- )
- check = PackageVersion(lambda *_: {}, task_vars)
- with pytest.raises(OpenShiftCheckException) as excinfo:
- check.run()
- assert "invalid version" in str(excinfo.value)
- @pytest.mark.parametrize('openshift_release', [
- "111.7.0",
- "3.7",
- "3.6",
- "3.5.1.2.3",
- "3.5",
- "3.4",
- "3.3",
- "2.1.0",
- ])
- def test_package_version(openshift_release):
- return_value = object()
- def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None, *_):
- assert module_name == 'aos_version'
- assert "package_list" in module_args
- for pkg in module_args["package_list"]:
- if "-master" in pkg["name"] or "-node" in pkg["name"]:
- assert pkg["version"] == task_vars["openshift_release"]
- return return_value
- check = PackageVersion(execute_module, task_vars_for(openshift_release, 'origin'))
- result = check.run()
- assert result is return_value
- @pytest.mark.parametrize('deployment_type,openshift_release,expected_docker_version', [
- ("origin", "3.5", "1.12"),
- ("origin", "1.3", "1.10"),
- ("origin", "1.1", "1.8"),
- ("openshift-enterprise", "3.4", "1.12"),
- ("openshift-enterprise", "3.2", "1.10"),
- ("openshift-enterprise", "3.1", "1.8"),
- ])
- def test_docker_package_version(deployment_type, openshift_release, expected_docker_version):
- return_value = object()
- def execute_module(module_name=None, module_args=None, *_):
- assert module_name == 'aos_version'
- assert "package_list" in module_args
- for pkg in module_args["package_list"]:
- if pkg["name"] == "docker":
- assert pkg["version"] == expected_docker_version
- return return_value
- check = PackageVersion(execute_module, task_vars_for(openshift_release, deployment_type))
- result = check.run()
- assert result is return_value
- @pytest.mark.parametrize('group_names,is_containerized,is_active', [
- (['masters'], False, True),
- # ensure check is skipped on containerized installs
- (['masters'], True, False),
- (['nodes'], False, True),
- (['masters', 'nodes'], False, True),
- (['masters', 'etcd'], False, True),
- ([], False, False),
- (['etcd'], False, False),
- (['lb'], False, False),
- (['nfs'], False, False),
- ])
- def test_package_version_skip_when_not_master_nor_node(group_names, is_containerized, is_active):
- task_vars = dict(
- group_names=group_names,
- openshift=dict(common=dict(is_containerized=is_containerized)),
- )
- assert PackageVersion(None, task_vars).is_active() == is_active
|