]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: data_allocate_fraction: batch tests 53581/head
authorJonas Pfefferle <pepperjo@japf.ch>
Fri, 4 Jun 2021 11:14:54 +0000 (13:14 +0200)
committerAdam King <adking@redhat.com>
Thu, 21 Sep 2023 13:10:31 +0000 (09:10 -0400)
lvm batch tests with data allocate fraction

Signed-off-by: Jonas Pfefferle <pepperjo@japf.ch>
(cherry picked from commit 43b06cd00891056130ea7b4537e94d16972a5aff)

Conflicts:
src/ceph-volume/ceph_volume/tests/conftest.py

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 8ec8ca131ec40041f7d49fef0663393a6cad66e0..75628f8478e1a305703511770f3f4fc2ef0ed3f6 100644 (file)
@@ -319,3 +319,7 @@ def fake_filesystem(fs):
     fs.create_dir('/sys/block/sda/queue')
     fs.create_dir('/sys/block/rbd0')
     yield fs
+
+@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 8a0f8df8c381b916cf01e3127f4d6122c059c9a7..d27134d5341886138a22dc582eebba566781dc96 100644 (file)
@@ -57,6 +57,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)
@@ -79,6 +80,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)
@@ -104,6 +106,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)
@@ -131,6 +134,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)
@@ -178,30 +182,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 3babecf827302d3ace353c4fcdfb6d1b8e4efbe3..35bf295b9a51f74418840bfc0c4fd07d875cf76c 100644 (file)
@@ -346,6 +346,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 ae62ace256f3e6e98a932f2fb19f396e0d076aca..655f7cd55ed0f9d882e72a255a267da0524930ee 100644 (file)
@@ -230,5 +230,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