package_version_test.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  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_ovs_version', [
  58. ("openshift-enterprise", "3.5", "2.6"),
  59. ("origin", "3.6", "2.6"),
  60. ("openshift-enterprise", "3.4", "2.4"),
  61. ("origin", "3.3", "2.4"),
  62. ])
  63. def test_ovs_package_version(deployment_type, openshift_release, expected_ovs_version):
  64. task_vars = dict(
  65. openshift=dict(common=dict(service_type='origin')),
  66. openshift_release=openshift_release,
  67. openshift_image_tag='v' + openshift_release,
  68. openshift_deployment_type=deployment_type,
  69. )
  70. return_value = object()
  71. def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None):
  72. assert module_name == 'aos_version'
  73. assert "package_list" in module_args
  74. for pkg in module_args["package_list"]:
  75. if pkg["name"] == "openvswitch":
  76. assert pkg["version"] == expected_ovs_version
  77. return return_value
  78. check = PackageVersion(execute_module=execute_module)
  79. result = check.run(tmp=None, task_vars=task_vars)
  80. assert result is return_value
  81. @pytest.mark.parametrize('deployment_type,openshift_release,expected_docker_version', [
  82. ("origin", "3.5", "1.12"),
  83. ("openshift-enterprise", "3.4", "1.12"),
  84. ("origin", "3.3", "1.10"),
  85. ("openshift-enterprise", "3.2", "1.10"),
  86. ("origin", "3.1", "1.8"),
  87. ("openshift-enterprise", "3.1", "1.8"),
  88. ])
  89. def test_docker_package_version(deployment_type, openshift_release, expected_docker_version):
  90. task_vars = dict(
  91. openshift=dict(common=dict(service_type='origin')),
  92. openshift_release=openshift_release,
  93. openshift_image_tag='v' + openshift_release,
  94. openshift_deployment_type=deployment_type,
  95. )
  96. return_value = object()
  97. def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None):
  98. assert module_name == 'aos_version'
  99. assert "package_list" in module_args
  100. for pkg in module_args["package_list"]:
  101. if pkg["name"] == "docker":
  102. assert pkg["version"] == expected_docker_version
  103. return return_value
  104. check = PackageVersion(execute_module=execute_module)
  105. result = check.run(tmp=None, task_vars=task_vars)
  106. assert result is return_value
  107. @pytest.mark.parametrize('group_names,is_containerized,is_active', [
  108. (['masters'], False, True),
  109. # ensure check is skipped on containerized installs
  110. (['masters'], True, False),
  111. (['nodes'], False, True),
  112. (['masters', 'nodes'], False, True),
  113. (['masters', 'etcd'], False, True),
  114. ([], False, False),
  115. (['etcd'], False, False),
  116. (['lb'], False, False),
  117. (['nfs'], False, False),
  118. ])
  119. def test_package_version_skip_when_not_master_nor_node(group_names, is_containerized, is_active):
  120. task_vars = dict(
  121. group_names=group_names,
  122. openshift=dict(common=dict(is_containerized=is_containerized)),
  123. )
  124. assert PackageVersion.is_active(task_vars=task_vars) == is_active