예제 #1
0
 def test_get_edd_dict_1(self):
     """ Test get_edd_dict()'s pci_dev matching. """
     from blivet.devicelibs import edd
     EddTestFS(self, edd).sda_vda()
     self.assertEqual(edd.get_edd_dict([]),
                      {'sda' : 0x80,
                       'vda' : 0x81})
예제 #2
0
파일: edd_test.py 프로젝트: Sabayon/blivet
 def test_get_edd_dict_2(self):
     """ Test get_edd_dict()'s pci_dev matching. """
     from blivet.devicelibs import edd
     edd.collect_mbrs = mock.Mock(return_value={
         'sda': '0x000ccb01',
         'vda': '0x0006aef1'
     })
     EddTestFS(self, edd).sda_vda_missing_details()
     self.assertEqual(edd.get_edd_dict([]), {'sda': 0x80, 'vda': 0x81})
예제 #3
0
 def test_get_edd_dict_2(self):
     """ Test get_edd_dict()'s pci_dev matching. """
     from blivet.devicelibs import edd
     edd.collect_mbrs = mock.Mock(return_value = {
             'sda' : '0x000ccb01',
             'vda' : '0x0006aef1'})
     EddTestFS(self, edd).sda_vda_missing_details()
     self.assertEqual(edd.get_edd_dict([]),
                      {'sda' : 0x80,
                       'vda' : 0x81})
예제 #4
0
    def test_get_edd_dict_bad_sata_virt(self):
        # test with sata sda, usb sdb
        self._edd_logger.debug("starting test %s", self._testMethodName)
        edd.testdata_log.debug("starting test %s", self._testMethodName)
        devices = (FakeDevice("sda"),
                   FakeDevice("sdb"),
                   FakeDevice("sdc"),
                   )
        fakeedd = {
            0x80: FakeEddEntry(version="0x30", mbr_sig="0x86531966",
                               sectors=10485760,
                               sysfspath="/sys/firmware/edd/int13_dev80/",
                               sysfslink="../devices/pci0000:00/0000:00:0c.0/"
                               "ata11/host10/target10:0:0/10:0:0:0/block/sdc"),
            0x81: FakeEddEntry(version="0x30", mbr_sig="0xe3bf124b",
                               sectors=419432,
                               sysfspath="/sys/firmware/edd/int13_dev81/",
                               sysfslink="../devices/pci0000:00/0000:00:03.0/"
                               "ata1/host0/target0:0:0/0:0:0:0/block/sda"),
            0x82: FakeEddEntry(version="0x30", mbr_sig="0x7dfff0db",
                               sectors=209716,
                               sysfspath="/sys/firmware/edd/int13_dev82/",
                               sysfslink="../devices/pci0000:00/0000:00:0c.0/"
                               "ata10/host9/target9:0:0/9:0:0:0/block/sdb"),
        }

        edd_dict = edd.get_edd_dict(devices, root=self.root('bad_sata_virt'))
        self.debug('edd_dict: %s', edd_dict)
        debugs = [
            ("edd: found device 0x%x at %s", 0x80,
             '/sys/firmware/edd/int13_dev80/'),
            ("edd: found device 0x%x at %s", 0x81,
             '/sys/firmware/edd/int13_dev81/'),
            ("edd: found device 0x%x at %s", 0x82,
             '/sys/firmware/edd/int13_dev82/'),
            ('edd: data extracted from 0x%x:%r', 0x80, fakeedd[0x80]),
            ('edd: data extracted from 0x%x:%r', 0x81, fakeedd[0x81]),
            ('edd: data extracted from 0x%x:%r', 0x82, fakeedd[0x82]),
        ]
        infos = [
            ('edd: collected mbr signatures: %s', {'sda': '0xe3bf124b',
                                                   'sdb': '0x7dfff0db',
                                                   'sdc': '0x86531966',
                                                   }),
            ('edd: matched 0x%x to %s using MBR sig', 128, 'sdc'),
            ('edd: matched 0x%x to %s using MBR sig', 129, 'sda'),
            ('edd: matched 0x%x to %s using MBR sig', 130, 'sdb'),
        ]
        warnings = [
        ]
        self.check_logs(debugs=debugs, infos=infos, warnings=warnings)
        lib.assertVerboseEqual(edd_dict["sdc"], 0x80)
        lib.assertVerboseEqual(edd_dict["sda"], 0x81)
        lib.assertVerboseEqual(edd_dict["sdb"], 0x82)
        lib.assertVerboseEqual(len(edd_dict), 3)
