package_version_test.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import pytest
  2. from openshift_checks.package_version import PackageVersion, OpenShiftCheckException
  3. @pytest.mark.parametrize('openshift_release, extra_words', [
  4. ('111.7.0', ["no recommended version of Open vSwitch"]),
  5. ('0.0.0', ["no recommended version of Docker"]),
  6. ])
  7. def test_openshift_version_not_supported(openshift_release, extra_words):
  8. def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None):
  9. return {}
  10. task_vars = dict(
  11. openshift=dict(common=dict(service_type='origin')),
  12. openshift_release=openshift_release,
  13. openshift_image_tag='v' + openshift_release,
  14. openshift_deployment_type='origin',
  15. )
  16. check = PackageVersion(execute_module=execute_module)
  17. with pytest.raises(OpenShiftCheckException) as excinfo:
  18. check.run(tmp=None, task_vars=task_vars)
  19. for word in extra_words:
  20. assert word in str(excinfo.value)
  21. def test_invalid_openshift_release_format():
  22. def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None):
  23. return {}
  24. task_vars = dict(
  25. openshift=dict(common=dict(service_type='origin')),
  26. openshift_image_tag='v0',
  27. openshift_deployment_type='origin',
  28. )
  29. check = PackageVersion(execute_module=execute_module)
  30. with pytest.raises(OpenShiftCheckException) as excinfo:
  31. check.run(tmp=None, task_vars=task_vars)
  32. assert "invalid version" in str(excinfo.value)
  33. @pytest.mark.parametrize('openshift_release', [
  34. "3.5",
  35. "3.6",
  36. "3.4",
  37. "3.3",
  38. ])
  39. def test_package_version(openshift_release):
  40. task_vars = dict(
  41. openshift=dict(common=dict(service_type='origin')),
  42. openshift_release=openshift_release,
  43. openshift_image_tag='v' + openshift_release,
  44. openshift_deployment_type='origin',
  45. )
  46. return_value = object()
  47. def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None):
  48. assert module_name == 'aos_version'
  49. assert "package_list" in module_args
  50. for pkg in module_args["package_list"]:
  51. if "-master" in pkg["name"] or "-node" in pkg["name"]:
  52. assert pkg["version"] == task_vars["openshift_release"]
  53. return return_value
  54. check = PackageVersion(execute_module=execute_module)
  55. result = check.run(tmp=None, task_vars=task_vars)
  56. assert result is return_value
  57. @pytest.mark.parametrize('deployment_type,openshift_release,expected_docker_version', [
  58. ("origin", "3.5", "1.12"),
  59. ("openshift-enterprise", "3.4", "1.12"),
  60. ("origin", "3.3", "1.10"),
  61. ("openshift-enterprise", "3.2", "1.10"),
  62. ("origin", "3.1", "1.8"),
  63. ("openshift-enterprise", "3.1", "1.8"),
  64. ])
  65. def test_docker_package_version(deployment_type, openshift_release, expected_docker_version):
  66. task_vars = dict(
  67. openshift=dict(common=dict(service_type='origin')),
  68. openshift_release=openshift_release,
  69. openshift_image_tag='v' + openshift_release,
  70. openshift_deployment_type=deployment_type,
  71. )
  72. return_value = object()
  73. def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None):
  74. assert module_name == 'aos_version'
  75. assert "package_list" in module_args
  76. for pkg in module_args["package_list"]:
  77. if pkg["name"] == "docker":
  78. assert pkg["version"] == expected_docker_version
  79. return return_value
  80. check = PackageVersion(execute_module=execute_module)
  81. result = check.run(tmp=None, task_vars=task_vars)
  82. assert result is return_value
  83. @pytest.mark.parametrize('group_names,is_containerized,is_active', [
  84. (['masters'], False, True),
  85. # ensure check is skipped on containerized installs
  86. (['masters'], True, False),
  87. (['nodes'], False, True),
  88. (['masters', 'nodes'], False, True),
  89. (['masters', 'etcd'], False, True),
  90. ([], False, False),
  91. (['etcd'], False, False),
  92. (['lb'], False, False),
  93. (['nfs'], False, False),
  94. ])
  95. def test_package_version_skip_when_not_master_nor_node(group_names, is_containerized, is_active):
  96. task_vars = dict(
  97. group_names=group_names,
  98. openshift=dict(common=dict(is_containerized=is_containerized)),
  99. )
  100. assert PackageVersion.is_active(task_vars=task_vars) == is_active