]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: data_allocate_fraction: batch tests
authorJonas Pfefferle <pepperjo@japf.ch>
Fri, 4 Jun 2021 11:14:54 +0000 (13:14 +0200)
committerJonas Pfefferle <pepperjo@japf.ch>
Fri, 4 Jun 2021 14:15:43 +0000 (16:15 +0200)
lvm batch tests with data allocate fraction

Signed-off-by: Jonas Pfefferle <pepperjo@japf.ch>
src/ceph-volume/ceph_volume/tests/conftest.py
src/ceph-volume/ceph_volume/tests/devices/lvm/test_batch.py
src/ceph-volume/ceph_volume/tests/util/test_arg_validators.py
src/ceph-volume/ceph_volume/util/arg_validators.py

index afea4504d36a8352fcc524313f7da262dca4ec1c..80f194d4933cedeb047775ecd538d961f68f45f4 100644 (file)
@@ -293,3 +293,7 @@ def device_info(monkeypatch, patch_bluestore_label):
         monkeypatch.setattr("ceph_volume.util.device.disk.blkid", lambda path: blkid)
         monkeypatch.setattr("ceph_volume.util.disk.udevadm_property", lambda *a, **kw: udevadm)
     return apply
+
+@pytest.fixture(params=[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 0.999, 1.0])
+def data_allocate_fraction(request):
+    return request.param
index 7c968ae81d5e5b7f9d5db00b42a855a487b20c9b..35c1fd2f8c25d015d41e8a75b9dc3a81d5579b40 100644 (file)
@@ -49,6 +49,7 @@ class TestBatch(object):
                        bluestore=True,
                        block_db_size="1G",
                        dmcrypt=True,
+                       data_allocate_fraction=1.0,
                       )
         b = batch.Batch([])
         plan = b.get_plan(args)
@@ -71,6 +72,7 @@ class TestBatch(object):
                        bluestore=True,
                        block_db_size="1G",
                        dmcrypt=True,
+                       data_allocate_fraction=1.0,
                       )
         b = batch.Batch([])
         plan = b.get_plan(args)
@@ -96,6 +98,7 @@ class TestBatch(object):
                        bluestore=True,
                        block_db_size="1G",
                        dmcrypt=True,
+                       data_allocate_fraction=1.0,
                       )
         b = batch.Batch([])
         plan = b.get_plan(args)
@@ -123,6 +126,7 @@ class TestBatch(object):
                        bluestore=True,
                        block_db_size="1G",
                        dmcrypt=True,
+                       data_allocate_fraction=1.0,
                       )
         b = batch.Batch([])
         plan = b.get_plan(args)
@@ -170,30 +174,35 @@ class TestBatch(object):
                                           osds_per_device):
         conf_ceph_stub('[global]\nfsid=asdf-lkjh')
         args = factory(data_slots=1, osds_per_device=osds_per_device,
-                       osd_ids=[], dmcrypt=False)
+                       osd_ids=[], dmcrypt=False,
+                       data_allocate_fraction=1.0)
         osds = batch.get_physical_osds(mock_devices_available, args)
         assert len(osds) == len(mock_devices_available) * osds_per_device
 
     def test_get_physical_osds_rel_size(self, factory,
                                           mock_devices_available,
                                           conf_ceph_stub,
-                                          osds_per_device):
+                                          osds_per_device,
+                                          data_allocate_fraction):
         args = factory(data_slots=1, osds_per_device=osds_per_device,
-                       osd_ids=[], dmcrypt=False)
+                       osd_ids=[], dmcrypt=False,
+                       data_allocate_fraction=data_allocate_fraction)
         osds = batch.get_physical_osds(mock_devices_available, args)
         for osd in osds:
-            assert osd.data[1] == 1.0 / osds_per_device
+            assert osd.data[1] == data_allocate_fraction / osds_per_device
 
     def test_get_physical_osds_abs_size(self, factory,
                                           mock_devices_available,
                                           conf_ceph_stub,
-                                          osds_per_device):
+                                          osds_per_device,
+                                          data_allocate_fraction):
         conf_ceph_stub('[global]\nfsid=asdf-lkjh')
         args = factory(data_slots=1, osds_per_device=osds_per_device,
-                       osd_ids=[], dmcrypt=False)
+                       osd_ids=[], dmcrypt=False,
+                       data_allocate_fraction=data_allocate_fraction)
         osds = batch.get_physical_osds(mock_devices_available, args)
         for osd, dev in zip(osds, mock_devices_available):
-            assert osd.data[2] == int(dev.vg_size[0] / osds_per_device)
+            assert osd.data[2] == int(dev.vg_size[0] * (data_allocate_fraction / osds_per_device))
 
     def test_get_physical_osds_osd_ids(self, factory,
                                           mock_devices_available,
index 6666f318b4ffc92a3042a9b0c3daee43d5c720f7..c4181d7678f55b30620d9de95305273f266773ff 100644 (file)
@@ -98,6 +98,10 @@ class TestValidFraction(object):
         result = self.validator('0.8')
         assert result == 0.8
 
+    def test_fraction_not_float(self, fake_call):
+        with pytest.raises(ValueError):
+            self.validator('xyz')
+
     def test_fraction_is_nan(self, fake_call):
         with pytest.raises(argparse.ArgumentError):
             self.validator('NaN')
index e04e2018834e53793e590cb943b25b199aade5a3..39ad6384f2d62565d1ccd870675b0ac8a04da279 100644 (file)
@@ -158,5 +158,5 @@ class ValidFraction(object):
     def __call__(self, fraction):
         fraction_float = float(fraction)
         if math.isnan(fraction_float) or fraction_float <= 0.0 or fraction_float > 1.0:
-            raise argparse.ArgumentTypeError('Fraction not in (0,1.0]')
+            raise argparse.ArgumentError(None, 'Fraction %f not in (0,1.0]' % fraction_float)
         return fraction_float