예제 #5
0
    def test_get_edd_dict_sata_usb(self):
        # test with sata sda, usb sdb
        self._edd_logger.debug("starting test %s", self._testMethodName)
        edd.testdata_log.debug("starting test %s", self._testMethodName)
        devices = (FakeDevice("sda"),
                   FakeDevice("sdb"),
                   )
        fakeedd = {
            0x80: FakeEddEntry(version="0x30", mbr_sig="0x00000000",
                               sectors=312581808, host_bus="PCI", type="SATA",
                               pci_dev="00:1f.2", channel=255, ata_device=1,
                               interface="SATA    \tdevice: 1",
                               sysfspath="/sys/firmware/edd/int13_dev80/",
                               sysfslink="../devices/pci0000:00/0000:00:1f.2/"
                               "ata2/host1/target1:0:0/1:0:0:0/block/sda"),
            0x81: FakeEddEntry(version="0x21", mbr_sig="0x96a20d28",
                               sectors=31293440, host_bus="PCI", type="USB",
                               pci_dev="ff:ff.255", channel=255,
                               usb_serial=0x30302e31,
                               interface="USB     \tserial_number: 30302e31",
                               sysfspath="/sys/firmware/edd/int13_dev81/",
                               sysfslink="../devices/pci0000:00/0000:00:1d.0/"
                               "usb4/4-1/4-1.2/4-1.2:1.0/host6/target6:0:0/"
                               "6:0:0:0/block/sdb"),
        }

        edd_dict = edd.get_edd_dict(devices, root=self.root("sata_usb"))
        self.debug('edd_dict: %s', edd_dict)
        lib.assertVerboseEqual(len(edd_dict), 2)
        lib.assertVerboseEqual(edd_dict["sda"], 0x80)
        lib.assertVerboseEqual(edd_dict["sdb"], 0x81)
        debugs = [
            ("edd: data extracted from 0x%x:%r", 0x80, fakeedd[0x80]),
            ("edd: data extracted from 0x%x:%r", 0x81, fakeedd[0x81]),
            ("edd: found device 0x%x at %s", 0x80,
             '/sys/firmware/edd/int13_dev80/'),
            ("edd: found device 0x%x at %s", 0x81,
             '/sys/firmware/edd/int13_dev81/'),
        ]
        infos = [
            ("edd: MBR signature on %s is zero. new disk image?", "sda"),
            ("edd: collected mbr signatures: %s", {'sdb': '0x96a20d28'}),
            ("edd: matched 0x%x to %s using PCI dev", 0x80, "sda"),
            ("edd: matched 0x%x to %s using MBR sig", 0x81, "sdb"),
            ('edd: Could not find Virtio device for pci dev %s channel %s', '00:1f.2', 255),
            ('edd: Could not find Virtio device for pci dev %s channel %s', 'ff:ff.255', 255),
        ]
        warnings = [
            ("edd: interface type %s is not implemented (%s)", "USB",
                "/sys/firmware/edd/int13_dev81/"),
            ("edd: interface details: %s", "USB     \tserial_number: 30302e31"),
            ('edd: using possible extra match for ATA device %s channel %s ata %d pmp %s: %s', '00:1f.2', 255, 1, None, '/sys/block/sda')
        ]
        self.check_logs(debugs=debugs, infos=infos, warnings=warnings)
예제 #6
0
 def test_get_edd_dict_3(self):
     """ Test scenario when the 0x80 and 0x81 edd directories contain the
         same data and give no way to distinguish among the two devices.
     """
     from blivet.devicelibs import edd
     edd.log = mock.Mock()
     edd.collect_mbrs = mock.Mock(return_value={'sda' : '0x000ccb01',
                                                'vda' : '0x0006aef1'})
     EddTestFS(self, edd).sda_sdb_same()
     self.assertEqual(edd.get_edd_dict([]), {})
     self.assertIn((('edd: both edd entries 0x80 and 0x81 seem to map to sda',), {}),
                   edd.log.info.call_args_list)
예제 #7
0
파일: edd_test.py 프로젝트: rkuska/blivet
    def test_get_edd_dict_sata_usb(self):
        # test with sata sda, usb sdb
        self._set_fs_root(edd, "sata_usb")
        self._edd_logger.debug("starting test %s", self._testMethodName)
        edd.testdata_log.debug("starting test %s", self._testMethodName)
        devices=(FakeDevice("sda"),
                 FakeDevice("sdb"),
                 )
        fakeedd = {
            0x80: FakeEddEntry(version="0x30", mbr_sig="0x00000000",
                           sectors=312581808, host_bus="PCI", type="SATA",
                           pci_dev="00:1f.2", channel=255, ata_device=1,
                           interface="SATA    \tdevice: 1",
                           sysfspath="/sys/firmware/edd/int13_dev80",
                           sysfslink="../devices/pci0000:00/0000:00:1f.2/ata2"\
                                     "/host1/target1:0:0/1:0:0:0/block/sda"),
            0x81: FakeEddEntry(version="0x21", mbr_sig="0x96a20d28",
                           sectors=31293440, host_bus="PCI", type="USB",
                           pci_dev="ff:ff.255", channel=255,
                           usb_serial=0x30302e31,
                           interface="USB     \tserial_number: 30302e31",
                           sysfspath="/sys/firmware/edd/int13_dev81"),
            }

        edd_dict = edd.get_edd_dict(devices)
        self.debug('edd_dict: %s', edd_dict)
        self.assertEqual(len(edd_dict), 2)
        self.assertEqual(edd_dict["sda"], 0x80)
        self.assertEqual(edd_dict["sdb"], 0x81)
        debugs = [
            ("edd: data extracted from 0x%x:\n%s", 0x80, fakeedd[0x80]),
            ("edd: data extracted from 0x%x:\n%s", 0x81, fakeedd[0x81]),
            ("edd: found device 0x%x at %s", 0x80,
                    '/sys/firmware/edd/int13_dev80'),
            ("edd: found device 0x%x at %s", 0x81,
                    '/sys/firmware/edd/int13_dev81'),
            ]
        infos = [
            ("edd: MBR signature on %s is zero. new disk image?", "sda"),
            ("edd: collected mbr signatures: %s",{'sdb': '0x96a20d28'}),
            ("edd: matched 0x%x to %s using PCI dev", 0x80, "sda"),
            ("edd: matched 0x%x to %s using MBR sig", 0x81, "sdb"),
            ]
        warnings = [
            ("edd: interface type %s is not implemented (%s)", "USB",
                "/sys/firmware/edd/int13_dev81"),
            ("edd: interface details: %s", "USB     \tserial_number: 30302e31"),
            ]
        self.checkLogs(debugs=debugs, infos=infos, warnings=warnings)
