Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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")
Exemplo n.º 5
0
    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()
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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")
Exemplo n.º 8
0
    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")
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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")