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})
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})
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})
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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})