예제 #8
0
파일: edd_test.py 프로젝트: Sabayon/blivet
 def test_get_edd_dict_3(self):
     """ Test scenario when the 0x80 and 0x81 edd directories contain the
         same data and give no way to distinguish among the two devices.
     """
     from blivet.devicelibs import edd
     edd.log = mock.Mock()
     edd.collect_mbrs = mock.Mock(return_value={
         'sda': '0x000ccb01',
         'vda': '0x0006aef1'
     })
     EddTestFS(self, edd).sda_sdb_same()
     self.assertEqual(edd.get_edd_dict([]), {})
     self.assertIn(
         (('edd: both edd entries 0x80 and 0x81 seem to map to sda', ), {}),
         edd.log.info.call_args_list)
예제 #9
0
    def test_get_edd_dict_mostly_fixed_virt(self):
        # test with sata sda, usb sdb
        self._edd_logger.debug("starting test %s", self._testMethodName)
        edd.testdata_log.debug("starting test %s", self._testMethodName)
        devices = (
            FakeDevice("sda"),
            FakeDevice("sdb"),
            FakeDevice("sdc"),
            FakeDevice("vda"),
        )
        fakeedd = {
            0x80:
            FakeEddEntry(version="0x30",
                         mbr_sig="0x86531966",
                         sectors=10485760,
                         host_bus="PCI",
                         type="SCSI",
                         pci_dev="00:07.0",
                         channel=255,
                         scsi_id=0xffff,
                         scsi_lun=281474976645120,
                         interface="SCSI    \tid: 65535  lun: 281474976645120",
                         sysfslink="../devices/pci0000:00/0000:00:07.0/"
                         "virtio1/block/vda",
                         sysfspath="/sys/firmware/edd/int13_dev80/"),
            0x81:
            FakeEddEntry(version="0x30",
                         mbr_sig="0xe3bf124b",
                         sectors=419432,
                         host_bus="PCI",
                         type="SATA",
                         pci_dev="00:03.0",
                         channel=255,
                         ata_device=0,
                         interface="SATA    \tdevice: 0",
                         sysfslink="../devices/pci0000:00/0000:00:03.0/"
                         "ata1/host0/target0:0:0/0:0:0:0/block/sda",
                         sysfspath="/sys/firmware/edd/int13_dev81/"),
            0x82:
            FakeEddEntry(version="0x30",
                         mbr_sig="0x7dfff0db",
                         sectors=209716,
                         host_bus="PCI",
                         type="SATA",
                         pci_dev="00:0c.0",
                         channel=255,
                         ata_device=3,
                         interface="SATA    \tdevice: 3",
                         sysfslink="../devices/pci0000:00/0000:00:0c.0/"
                         "ata10/host9/target9:0:0/9:0:0:0/block/sdb",
                         sysfspath="/sys/firmware/edd/int13_dev82/"),
            0x83:
            FakeEddEntry(version="0x30",
                         mbr_sig="0x648873aa",
                         sectors=0,
                         sysfslink="../devices/pci0000:00/0000:00:06.7/"
                         "usb1/1-1/1-1:1.0/host14/target14:0:0/14:0:0:0/"
                         "block/sdc",
                         sysfspath="/sys/firmware/edd/int13_dev83/"),
        }

        edd_dict = edd.get_edd_dict(devices,
                                    root=self.root('mostly_fixed_virt'))
        self.edd_debug('edd_dict: %s', edd_dict)
        debugs = [
            ("edd: found device 0x%x at %s", 0x80,
             '/sys/firmware/edd/int13_dev80/'),
            ("edd: found device 0x%x at %s", 0x81,
             '/sys/firmware/edd/int13_dev81/'),
            ("edd: found device 0x%x at %s", 0x82,
             '/sys/firmware/edd/int13_dev82/'),
            ("edd: found device 0x%x at %s", 0x83,
             '/sys/firmware/edd/int13_dev83/'),
            ('edd: data extracted from 0x%x:%r', 0x80, fakeedd[0x80]),
            ('edd: data extracted from 0x%x:%r', 0x81, fakeedd[0x81]),
            ('edd: data extracted from 0x%x:%r', 0x82, fakeedd[0x82]),
            ('edd: data extracted from 0x%x:%r', 0x83, fakeedd[0x83]),
        ]
        infos = [
            ('edd: Could not find Virtio device for pci dev %s channel %s',
             '00:03.0', 255),
            ('edd: Could not find Virtio device for pci dev %s channel %s',
             '00:0c.0', 255),
            ('edd: collected mbr signatures: %s', {
                'vda': '0x86531966',
                'sda': '0xe3bf124b',
                'sdb': '0x7dfff0db',
                'sdc': '0x648873aa',
            }),
            ('edd: matched 0x%x to %s using PCI dev', 0x80, 'vda'),
            ('edd: matched 0x%x to %s using PCI dev', 0x81, 'sda'),
            ('edd: matched 0x%x to %s using PCI dev', 0x82, 'sdb'),
            ('edd: matched 0x%x to %s using MBR sig', 0x83, 'sdc'),
        ]
        warnings = [
            ('edd: using possible extra match for ATA device %s channel %s ata %d pmp %s: %s',
             '00:0c.0', 255, 3, None, '/sys/block/sdb'),
        ]
        self.check_logs(debugs=debugs, infos=infos, warnings=warnings)
        lib.assertVerboseEqual(edd_dict["vda"], 0x80)
        lib.assertVerboseEqual(edd_dict["sda"], 0x81)
        lib.assertVerboseEqual(edd_dict["sdb"], 0x82)
        lib.assertVerboseEqual(edd_dict["sdc"], 0x83)
        lib.assertVerboseEqual(len(edd_dict), 4)
