|
@@ -97,8 +97,9 @@ def test_succeeds_with_recommended_disk_space(group_names, configured_min, ansib
|
|
|
assert not result.get('failed', False)
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize('group_names,configured_min,ansible_mounts,extra_words', [
|
|
|
+@pytest.mark.parametrize('name,group_names,configured_min,ansible_mounts,extra_words', [
|
|
|
(
|
|
|
+ 'test with no space available',
|
|
|
['masters'],
|
|
|
0,
|
|
|
[{
|
|
@@ -108,6 +109,7 @@ def test_succeeds_with_recommended_disk_space(group_names, configured_min, ansib
|
|
|
['0.0 GB'],
|
|
|
),
|
|
|
(
|
|
|
+ 'test with a higher configured required value',
|
|
|
['masters'],
|
|
|
100, # set a higher threshold
|
|
|
[{
|
|
@@ -117,6 +119,7 @@ def test_succeeds_with_recommended_disk_space(group_names, configured_min, ansib
|
|
|
['100.0 GB'],
|
|
|
),
|
|
|
(
|
|
|
+ 'test with 1GB available, but "0" GB space requirement',
|
|
|
['nodes'],
|
|
|
0,
|
|
|
[{
|
|
@@ -126,6 +129,7 @@ def test_succeeds_with_recommended_disk_space(group_names, configured_min, ansib
|
|
|
['1.0 GB'],
|
|
|
),
|
|
|
(
|
|
|
+ 'test with no space available, but "0" GB space requirement',
|
|
|
['etcd'],
|
|
|
0,
|
|
|
[{
|
|
@@ -135,16 +139,17 @@ def test_succeeds_with_recommended_disk_space(group_names, configured_min, ansib
|
|
|
['0.0 GB'],
|
|
|
),
|
|
|
(
|
|
|
+ 'test with enough space for a node, but not for a master',
|
|
|
['nodes', 'masters'],
|
|
|
0,
|
|
|
[{
|
|
|
'mount': '/',
|
|
|
- # enough space for a node, not enough for a master
|
|
|
'size_available': 15 * 10**9 + 1,
|
|
|
}],
|
|
|
['15.0 GB'],
|
|
|
),
|
|
|
(
|
|
|
+ 'test failure with enough space on "/", but not enough on "/var"',
|
|
|
['etcd'],
|
|
|
0,
|
|
|
[{
|
|
@@ -158,8 +163,8 @@ def test_succeeds_with_recommended_disk_space(group_names, configured_min, ansib
|
|
|
}],
|
|
|
['0.0 GB'],
|
|
|
),
|
|
|
-])
|
|
|
-def test_fails_with_insufficient_disk_space(group_names, configured_min, ansible_mounts, extra_words):
|
|
|
+], ids=lambda argval: argval[0])
|
|
|
+def test_fails_with_insufficient_disk_space(name, group_names, configured_min, ansible_mounts, extra_words):
|
|
|
task_vars = dict(
|
|
|
group_names=group_names,
|
|
|
openshift_check_min_host_disk_gb=configured_min,
|
|
@@ -170,7 +175,61 @@ def test_fails_with_insufficient_disk_space(group_names, configured_min, ansible
|
|
|
|
|
|
assert result['failed']
|
|
|
for word in 'below recommended'.split() + extra_words:
|
|
|
- assert word in result['msg']
|
|
|
+ assert word in result.get('msg', '')
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize('name,group_names,context,ansible_mounts,failed,extra_words', [
|
|
|
+ (
|
|
|
+ 'test without enough space for master under "upgrade" context',
|
|
|
+ ['nodes', 'masters'],
|
|
|
+ "upgrade",
|
|
|
+ [{
|
|
|
+ 'mount': '/',
|
|
|
+ 'size_available': 1 * 10**9 + 1,
|
|
|
+ 'size_total': 21 * 10**9 + 1,
|
|
|
+ }],
|
|
|
+ True,
|
|
|
+ ["1.0 GB"],
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ 'test with enough space for master under "upgrade" context',
|
|
|
+ ['nodes', 'masters'],
|
|
|
+ "upgrade",
|
|
|
+ [{
|
|
|
+ 'mount': '/',
|
|
|
+ 'size_available': 10 * 10**9 + 1,
|
|
|
+ 'size_total': 21 * 10**9 + 1,
|
|
|
+ }],
|
|
|
+ False,
|
|
|
+ [],
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ 'test with not enough space for master, and non-upgrade context',
|
|
|
+ ['nodes', 'masters'],
|
|
|
+ "health",
|
|
|
+ [{
|
|
|
+ 'mount': '/',
|
|
|
+ # not enough space for a master,
|
|
|
+ # "health" context should not lower requirement
|
|
|
+ 'size_available': 20 * 10**9 + 1,
|
|
|
+ }],
|
|
|
+ True,
|
|
|
+ ["20.0 GB", "below minimum"],
|
|
|
+ ),
|
|
|
+], ids=lambda argval: argval[0])
|
|
|
+def test_min_required_space_changes_with_upgrade_context(name, group_names, context, ansible_mounts, failed, extra_words):
|
|
|
+ task_vars = dict(
|
|
|
+ r_openshift_health_checker_playbook_context=context,
|
|
|
+ group_names=group_names,
|
|
|
+ ansible_mounts=ansible_mounts,
|
|
|
+ )
|
|
|
+
|
|
|
+ check = DiskAvailability(execute_module=fake_execute_module)
|
|
|
+ result = check.run(tmp=None, task_vars=task_vars)
|
|
|
+
|
|
|
+ assert result.get("failed", False) == failed
|
|
|
+ for word in extra_words:
|
|
|
+ assert word in result.get('msg', '')
|
|
|
|
|
|
|
|
|
def fake_execute_module(*args):
|