ovs_version_test.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import pytest
  2. from openshift_checks.ovs_version import OvsVersion, OpenShiftCheckException
  3. def test_openshift_version_not_supported():
  4. def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None):
  5. return {}
  6. openshift_release = '111.7.0'
  7. task_vars = dict(
  8. openshift=dict(common=dict(service_type='origin')),
  9. openshift_release=openshift_release,
  10. openshift_image_tag='v' + openshift_release,
  11. openshift_deployment_type='origin',
  12. )
  13. check = OvsVersion(execute_module=execute_module)
  14. with pytest.raises(OpenShiftCheckException) as excinfo:
  15. check.run(tmp=None, task_vars=task_vars)
  16. assert "no recommended version of Open vSwitch" in str(excinfo.value)
  17. def test_invalid_openshift_release_format():
  18. def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None):
  19. return {}
  20. task_vars = dict(
  21. openshift=dict(common=dict(service_type='origin')),
  22. openshift_image_tag='v0',
  23. openshift_deployment_type='origin',
  24. )
  25. check = OvsVersion(execute_module=execute_module)
  26. with pytest.raises(OpenShiftCheckException) as excinfo:
  27. check.run(tmp=None, task_vars=task_vars)
  28. assert "invalid version" in str(excinfo.value)
  29. @pytest.mark.parametrize('openshift_release,expected_ovs_version', [
  30. ("3.5", "2.6"),
  31. ("3.6", "2.6"),
  32. ("3.4", "2.4"),
  33. ("3.3", "2.4"),
  34. ("1.0", "2.4"),
  35. ])
  36. def test_ovs_package_version(openshift_release, expected_ovs_version):
  37. task_vars = dict(
  38. openshift=dict(common=dict(service_type='origin')),
  39. openshift_release=openshift_release,
  40. openshift_image_tag='v' + openshift_release,
  41. )
  42. return_value = object()
  43. def execute_module(module_name=None, module_args=None, tmp=None, task_vars=None):
  44. assert module_name == 'rpm_version'
  45. assert "package_list" in module_args
  46. for pkg in module_args["package_list"]:
  47. if pkg["name"] == "openvswitch":
  48. assert pkg["version"] == expected_ovs_version
  49. return return_value
  50. check = OvsVersion(execute_module=execute_module)
  51. result = check.run(tmp=None, task_vars=task_vars)
  52. assert result is return_value
  53. @pytest.mark.parametrize('group_names,is_containerized,is_active', [
  54. (['masters'], False, True),
  55. # ensure check is skipped on containerized installs
  56. (['masters'], True, False),
  57. (['nodes'], False, True),
  58. (['masters', 'nodes'], False, True),
  59. (['masters', 'etcd'], False, True),
  60. ([], False, False),
  61. (['etcd'], False, False),
  62. (['lb'], False, False),
  63. (['nfs'], False, False),
  64. ])
  65. def test_ovs_version_skip_when_not_master_nor_node(group_names, is_containerized, is_active):
  66. task_vars = dict(
  67. group_names=group_names,
  68. openshift=dict(common=dict(is_containerized=is_containerized)),
  69. )
  70. assert OvsVersion.is_active(task_vars=task_vars) == is_active