예제 #10
0
    def test_get_edd_dict_bad_sata_virt(self):
        # test with sata sda, usb sdb
        self._edd_logger.debug("starting test %s", self._testMethodName)
        edd.testdata_log.debug("starting test %s", self._testMethodName)
        devices = (
            FakeDevice("sda"),
            FakeDevice("sdb"),
            FakeDevice("sdc"),
        )
        fakeedd = {
            0x80:
            FakeEddEntry(version="0x30",
                         mbr_sig="0x86531966",
                         sectors=10485760,
                         sysfspath="/sys/firmware/edd/int13_dev80/",
                         sysfslink="../devices/pci0000:00/0000:00:0c.0/"
                         "ata11/host10/target10:0:0/10:0:0:0/block/sdc"),
            0x81:
            FakeEddEntry(version="0x30",
                         mbr_sig="0xe3bf124b",
                         sectors=419432,
                         sysfspath="/sys/firmware/edd/int13_dev81/",
                         sysfslink="../devices/pci0000:00/0000:00:03.0/"
                         "ata1/host0/target0:0:0/0:0:0:0/block/sda"),
            0x82:
            FakeEddEntry(version="0x30",
                         mbr_sig="0x7dfff0db",
                         sectors=209716,
                         sysfspath="/sys/firmware/edd/int13_dev82/",
                         sysfslink="../devices/pci0000:00/0000:00:0c.0/"
                         "ata10/host9/target9:0:0/9:0:0:0/block/sdb"),
        }

        edd_dict = edd.get_edd_dict(devices, root=self.root('bad_sata_virt'))
        self.edd_debug('edd_dict: %s', edd_dict)
        debugs = [
            ("edd: found device 0x%x at %s", 0x80,
             '/sys/firmware/edd/int13_dev80/'),
            ("edd: found device 0x%x at %s", 0x81,
             '/sys/firmware/edd/int13_dev81/'),
            ("edd: found device 0x%x at %s", 0x82,
             '/sys/firmware/edd/int13_dev82/'),
            ('edd: data extracted from 0x%x:%r', 0x80, fakeedd[0x80]),
            ('edd: data extracted from 0x%x:%r', 0x81, fakeedd[0x81]),
            ('edd: data extracted from 0x%x:%r', 0x82, fakeedd[0x82]),
        ]
        infos = [
            ('edd: collected mbr signatures: %s', {
                'sda': '0xe3bf124b',
                'sdb': '0x7dfff0db',
                'sdc': '0x86531966',
            }),
            ('edd: matched 0x%x to %s using MBR sig', 128, 'sdc'),
            ('edd: matched 0x%x to %s using MBR sig', 129, 'sda'),
            ('edd: matched 0x%x to %s using MBR sig', 130, 'sdb'),
        ]
        warnings = []
        self.check_logs(debugs=debugs, infos=infos, warnings=warnings)
        lib.assertVerboseEqual(edd_dict["sdc"], 0x80)
        lib.assertVerboseEqual(edd_dict["sda"], 0x81)
        lib.assertVerboseEqual(edd_dict["sdb"], 0x82)
        lib.assertVerboseEqual(len(edd_dict), 3)
