openshift_master_facts_default_predicates_tests.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import pytest
  2. # Predicates ordered according to OpenShift Origin source:
  3. # origin/vendor/k8s.io/kubernetes/plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go
  4. DEFAULT_PREDICATES_3_6 = [
  5. {'name': 'NoVolumeZoneConflict'},
  6. {'name': 'MaxEBSVolumeCount'},
  7. {'name': 'MaxGCEPDVolumeCount'},
  8. {'name': 'MatchInterPodAffinity'},
  9. {'name': 'NoDiskConflict'},
  10. {'name': 'GeneralPredicates'},
  11. {'name': 'PodToleratesNodeTaints'},
  12. {'name': 'CheckNodeMemoryPressure'},
  13. {'name': 'CheckNodeDiskPressure'},
  14. ]
  15. DEFAULT_PREDICATES_3_7 = [
  16. {'name': 'NoVolumeZoneConflict'},
  17. {'name': 'MaxEBSVolumeCount'},
  18. {'name': 'MaxGCEPDVolumeCount'},
  19. {'name': 'MaxAzureDiskVolumeCount'},
  20. {'name': 'MatchInterPodAffinity'},
  21. {'name': 'NoDiskConflict'},
  22. {'name': 'GeneralPredicates'},
  23. {'name': 'PodToleratesNodeTaints'},
  24. {'name': 'CheckNodeMemoryPressure'},
  25. {'name': 'CheckNodeDiskPressure'},
  26. {'name': 'NoVolumeNodeConflict'},
  27. ]
  28. DEFAULT_PREDICATES_3_8 = DEFAULT_PREDICATES_3_7
  29. DEFAULT_PREDICATES_3_9 = [
  30. {'name': 'NoVolumeZoneConflict'},
  31. {'name': 'MaxEBSVolumeCount'},
  32. {'name': 'MaxGCEPDVolumeCount'},
  33. {'name': 'MaxAzureDiskVolumeCount'},
  34. {'name': 'MatchInterPodAffinity'},
  35. {'name': 'NoDiskConflict'},
  36. {'name': 'GeneralPredicates'},
  37. {'name': 'PodToleratesNodeTaints'},
  38. {'name': 'CheckNodeMemoryPressure'},
  39. {'name': 'CheckNodeDiskPressure'},
  40. {'name': 'CheckVolumeBinding'},
  41. ]
  42. DEFAULT_PREDICATES_3_10 = DEFAULT_PREDICATES_3_9
  43. REGION_PREDICATE = {
  44. 'name': 'Region',
  45. 'argument': {
  46. 'serviceAffinity': {
  47. 'labels': ['region']
  48. }
  49. }
  50. }
  51. CLOUD_PROVIDER_REGION_PREDICATE = {
  52. 'name': 'Region',
  53. 'argument': {
  54. 'serviceAffinity': {
  55. 'labels': ['failure-domain.beta.kubernetes.io/region']
  56. }
  57. }
  58. }
  59. TEST_VARS = [
  60. ('3.6', DEFAULT_PREDICATES_3_6),
  61. ('3.7', DEFAULT_PREDICATES_3_7),
  62. ('3.8', DEFAULT_PREDICATES_3_8),
  63. ('3.9', DEFAULT_PREDICATES_3_9),
  64. ('3.10', DEFAULT_PREDICATES_3_10),
  65. ]
  66. def assert_ok(predicates_lookup, default_predicates, regions_enabled, cloudprovider_enabled, **kwargs):
  67. results = predicates_lookup.run(None, regions_enabled=regions_enabled,
  68. cloudprovider_enabled=cloudprovider_enabled, **kwargs)
  69. if regions_enabled and cloudprovider_enabled:
  70. assert results == default_predicates + [CLOUD_PROVIDER_REGION_PREDICATE]
  71. elif regions_enabled and not cloudprovider_enabled:
  72. assert results == default_predicates + [REGION_PREDICATE]
  73. else:
  74. assert results == default_predicates
  75. def test_openshift_version(predicates_lookup, openshift_version_fixture, regions_enabled, cloudprovider_enabled):
  76. facts, default_predicates = openshift_version_fixture
  77. assert_ok(predicates_lookup, default_predicates, variables=facts, regions_enabled=regions_enabled,
  78. cloudprovider_enabled=cloudprovider_enabled)
  79. @pytest.fixture(params=TEST_VARS)
  80. def openshift_version_fixture(request, facts):
  81. version, default_predicates = request.param
  82. version += '.1'
  83. facts['openshift_version'] = version
  84. return facts, default_predicates
  85. def test_openshift_release(predicates_lookup, openshift_release_fixture, regions_enabled, cloudprovider_enabled):
  86. facts, default_predicates = openshift_release_fixture
  87. assert_ok(predicates_lookup, default_predicates, variables=facts, regions_enabled=regions_enabled,
  88. cloudprovider_enabled=cloudprovider_enabled)
  89. @pytest.fixture(params=TEST_VARS)
  90. def openshift_release_fixture(request, facts, release_mod):
  91. release, default_predicates = request.param
  92. facts['openshift_release'] = release_mod(release)
  93. return facts, default_predicates
  94. def test_short_version_kwarg(predicates_lookup, short_version_kwarg_fixture, regions_enabled, cloudprovider_enabled):
  95. facts, short_version, default_predicates = short_version_kwarg_fixture
  96. assert_ok(
  97. predicates_lookup, default_predicates, variables=facts,
  98. regions_enabled=regions_enabled, short_version=short_version,
  99. cloudprovider_enabled=cloudprovider_enabled)
  100. @pytest.fixture(params=TEST_VARS)
  101. def short_version_kwarg_fixture(request, facts):
  102. short_version, default_predicates = request.param
  103. return facts, short_version, default_predicates