def test_topology(self): pr = blkid.Probe() pr.set_device(self.loop_dev) pr.enable_superblocks(True) pr.set_superblocks_flags(blkid.SUBLKS_TYPE | blkid.SUBLKS_USAGE | blkid.SUBLKS_UUID) pr.enable_topology(True) ret = pr.do_safeprobe() self.assertTrue(ret) self.assertIsNotNone(pr.topology) self.assertEqual(pr.topology.alignment_offset, 0) self.assertEqual(pr.topology.logical_sector_size, 512) self.assertEqual(pr.topology.minimum_io_size, 512) self.assertEqual(pr.topology.optimal_io_size, 0) self.assertEqual(pr.topology.physical_sector_size, 512) code, _version, _date = blkid.get_library_version() if code >= 2360: self.assertFalse(pr.topology.dax) else: with self.assertRaises(AttributeError): self.assertIsNone(pr.topology.dax)
def test_partlist(self): pr = blkid.Probe() pr.set_device(self.loop_dev) pr.enable_partitions(True) ret = pr.do_safeprobe() self.assertTrue(ret) plist = pr.partitions self.assertEqual(plist.numof_partitions, 5)
def test_safe_probing(self): pr = blkid.Probe() pr.set_device(self.loop_dev) pr.enable_superblocks(True) pr.set_superblocks_flags(blkid.SUBLKS_TYPE | blkid.SUBLKS_USAGE | blkid.SUBLKS_UUID) # not probed yet, len should be 0 self.assertEqual(len(pr), 0) self.assertFalse(pr.keys()) self.assertFalse(pr.values()) self.assertFalse(pr.items()) ret = pr.do_safeprobe() self.assertTrue(ret) # three or more items should be in the probe now self.assertGreaterEqual(len(pr), 3) usage = pr.lookup_value("USAGE") self.assertEqual(usage, b"filesystem") usage = pr["USAGE"] self.assertEqual(usage, b"filesystem") fstype = pr.lookup_value("TYPE") self.assertEqual(fstype, b"ext3") fstype = pr["TYPE"] self.assertEqual(fstype, b"ext3") fsuuid = pr.lookup_value("UUID") self.assertEqual(fsuuid, b"35f66dab-477e-4090-a872-95ee0e493ad6") fsuuid = pr["UUID"] self.assertEqual(fsuuid, b"35f66dab-477e-4090-a872-95ee0e493ad6") keys = pr.keys() self.assertIn("USAGE", keys) self.assertIn("TYPE", keys) self.assertIn("UUID", keys) values = pr.values() self.assertIn("filesystem", values) self.assertIn("ext3", values) self.assertIn("35f66dab-477e-4090-a872-95ee0e493ad6", values) items = pr.items() self.assertIn(("USAGE", "filesystem"), items) self.assertIn(("TYPE", "ext3"), items) self.assertIn(("UUID", "35f66dab-477e-4090-a872-95ee0e493ad6"), items)
def test_probe_filter_type(self): pr = blkid.Probe() pr.set_device(self.loop_dev) pr.enable_superblocks(True) pr.set_superblocks_flags(blkid.SUBLKS_TYPE | blkid.SUBLKS_USAGE | blkid.SUBLKS_UUID) pr.filter_superblocks_type(blkid.FLTR_ONLYIN, ["ext3", "ext4"]) ret = pr.do_safeprobe() self.assertTrue(ret) fstype = pr.lookup_value("TYPE") self.assertEqual(fstype, b"ext3") pr.filter_superblocks_type(blkid.FLTR_NOTIN, ["ext3", "ext4"]) ret = pr.do_safeprobe() self.assertFalse(ret) with self.assertRaises(RuntimeError): fstype = pr.lookup_value("TYPE") pr.filter_superblocks_type(blkid.FLTR_NOTIN, ["vfat", "ntfs"]) ret = pr.do_safeprobe() self.assertTrue(ret) fstype = pr.lookup_value("TYPE") self.assertEqual(fstype, b"ext3") # invert the filter pr.invert_superblocks_filter() ret = pr.do_safeprobe() self.assertFalse(ret) with self.assertRaises(RuntimeError): fstype = pr.lookup_value("TYPE") # reset to default pr.reset_superblocks_filter() ret = pr.do_safeprobe() self.assertTrue(ret) fstype = pr.lookup_value("TYPE") self.assertEqual(fstype, b"ext3")
def test_probe(self): pr = blkid.Probe() pr.set_device(self.loop_dev) self.assertEqual(pr.offset, 0) self.assertEqual(pr.sectors, 4096) self.assertEqual(pr.sector_size, 512) self.assertEqual(pr.size, pr.sectors * pr.sector_size) self.assertGreater(pr.fd, 0) self.assertNotEqual(pr.devno, 0) self.assertNotEqual(pr.wholedisk_devno, 0) self.assertTrue(pr.is_wholedisk) pr.sector_size = 4096 self.assertEqual(pr.sector_size, 4096) pr.reset_probe()
def test_partition_table(self): pr = blkid.Probe() pr.set_device(self.loop_dev) pr.enable_partitions(True) ret = pr.do_safeprobe() self.assertTrue(ret) self.assertIsNotNone(pr.partitions) self.assertIsNotNone(pr.partitions.table) self.assertEqual(pr.partitions.table.type, "gpt") self.assertEqual(pr.partitions.table.id, "dd27f98d-7519-4c9e-8041-f2bfa7b1ef61") self.assertEqual(pr.partitions.table.offset, 512) nested = pr.partitions.table.get_parent() self.assertIsNone(nested)
def test_partition(self): pr = blkid.Probe() pr.set_device(self.loop_dev) pr.enable_partitions(True) ret = pr.do_safeprobe() self.assertTrue(ret) self.assertIsNotNone(pr.partitions) part = pr.partitions.get_partition(0) self.assertEqual(part.type, 0) self.assertEqual(part.type_string, "ebd0a0a2-b9e5-4433-87c0-68b6b72699c7") self.assertEqual(part.uuid, "1dcf10bc-637e-4c52-8203-087ae10a820b") self.assertTrue(part.is_primary) self.assertFalse(part.is_extended) self.assertFalse(part.is_logical) self.assertEqual(part.name, "ThisIsName") self.assertEqual(part.flags, 0) self.assertEqual(part.partno, 1) self.assertEqual(part.start, 34) self.assertEqual(part.size, 2014) part = pr.partitions.get_partition_by_partno(1) self.assertEqual(part.uuid, "1dcf10bc-637e-4c52-8203-087ae10a820b") # no nested partition table here, just the gpt table = part.table self.assertEqual(table.type, "gpt") # devno_to_part disk_name = os.path.basename(self.loop_dev) sysfs_path = "/sys/block/%s/%s/dev" % (disk_name, disk_name + "p" + str(part.partno)) major_minor = utils.read_file(sysfs_path).strip() major, minor = major_minor.split(":") devno = os.makedev(int(major), int(minor)) part = pr.partitions.devno_to_partition(devno) self.assertEqual(part.uuid, "1dcf10bc-637e-4c52-8203-087ae10a820b")
def test_probe_filter_usage(self): pr = blkid.Probe() pr.set_device(self.loop_dev) pr.enable_superblocks(True) pr.set_superblocks_flags(blkid.SUBLKS_TYPE | blkid.SUBLKS_USAGE | blkid.SUBLKS_UUID) pr.filter_superblocks_usage(blkid.FLTR_ONLYIN, blkid.USAGE_FILESYSTEM) pr.do_safeprobe() usage = pr.lookup_value("USAGE") self.assertEqual(usage, b"filesystem") pr.filter_superblocks_usage( blkid.FLTR_NOTIN, blkid.USAGE_FILESYSTEM | blkid.USAGE_CRYPTO) pr.do_safeprobe() with self.assertRaises(RuntimeError): usage = pr.lookup_value("USAGE") pr.filter_superblocks_usage(blkid.FLTR_NOTIN, blkid.USAGE_RAID | blkid.USAGE_CRYPTO) pr.do_safeprobe() usage = pr.lookup_value("USAGE") self.assertEqual(usage, b"filesystem") # invert the filter pr.invert_superblocks_filter() pr.do_safeprobe() with self.assertRaises(RuntimeError): usage = pr.lookup_value("USAGE") # reset to default pr.reset_superblocks_filter() pr.do_safeprobe() usage = pr.lookup_value("USAGE") self.assertEqual(usage, b"filesystem")
def test_partitions_filter(self): pr = blkid.Probe() pr.set_device(self.loop_dev) pr.enable_partitions(True) ret = pr.do_safeprobe() self.assertTrue(ret) self.assertEqual(pr.partitions.numof_partitions, 5) pr.filter_partitions_type(blkid.FLTR_ONLYIN, ["gpt"]) ret = pr.do_safeprobe() self.assertTrue(ret) self.assertEqual(pr.partitions.numof_partitions, 5) pr.filter_partitions_type(blkid.FLTR_ONLYIN, ["gpt", "dos"]) ret = pr.do_safeprobe() self.assertTrue(ret) self.assertEqual(pr.partitions.numof_partitions, 5) pr.filter_partitions_type(blkid.FLTR_NOTIN, ["gpt"]) ret = pr.do_safeprobe() self.assertFalse(ret) with self.assertRaises(RuntimeError): pr.partitions pr.invert_partitions_filter() ret = pr.do_safeprobe() self.assertTrue(ret) self.assertEqual(pr.partitions.numof_partitions, 5) pr.filter_partitions_type(blkid.FLTR_NOTIN, ["gpt"]) ret = pr.do_safeprobe() self.assertFalse(ret) with self.assertRaises(RuntimeError): pr.partitions pr.reset_partitions_filter() ret = pr.do_safeprobe() self.assertTrue(ret) self.assertEqual(pr.partitions.numof_partitions, 5)
def test_probing(self): pr = blkid.Probe() pr.set_device(self.loop_dev) pr.enable_superblocks(True) pr.set_superblocks_flags(blkid.SUBLKS_TYPE | blkid.SUBLKS_USAGE | blkid.SUBLKS_MAGIC) ret = pr.do_probe() self.assertTrue(ret) usage = pr.lookup_value("USAGE") self.assertEqual(usage, b"filesystem") pr.step_back() ret = pr.do_probe() self.assertTrue(ret) usage = pr.lookup_value("USAGE") self.assertEqual(usage, b"filesystem") pr.reset_buffers() pr.step_back() ret = pr.do_probe() self.assertTrue(ret) usage = pr.lookup_value("USAGE") self.assertEqual(usage, b"filesystem") offset = pr.lookup_value("SBMAGIC_OFFSET") magic = pr.lookup_value("SBMAGIC") pr.hide_range(int(offset), len(magic)) pr.step_back() ret = pr.do_probe() self.assertFalse(ret) with self.assertRaises(RuntimeError): usage = pr.lookup_value("USAGE")