예제 #11
0
    def test_get_edd_dict_strawberry_mountain(self):
        # test with sata sda, usb sdb
        self._edd_logger.debug("starting test %s", self._testMethodName)
        edd.testdata_log.debug("starting test %s", self._testMethodName)
        devices = (
            FakeDevice("sda"),
            FakeDevice("sdb"),
            FakeDevice("sdc"),
            FakeDevice("sdd"),
        )
        fakeedd = {
            0x80:
            FakeEddEntry(version="0x21",
                         mbr_sig="0x91271645",
                         sectors=31293440,
                         host_bus="PCI",
                         type="USB",
                         pci_dev="ff:ff.255",
                         channel=255,
                         interface="USB     \tserial_number: 30302e31",
                         usb_serial=0x30302e31,
                         sysfslink="../devices/pci0000:00/0000:00:1d.0/"
                         "usb4/4-1/4-1.2/4-1.2:1.0/host6/target6:0:0/"
                         "6:0:0:0/block/sdd",
                         sysfspath="/sys/firmware/edd/int13_dev80/"),
            0x81:
            FakeEddEntry(version="0x30",
                         mbr_sig="0x00033091",
                         sectors=312581808,
                         host_bus="PCI",
                         type="SATA",
                         pci_dev="00:1f.2",
                         channel=255,
                         ata_device=2,
                         interface="SATA    \tdevice: 2",
                         sysfspath="/sys/firmware/edd/int13_dev81/",
                         sysfslink="../devices/pci0000:00/0000:00:1f.2/"
                         "ata3/host2/target2:0:0/2:0:0:0/block/sdc"),
            0x82:
            FakeEddEntry(version="0x30",
                         mbr_sig="0x00000000",
                         sectors=156301488,
                         host_bus="PCI",
                         type="SATA",
                         pci_dev="00:1f.2",
                         channel=255,
                         ata_device=1,
                         interface="SATA    \tdevice: 1",
                         sysfspath="/sys/firmware/edd/int13_dev82/",
                         sysfslink="../devices/pci0000:00/0000:00:1f.2/"
                         "ata2/host1/target1:0:0/1:0:0:0/block/sdb"),
            0x83:
            FakeEddEntry(version="0x30",
                         mbr_sig="0x00000000",
                         sectors=312581808,
                         host_bus="PCI",
                         type="SATA",
                         pci_dev="00:1f.2",
                         channel=255,
                         ata_device=0,
                         interface="SATA    \tdevice: 0",
                         sysfspath="/sys/firmware/edd/int13_dev83/",
                         sysfslink="../devices/pci0000:00/0000:00:1f.2/"
                         "ata1/host0/target0:0:0/0:0:0:0/block/sda"),
        }

        edd_dict = edd.get_edd_dict(devices,
                                    root=self.root('strawberry_mountain'))
        self.edd_debug('edd_dict: %s', edd_dict)
        debugs = [
            ("edd: data extracted from 0x%x:%r", 0x80, fakeedd[0x80]),
            ("edd: data extracted from 0x%x:%r", 0x81, fakeedd[0x81]),
            ("edd: data extracted from 0x%x:%r", 0x82, fakeedd[0x82]),
            ("edd: data extracted from 0x%x:%r", 0x83, fakeedd[0x83]),
            ("edd: found device 0x%x at %s", 0x80,
             '/sys/firmware/edd/int13_dev80/'),
            ("edd: found device 0x%x at %s", 0x81,
             '/sys/firmware/edd/int13_dev81/'),
            ("edd: found device 0x%x at %s", 0x82,
             '/sys/firmware/edd/int13_dev82/'),
            ("edd: found device 0x%x at %s", 0x83,
             '/sys/firmware/edd/int13_dev83/'),
        ]
        infos = [
            ("edd: MBR signature on %s is zero. new disk image?", "sda"),
            ("edd: MBR signature on %s is zero. new disk image?", "sdb"),
            ("edd: collected mbr signatures: %s", {
                'sdc': '0x00033091',
                'sdd': '0x91271645',
            }), ("edd: matched 0x%x to %s using MBR sig", 0x80, "sdd"),
            ("edd: matched 0x%x to %s using PCI dev", 0x81, "sdc"),
            ("edd: matched 0x%x to %s using PCI dev", 0x82, "sdb"),
            ("edd: matched 0x%x to %s using PCI dev", 0x83, "sda"),
            ('edd: Could not find Virtio device for pci dev %s channel %s',
             '00:1f.2', 255),
            ('edd: Could not find Virtio device for pci dev %s channel %s',
             '00:1f.2', 255),
            ('edd: Could not find Virtio device for pci dev %s channel %s',
             '00:1f.2', 255),
            ('edd: Could not find Virtio device for pci dev %s channel %s',
             'ff:ff.255', 255)
        ]
        warnings = [
            ("edd: interface type %s is not implemented (%s)", "USB",
             "/sys/firmware/edd/int13_dev80/"),
            ("edd: interface details: %s",
             "USB     \tserial_number: 30302e31"),
            ('edd: using possible extra match for ATA device %s channel %s ata %d pmp %s: %s',
             '00:1f.2', 255, 1, None, '/sys/block/sdb'),
            ('edd: using possible extra match for ATA device %s channel %s ata %d pmp %s: %s',
             '00:1f.2', 255, 2, None, '/sys/block/sdc'),
        ]
        self.check_logs(debugs=debugs, infos=infos, warnings=warnings)
        lib.assertVerboseEqual(edd_dict["sda"], 0x83)
        lib.assertVerboseEqual(edd_dict["sdb"], 0x82)
        lib.assertVerboseEqual(edd_dict["sdc"], 0x81)
        lib.assertVerboseEqual(edd_dict["sdd"], 0x80)
        lib.assertVerboseEqual(len(edd_dict), 4)
