Example #1
0
    def test_get_thpool_meta_size(self):
        """Verify that getting recommended thin pool metadata size works as expected"""

        # no idea how thin_metadata_size works, but let's at least check that
        # the function works and returns what thin_metadata_size says
        out1 = subprocess.check_output(["thin_metadata_size", "-ub", "-n", "-b64k", "-s1t", "-m100"])
        self.assertEqual(int(out1), BlockDev.lvm_get_thpool_meta_size (1 * 1024**4, 64 * 1024, 100))

        out2 = subprocess.check_output(["thin_metadata_size", "-ub", "-n", "-b128k", "-s1t", "-m100"])
        self.assertEqual(int(out2), BlockDev.lvm_get_thpool_meta_size (1 * 1024**4, 128 * 1024, 100))

        # twice the chunk_size -> roughly half the metadata needed
        self.assertAlmostEqual(float(out1) / float(out2), 2, places=2)

        # unless thin_metadata_size gives a value that is not valid (too small)
        self.assertEqual(BlockDev.lvm_get_thpool_meta_size (100 * 1024**2, 128 * 1024, 100),
                         BlockDev.LVM_MIN_THPOOL_MD_SIZE)