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 (default block size is 512) self.assertTrue(status.state) self.assertEqual(status.state, "clean") self.assertEqual(status.block_size, 512) self.assertGreater(status.cache_size, 0) 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_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_bcache_attach_detach_full_path(self): """Verify that it's possible to detach/attach a cache from/to a bcache device with full device path""" 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) succ, c_set_uuid = BlockDev.kbd_bcache_detach("/dev/" + self.bcache_dev) self.assertTrue(succ) self.assertTrue(c_set_uuid) succ = BlockDev.kbd_bcache_attach(c_set_uuid, "/dev/" + self.bcache_dev) self.assertTrue(succ) 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_bcache_create_destroy_full_path(self): """Verify that it's possible to create and destroy a bcache device with full device path""" 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) succ = BlockDev.kbd_bcache_destroy("/dev/" + self.bcache_dev) self.assertTrue(succ) self.bcache_dev = None time.sleep(5) wipe_all(self.loop_dev, self.loop_dev2)
def test_bcache_get_set_mode(self): """Verify that it is possible to get and set Bcache mode""" 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) mode = BlockDev.kbd_bcache_get_mode(self.bcache_dev) self.assertNotEqual(mode, BlockDev.KBDBcacheMode.UNKNOWN) for mode_str in ("writethrough", "writeback", "writearound", "none"): mode = BlockDev.kbd_bcache_get_mode_from_str(mode_str) succ = BlockDev.kbd_bcache_set_mode(self.bcache_dev, mode) self.assertTrue(succ) new_mode = BlockDev.kbd_bcache_get_mode(self.bcache_dev) self.assertEqual(mode, new_mode) self.assertEqual(mode_str, BlockDev.kbd_bcache_get_mode_str(new_mode)) mode_str = "unknown" mode = BlockDev.kbd_bcache_get_mode_from_str(mode_str) with self.assertRaises(GLib.GError): # cannot set mode to "uknown" BlockDev.kbd_bcache_set_mode(self.bcache_dev, mode) mode_str = "bla" with self.assertRaises(GLib.GError): mode = BlockDev.kbd_bcache_get_mode_from_str(mode_str) # set back to some caching mode mode_str = "writethrough" mode = BlockDev.kbd_bcache_get_mode_from_str(mode_str) succ = BlockDev.kbd_bcache_set_mode(self.bcache_dev, mode) self.assertTrue(succ) _wait_for_bcache_setup(dev) 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_bcache_backing_cache_dev(self): """Verify that is is possible to get the backing and cache devices for a Bcache""" 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) self.assertEqual("/dev/" + BlockDev.kbd_bcache_get_backing_device(self.bcache_dev), self.loop_dev) self.assertEqual("/dev/" + BlockDev.kbd_bcache_get_cache_device(self.bcache_dev), self.loop_dev2) 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_bcache_detach_destroy(self): """Verify that it's possible to destroy a bcache device with no cache attached""" 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) succ, c_set_uuid = BlockDev.kbd_bcache_detach(self.bcache_dev) self.assertTrue(succ) self.assertTrue(c_set_uuid) 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)