예제 #12
0
    def test_get_edd_dict_absurd_virt(self):
        self._edd_logger.debug("starting test %s", self._testMethodName)
        edd.testdata_log.debug("starting test %s", self._testMethodName)
        # siiiigh - this is actually the data out of sysfs on a virt I have
        # created.  Apparently even qemu claims 3.0 sometimes and gives us
        # bad data.
        fakeedd = {
            0x80:
            FakeEddEntry(version="0x30",
                         mbr_sig="0x86531966",
                         sectors=10485760,
                         host_bus="PCI",
                         type="SCSI",
                         pci_dev="00:07.0",
                         channel=0,
                         scsi_id=0,
                         scsi_lun=0,
                         interface="SCSI    \tid: 0  lun: 0",
                         sysfspath="/sys/firmware/edd/int13_dev80/",
                         sysfslink="../devices/pci0000:00/0000:00:07.0/"
                         "virtio1/block/vda"),
            0x81:
            FakeEddEntry(version="0x30",
                         mbr_sig="0x7dfff0db",
                         sectors=209716,
                         host_bus="PCI",
                         type="ATA",
                         pci_dev="00:01.1",
                         channel=0,
                         interface="ATA     \tdevice: 1",
                         ata_device=1,
                         sysfslink="../devices/pci0000:00/0000:00:01.1/"
                         "ata7/host6/target6:0:1/6:0:1:0/block/sdb",
                         sysfspath="/sys/firmware/edd/int13_dev81/"),
            0x82:
            FakeEddEntry(version="0x30",
                         mbr_sig="0xe3bf124b",
                         sectors=419432,
                         sysfslink="../devices/pci0000:00/0000:00:03.0/"
                         "ata1/host0/target0:0:0/0:0:0:0/block/sda",
                         sysfspath="/sys/firmware/edd/int13_dev82/"),
            0x83:
            FakeEddEntry(version="0x30",
                         mbr_sig="0xfa0a111d",
                         sectors=629146,
                         sysfslink="../devices/pci0000:00/0000:00:0a.0/"
                         "host10/target10:0:1/10:0:1:0/block/sde",
                         sysfspath="/sys/firmware/edd/int13_dev83/"),
            0x84:
            FakeEddEntry(version="0x30",
                         mbr_sig="0x63f1d7d8",
                         sectors=838862,
                         host_bus="PCI",
                         type="SCSI",
                         pci_dev="00:0b.0",
                         channel=0,
                         scsi_id=0,
                         scsi_lun=0,
                         interface="SCSI    \tid: 0  lun: 0",
                         sysfslink="../devices/pci0000:00/0000:00:0b.0/"
                         "virtio3/host8/target8:0:0/8:0:0:0/block/sdc",
                         sysfspath="/sys/firmware/edd/int13_dev84/"),
            0x85:
            FakeEddEntry(version="0x30",
                         mbr_sig="0xee331b19",
                         sectors=1258292,
                         sysfslink="../devices/pci0000:00/0000:00:06.7/"
                         "usb1/1-1/1-1:1.0/host9/target9:0:0/9:0:0:0/"
                         "block/sdd",
                         sysfspath="/sys/firmware/edd/int13_dev85/"),
        }
        devices = (
            FakeDevice("sda"),
            FakeDevice("sdb"),
            FakeDevice("sdc"),
            FakeDevice("sdd"),
            FakeDevice("sde"),
            FakeDevice("vda"),
        )

        edd_dict = edd.get_edd_dict(devices, root=self.root("absurd_virt"))
        self.edd_debug('edd_dict: %s', edd_dict)
        lib.assertVerboseEqual(len(edd_dict), 6)
        # this order is *completely unlike* the order in virt-manager,
        # but it does appear to be what EDD is displaying.
        lib.assertVerboseEqual(edd_dict["vda"], 0x80)
        lib.assertVerboseEqual(edd_dict["sdb"], 0x81)
        lib.assertVerboseEqual(edd_dict["sda"], 0x82)
        lib.assertVerboseEqual(edd_dict["sde"], 0x83)
        lib.assertVerboseEqual(edd_dict["sdc"], 0x84)
        lib.assertVerboseEqual(edd_dict["sdd"], 0x85)
        debugs = [
            ("edd: data extracted from 0x%x:%r", 0x80, fakeedd[0x80]),
            ("edd: data extracted from 0x%x:%r", 0x81, fakeedd[0x81]),
            ("edd: data extracted from 0x%x:%r", 0x82, fakeedd[0x82]),
            ("edd: data extracted from 0x%x:%r", 0x83, fakeedd[0x83]),
            ("edd: data extracted from 0x%x:%r", 0x84, fakeedd[0x84]),
            ("edd: data extracted from 0x%x:%r", 0x85, fakeedd[0x85]),
            ("edd: found device 0x%x at %s", 0x80,
             '/sys/firmware/edd/int13_dev80/'),
            ("edd: found device 0x%x at %s", 0x81,
             '/sys/firmware/edd/int13_dev81/'),
            ("edd: found device 0x%x at %s", 0x82,
             '/sys/firmware/edd/int13_dev82/'),
            ("edd: found device 0x%x at %s", 0x83,
             '/sys/firmware/edd/int13_dev83/'),
            ("edd: found device 0x%x at %s", 0x84,
             '/sys/firmware/edd/int13_dev84/'),
            ("edd: found device 0x%x at %s", 0x85,
             '/sys/firmware/edd/int13_dev85/'),
        ]
        infos = [
            ("edd: collected mbr signatures: %s", {
                'vda': '0x86531966',
                'sda': '0xe3bf124b',
                'sdb': '0x7dfff0db',
                'sdc': '0x63f1d7d8',
                'sdd': '0xee331b19',
                'sde': '0xfa0a111d',
            }),
            ("edd: matched 0x%x to %s using PCI dev", 0x80, "vda"),
            ("edd: matched 0x%x to %s using PCI dev", 0x81, "sdb"),
            ("edd: matched 0x%x to %s using MBR sig", 0x82, "sda"),
            ("edd: matched 0x%x to %s using MBR sig", 0x83, "sde"),
            ("edd: matched 0x%x to %s using PCI dev", 0x84, "sdc"),
            ("edd: matched 0x%x to %s using MBR sig", 0x85, "sdd"),
            ('edd: Could not find Virtio device for pci dev %s channel %s',
             '00:01.1', 0),
            ('edd: Could not find Virtio device for pci dev %s channel %s',
             '00:0b.0', 0),
        ]
        warnings = [
            ('edd: ignoring possible extra match for ATA device %s channel %s ata %d pmp %s: %s',
             '00:01.1', 0, 1, None, '/sys/block/sr0'),
        ]
        self.check_logs(debugs=debugs, infos=infos, warnings=warnings)
