def test_get_info(self): """Verify that it is possible to get information about an existing VDO volume""" ret = BlockDev.vdo_create(self.vdo_name, self.loop_dev) self.addCleanup(self._remove_vdo, self.vdo_name) self.assertTrue(ret) bd_info = BlockDev.vdo_info(self.vdo_name) self.assertIsNotNone(bd_info) sys_info = self._get_vdo_info(self.vdo_name) self.assertIsNotNone(sys_info) self.assertEqual(bd_info.deduplication, sys_info["Deduplication"] == "enabled") self.assertEqual(bd_info.deduplication, sys_info["Compression"] == "enabled") self.assertEqual(BlockDev.vdo_get_write_policy_str(bd_info.write_policy), sys_info["Configured write policy"]) # index memory is printed in gigabytes without the unit self.assertEqual(bd_info.index_memory, sys_info["Index memory setting"] * 1000**3) # logical and physical size are printed with units self.assertEqual(bd_info.physical_size, bytesize.Size(sys_info["Physical size"])) self.assertEqual(bd_info.logical_size, bytesize.Size(sys_info["Logical size"]))
def test_resize(self): dev = self._get_devices(1)[0] self.addCleanup(self._clean_format, dev.obj) manager = self.get_object('/Manager') manager.CreateVolume([dev.obj_path], 'test_snapshot', 'single', 'single', self.no_options, dbus_interface=self.iface_prefix + '.Manager.BTRFS') self.write_file("/sys/block/%s/uevent" % dev.name, "change\n") fstype = self.get_property(dev.obj, '.Block', 'IdType') fstype.assertEqual('btrfs') with self._temp_mount(dev.path) as mnt: new_size = dev.size - 20 * 1024**2 dev.obj.Resize(dbus.UInt64(new_size), self.no_options, dbus_interface=self.iface_prefix + '.Filesystem.BTRFS') _ret, out = self.run_command('btrfs filesystem show %s' % mnt) m = re.search(r'.*devid +1 size (.+) used', out, flags=re.DOTALL) sys_size = bytesize.Size(m.group(1)) self.assertEqual(sys_size.convert_to(bytesize.B), new_size)
def test_bcache_status(self): succ, dev = BlockDev.kbd_bcache_create(self.loop_dev, self.loop_dev2, None) self.assertTrue(succ) self.assertTrue(dev) self.bcache_dev = dev _wait_for_bcache_setup(dev) # should work with both "bcacheX" and "/dev/bcacheX" status = BlockDev.kbd_bcache_status(self.bcache_dev) self.assertTrue(status) status = BlockDev.kbd_bcache_status("/dev/" + self.bcache_dev) self.assertTrue(status) # check some basic values self.assertTrue(status.state) sys_state = read_file("/sys/block/%s/bcache/state" % self.bcache_dev).strip() self.assertEqual(status.state, sys_state) sys_block = read_file("/sys/block/%s/bcache/cache/block_size" % self.bcache_dev).strip() self.assertEqual(status.block_size, int(bytesize.Size(sys_block))) sys_size = self._get_size(self.bcache_dev) self.assertGreater(status.cache_size, sys_size) succ = BlockDev.kbd_bcache_destroy(self.bcache_dev) self.assertTrue(succ) self.bcache_dev = None time.sleep(1) wipe_all(self.loop_dev, self.loop_dev2)
def test_create(self): dev = self._get_devices(1)[0] self.addCleanup(self._clean_format, dev.obj) manager = self.get_object('/Manager') manager.CreateVolume([dev.obj_path], 'test_single', 'single', 'single', self.no_options, dbus_interface=self.iface_prefix + '.Manager.BTRFS') self.write_file("/sys/block/%s/uevent" % dev.name, "change\n") # check filesystem type usage = self.get_property(dev.obj, '.Block', 'IdUsage') usage.assertEqual('filesystem') fstype = self.get_property(dev.obj, '.Block', 'IdType') fstype.assertEqual('btrfs') # check '.Filesystem.BTRFS' properties dbus_label = self.get_property(dev.obj, '.Filesystem.BTRFS', 'label') _ret, sys_label = self.run_command('lsblk -d -no LABEL %s' % dev.path) dbus_label.assertEqual('test_single') dbus_label.assertEqual(sys_label) dbus_uuid = self.get_property(dev.obj, '.Filesystem.BTRFS', 'uuid') _ret, sys_uuid = self.run_command('lsblk -d -no UUID %s' % dev.path) dbus_uuid.assertEqual(sys_uuid) dbus_devs = self.get_property(dev.obj, '.Filesystem.BTRFS', 'num_devices') dbus_devs.assertEqual(1) # check size with self._temp_mount(dev.path) as mnt: _ret, out = self.run_command('btrfs filesystem show %s' % mnt) m = re.search(r'.*devid +1 size (.+) used', out, flags=re.DOTALL) sys_size = bytesize.Size(m.group(1)) self.assertEqual(sys_size.convert_to(bytesize.B), dev.size)