memory_availability_test.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import pytest
  2. from openshift_checks.memory_availability import MemoryAvailability
  3. @pytest.mark.parametrize('group_names,is_active', [
  4. (['masters'], True),
  5. (['nodes'], True),
  6. (['etcd'], True),
  7. (['masters', 'nodes'], True),
  8. (['masters', 'etcd'], True),
  9. ([], False),
  10. (['lb'], False),
  11. (['nfs'], False),
  12. ])
  13. def test_is_active(group_names, is_active):
  14. task_vars = dict(
  15. group_names=group_names,
  16. )
  17. assert MemoryAvailability.is_active(task_vars=task_vars) == is_active
  18. @pytest.mark.parametrize('group_names,ansible_memtotal_mb', [
  19. (
  20. ['masters'],
  21. 17200,
  22. ),
  23. (
  24. ['nodes'],
  25. 8200,
  26. ),
  27. (
  28. ['etcd'],
  29. 22200,
  30. ),
  31. (
  32. ['masters', 'nodes'],
  33. 17000,
  34. ),
  35. ])
  36. def test_succeeds_with_recommended_memory(group_names, ansible_memtotal_mb):
  37. task_vars = dict(
  38. group_names=group_names,
  39. ansible_memtotal_mb=ansible_memtotal_mb,
  40. )
  41. check = MemoryAvailability(execute_module=fake_execute_module)
  42. result = check.run(tmp=None, task_vars=task_vars)
  43. assert not result.get('failed', False)
  44. @pytest.mark.parametrize('group_names,ansible_memtotal_mb,extra_words', [
  45. (
  46. ['masters'],
  47. 0,
  48. ['0.0 GB'],
  49. ),
  50. (
  51. ['nodes'],
  52. 100,
  53. ['0.1 GB'],
  54. ),
  55. (
  56. ['etcd'],
  57. -1,
  58. ['0.0 GB'],
  59. ),
  60. (
  61. ['nodes', 'masters'],
  62. # enough memory for a node, not enough for a master
  63. 11000,
  64. ['11.0 GB'],
  65. ),
  66. ])
  67. def test_fails_with_insufficient_memory(group_names, ansible_memtotal_mb, extra_words):
  68. task_vars = dict(
  69. group_names=group_names,
  70. ansible_memtotal_mb=ansible_memtotal_mb,
  71. )
  72. check = MemoryAvailability(execute_module=fake_execute_module)
  73. result = check.run(tmp=None, task_vars=task_vars)
  74. assert result['failed']
  75. for word in 'below recommended'.split() + extra_words:
  76. assert word in result['msg']
  77. def fake_execute_module(*args):
  78. raise AssertionError('this function should not be called')