예제 #13
0
    def test_get_edd_dict_mostly_fixed_virt(self):
        # test with sata sda, usb sdb
        self._edd_logger.debug("starting test %s", self._testMethodName)
        edd.testdata_log.debug("starting test %s", self._testMethodName)
        devices = (FakeDevice("sda"),
                   FakeDevice("sdb"),
                   FakeDevice("sdc"),
                   FakeDevice("vda"),
                   )
        fakeedd = {
            0x80: FakeEddEntry(version="0x30", mbr_sig="0x86531966",
                               sectors=10485760, host_bus="PCI", type="SCSI",
                               pci_dev="00:07.0", channel=255, scsi_id=0xffff,
                               scsi_lun=281474976645120,
                               interface="SCSI    \tid: 65535  lun: 281474976645120",
                               sysfslink="../devices/pci0000:00/0000:00:07.0/"
                               "virtio1/block/vda",
                               sysfspath="/sys/firmware/edd/int13_dev80/"),
            0x81: FakeEddEntry(version="0x30", mbr_sig="0xe3bf124b",
                               sectors=419432, host_bus="PCI", type="SATA",
                               pci_dev="00:03.0", channel=255, ata_device=0,
                               interface="SATA    \tdevice: 0",
                               sysfslink="../devices/pci0000:00/0000:00:03.0/"
                               "ata1/host0/target0:0:0/0:0:0:0/block/sda",
                               sysfspath="/sys/firmware/edd/int13_dev81/"),
            0x82: FakeEddEntry(version="0x30", mbr_sig="0x7dfff0db",
                               sectors=209716, host_bus="PCI", type="SATA",
                               pci_dev="00:0c.0", channel=255, ata_device=3,
                               interface="SATA    \tdevice: 3",
                               sysfslink="../devices/pci0000:00/0000:00:0c.0/"
                               "ata10/host9/target9:0:0/9:0:0:0/block/sdb",
                               sysfspath="/sys/firmware/edd/int13_dev82/"),
            0x83: FakeEddEntry(version="0x30", mbr_sig="0x648873aa",
                               sectors=0,
                               sysfslink="../devices/pci0000:00/0000:00:06.7/"
                               "usb1/1-1/1-1:1.0/host14/target14:0:0/14:0:0:0/"
                               "block/sdc",
                               sysfspath="/sys/firmware/edd/int13_dev83/"),
        }

        edd_dict = edd.get_edd_dict(devices, root=self.root('mostly_fixed_virt'))
        self.debug('edd_dict: %s', edd_dict)
        debugs = [
            ("edd: found device 0x%x at %s", 0x80,
             '/sys/firmware/edd/int13_dev80/'),
            ("edd: found device 0x%x at %s", 0x81,
             '/sys/firmware/edd/int13_dev81/'),
            ("edd: found device 0x%x at %s", 0x82,
             '/sys/firmware/edd/int13_dev82/'),
            ("edd: found device 0x%x at %s", 0x83,
             '/sys/firmware/edd/int13_dev83/'),
            ('edd: data extracted from 0x%x:%r', 0x80, fakeedd[0x80]),
            ('edd: data extracted from 0x%x:%r', 0x81, fakeedd[0x81]),
            ('edd: data extracted from 0x%x:%r', 0x82, fakeedd[0x82]),
            ('edd: data extracted from 0x%x:%r', 0x83, fakeedd[0x83]),
        ]
        infos = [
            ('edd: Could not find Virtio device for pci dev %s channel %s', '00:03.0', 255),
            ('edd: Could not find Virtio device for pci dev %s channel %s', '00:0c.0', 255),
            ('edd: collected mbr signatures: %s', {'vda': '0x86531966',
                                                   'sda': '0xe3bf124b',
                                                   'sdb': '0x7dfff0db',
                                                   'sdc': '0x648873aa',
                                                   }),
            ('edd: matched 0x%x to %s using PCI dev', 0x80, 'vda'),
            ('edd: matched 0x%x to %s using PCI dev', 0x81, 'sda'),
            ('edd: matched 0x%x to %s using PCI dev', 0x82, 'sdb'),
            ('edd: matched 0x%x to %s using MBR sig', 0x83, 'sdc'),
        ]
        warnings = [
            ('edd: using possible extra match for ATA device %s channel %s ata %d pmp %s: %s', '00:0c.0', 255, 3, None, '/sys/block/sdb'),
        ]
        self.check_logs(debugs=debugs, infos=infos, warnings=warnings)
        lib.assertVerboseEqual(edd_dict["vda"], 0x80)
        lib.assertVerboseEqual(edd_dict["sda"], 0x81)
        lib.assertVerboseEqual(edd_dict["sdb"], 0x82)
        lib.assertVerboseEqual(edd_dict["sdc"], 0x83)
        lib.assertVerboseEqual(len(edd_dict), 4)
