From eb4dd094036205609bd9454696babde9bacc363c Mon Sep 17 00:00:00 2001 From: Alfredo Deza Date: Tue, 11 Sep 2018 12:57:21 -0400 Subject: [PATCH] ceph-volume tests verify strategy validators for minimum size Signed-off-by: Alfredo Deza (cherry picked from commit 9167f76c2a7107c82b781cbe5f51e24ee72e4db4) --- .../tests/devices/lvm/strategies/__init__.py | 0 .../devices/lvm/strategies/test_validate.py | 52 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 src/ceph-volume/ceph_volume/tests/devices/lvm/strategies/__init__.py create mode 100644 src/ceph-volume/ceph_volume/tests/devices/lvm/strategies/test_validate.py diff --git a/src/ceph-volume/ceph_volume/tests/devices/lvm/strategies/__init__.py b/src/ceph-volume/ceph_volume/tests/devices/lvm/strategies/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/ceph-volume/ceph_volume/tests/devices/lvm/strategies/test_validate.py b/src/ceph-volume/ceph_volume/tests/devices/lvm/strategies/test_validate.py new file mode 100644 index 0000000000000..315ec7c5b7447 --- /dev/null +++ b/src/ceph-volume/ceph_volume/tests/devices/lvm/strategies/test_validate.py @@ -0,0 +1,52 @@ +import pytest +from ceph_volume.util import disk +from ceph_volume.devices.lvm.strategies import validators + + +class TestMinimumDeviceSize(object): + + def test_size_is_larger_than_5gb(self, fakedevice): + devices = [fakedevice(sys_api=dict(size=6073740000))] + assert validators.minimum_device_size(devices) is None + + def test_size_is_smaller_than_5gb(self, fakedevice): + devices = [fakedevice(sys_api=dict(size=1073740000))] + with pytest.raises(RuntimeError) as error: + validators.minimum_device_size(devices) + msg = "LVs would be smaller than 5GB" + assert msg in str(error) + + def test_large_device_multiple_osds_fails(self, fakedevice): + devices = [fakedevice(sys_api=dict(size=6073740000))] + with pytest.raises(RuntimeError) as error: + validators.minimum_device_size( + devices, osds_per_device=4 + ) + msg = "LVs would be smaller than 5GB" + assert msg in str(error) + + +class TestMinimumCollocatedDeviceSize(object): + + def setup(self): + self.journal_size = disk.Size(gb=5) + + def test_size_is_larger_than_5gb_large_journal(self, fakedevice): + devices = [fakedevice(sys_api=dict(size=6073740000))] + assert validators.minimum_device_collocated_size(devices, disk.Size(mb=1)) is None + + def test_size_is_larger_than_5gb_large_journal_fails(self, fakedevice): + devices = [fakedevice(sys_api=dict(size=1073740000))] + with pytest.raises(RuntimeError) as error: + validators.minimum_device_collocated_size(devices, self.journal_size) + msg = "LVs would be smaller than 5GB" + assert msg in str(error) + + def test_large_device_multiple_osds_fails(self, fakedevice): + devices = [fakedevice(sys_api=dict(size=16073740000))] + with pytest.raises(RuntimeError) as error: + validators.minimum_device_collocated_size( + devices, self.journal_size, osds_per_device=3 + ) + msg = "LVs would be smaller than 5GB" + assert msg in str(error) -- 2.39.5