예제 #14
0
    def test_get_edd_dict_absurd_virt(self):
        self._edd_logger.debug("starting test %s", self._testMethodName)
        edd.testdata_log.debug("starting test %s", self._testMethodName)
        # siiiigh - this is actually the data out of sysfs on a virt I have
        # created.  Apparently even qemu claims 3.0 sometimes and gives us
        # bad data.
        fakeedd = {
            0x80: FakeEddEntry(version="0x30", mbr_sig="0x86531966",
                               sectors=10485760, host_bus="PCI", type="SCSI",
                               pci_dev="00:07.0", channel=0, scsi_id=0,
                               scsi_lun=0, interface="SCSI    \tid: 0  lun: 0",
                               sysfspath="/sys/firmware/edd/int13_dev80/",
                               sysfslink="../devices/pci0000:00/0000:00:07.0/"
                               "virtio1/block/vda"),
            0x81: FakeEddEntry(version="0x30", mbr_sig="0x7dfff0db",
                               sectors=209716, host_bus="PCI", type="ATA",
                               pci_dev="00:01.1", channel=0,
                               interface="ATA     \tdevice: 1", ata_device=1,
                               sysfslink="../devices/pci0000:00/0000:00:01.1/"
                               "ata7/host6/target6:0:1/6:0:1:0/block/sdb",
                               sysfspath="/sys/firmware/edd/int13_dev81/"),
            0x82: FakeEddEntry(version="0x30", mbr_sig="0xe3bf124b",
                               sectors=419432,
                               sysfslink="../devices/pci0000:00/0000:00:03.0/"
                               "ata1/host0/target0:0:0/0:0:0:0/block/sda",
                               sysfspath="/sys/firmware/edd/int13_dev82/"),
            0x83: FakeEddEntry(version="0x30", mbr_sig="0xfa0a111d",
                               sectors=629146,
                               sysfslink="../devices/pci0000:00/0000:00:0a.0/"
                               "host10/target10:0:1/10:0:1:0/block/sde",
                               sysfspath="/sys/firmware/edd/int13_dev83/"),
            0x84: FakeEddEntry(version="0x30", mbr_sig="0x63f1d7d8",
                               sectors=838862, host_bus="PCI", type="SCSI",
                               pci_dev="00:0b.0", channel=0, scsi_id=0,
                               scsi_lun=0, interface="SCSI    \tid: 0  lun: 0",
                               sysfslink="../devices/pci0000:00/0000:00:0b.0/"
                               "virtio3/host8/target8:0:0/8:0:0:0/block/sdc",
                               sysfspath="/sys/firmware/edd/int13_dev84/"),
            0x85: FakeEddEntry(version="0x30", mbr_sig="0xee331b19",
                               sectors=1258292,
                               sysfslink="../devices/pci0000:00/0000:00:06.7/"
                               "usb1/1-1/1-1:1.0/host9/target9:0:0/9:0:0:0/"
                               "block/sdd",
                               sysfspath="/sys/firmware/edd/int13_dev85/"),
        }
        devices = (FakeDevice("sda"),
                   FakeDevice("sdb"),
                   FakeDevice("sdc"),
                   FakeDevice("sdd"),
                   FakeDevice("sde"),
                   FakeDevice("vda"),
                   )

        edd_dict = edd.get_edd_dict(devices, root=self.root("absurd_virt"))
        self.debug('edd_dict: %s', edd_dict)
        lib.assertVerboseEqual(len(edd_dict), 6)
        # this order is *completely unlike* the order in virt-manager,
        # but it does appear to be what EDD is displaying.
        lib.assertVerboseEqual(edd_dict["vda"], 0x80)
        lib.assertVerboseEqual(edd_dict["sdb"], 0x81)
        lib.assertVerboseEqual(edd_dict["sda"], 0x82)
        lib.assertVerboseEqual(edd_dict["sde"], 0x83)
        lib.assertVerboseEqual(edd_dict["sdc"], 0x84)
        lib.assertVerboseEqual(edd_dict["sdd"], 0x85)
        debugs = [
            ("edd: data extracted from 0x%x:%r", 0x80, fakeedd[0x80]),
            ("edd: data extracted from 0x%x:%r", 0x81, fakeedd[0x81]),
            ("edd: data extracted from 0x%x:%r", 0x82, fakeedd[0x82]),
            ("edd: data extracted from 0x%x:%r", 0x83, fakeedd[0x83]),
            ("edd: data extracted from 0x%x:%r", 0x84, fakeedd[0x84]),
            ("edd: data extracted from 0x%x:%r", 0x85, fakeedd[0x85]),
            ("edd: found device 0x%x at %s", 0x80,
             '/sys/firmware/edd/int13_dev80/'),
            ("edd: found device 0x%x at %s", 0x81,
             '/sys/firmware/edd/int13_dev81/'),
            ("edd: found device 0x%x at %s", 0x82,
             '/sys/firmware/edd/int13_dev82/'),
            ("edd: found device 0x%x at %s", 0x83,
             '/sys/firmware/edd/int13_dev83/'),
            ("edd: found device 0x%x at %s", 0x84,
             '/sys/firmware/edd/int13_dev84/'),
            ("edd: found device 0x%x at %s", 0x85,
             '/sys/firmware/edd/int13_dev85/'),
        ]
        infos = [
            ("edd: collected mbr signatures: %s", {'vda': '0x86531966',
                                                   'sda': '0xe3bf124b',
                                                   'sdb': '0x7dfff0db',
                                                   'sdc': '0x63f1d7d8',
                                                   'sdd': '0xee331b19',
                                                   'sde': '0xfa0a111d',
                                                   }),
            ("edd: matched 0x%x to %s using PCI dev", 0x80, "vda"),
            ("edd: matched 0x%x to %s using PCI dev", 0x81, "sdb"),
            ("edd: matched 0x%x to %s using MBR sig", 0x82, "sda"),
            ("edd: matched 0x%x to %s using MBR sig", 0x83, "sde"),
            ("edd: matched 0x%x to %s using PCI dev", 0x84, "sdc"),
            ("edd: matched 0x%x to %s using MBR sig", 0x85, "sdd"),
            ('edd: Could not find Virtio device for pci dev %s channel %s', '00:01.1', 0),
            ('edd: Could not find Virtio device for pci dev %s channel %s', '00:0b.0', 0),
        ]
        warnings = [
            ('edd: ignoring possible extra match for ATA device %s channel %s ata %d pmp %s: %s', '00:01.1', 0, 1, None, '/sys/block/sr0'),
        ]
        self.check_logs(debugs=debugs, infos=infos, warnings=warnings)
예제 #15
0
파일: edd_test.py 프로젝트: Sabayon/blivet
 def test_get_edd_dict_1(self):
     """ Test get_edd_dict()'s pci_dev matching. """
     from blivet.devicelibs import edd
     EddTestFS(self, edd).sda_vda()
     self.assertEqual(edd.get_edd_dict([]), {'sda': 0x80, 'vda': 0x81})