Files
virt-manager/tests/test_nodedev.py
T

141 lines
4.7 KiB
Python
Raw Normal View History

2015-03-26 18:04:23 -04:00
# encoding=utf-8
#
# Copyright (C) 2013 Red Hat, Inc.
2013-03-17 17:06:52 -04:00
#
# This work is licensed under the GNU GPLv2 or later.
# See the COPYING file in the top-level directory.
2013-03-17 17:06:52 -04:00
import os.path
import unittest
2018-09-01 20:44:14 -04:00
from virtinst import Guest
2013-09-22 18:13:24 -04:00
from virtinst import NodeDevice
from virtinst import DeviceHostdev
2013-03-17 17:06:52 -04:00
2013-04-10 19:48:07 -04:00
from tests import utils
2013-03-17 17:06:52 -04:00
2015-03-26 18:04:23 -04:00
# Requires XML_SANITIZE to parse correctly, see bug 1184131
funky_chars_xml = """
<device>
2019-06-05 15:04:35 -04:00
<name>L3B2616</name>
<capability type='LENOVOá'/>
2015-03-26 18:04:23 -04:00
</device>
"""
2013-04-13 14:34:52 -04:00
2013-03-17 17:06:52 -04:00
class TestNodeDev(unittest.TestCase):
@property
def conn(self):
return utils.URIs.open_testdriver_cached()
2013-03-17 17:06:52 -04:00
def _nodeDevFromName(self, devname):
node = self.conn.nodeDeviceLookupByName(devname)
2013-03-17 17:06:52 -04:00
xml = node.XMLDesc(0)
return NodeDevice(self.conn, xml)
2013-03-17 17:06:52 -04:00
def _testNode2DeviceCompare(self, nodename, devfile, nodedev=None):
2020-01-26 18:11:43 -05:00
devfile = os.path.join("tests/data/nodedev/devxml", devfile)
2013-03-17 17:06:52 -04:00
if not nodedev:
nodedev = self._nodeDevFromName(nodename)
dev = DeviceHostdev(self.conn)
dev.set_from_nodedev(nodedev)
2018-09-01 20:44:14 -04:00
dev.set_defaults(Guest(self.conn))
utils.diff_compare(dev.get_xml() + "\n", devfile)
2013-03-17 17:06:52 -04:00
2015-03-26 18:04:23 -04:00
def testFunkyChars(self):
2019-06-05 15:04:35 -04:00
# Ensure parsing doesn't fail
dev = NodeDevice(self.conn, funky_chars_xml)
2019-06-05 15:04:35 -04:00
self.assertEqual(dev.name, "L3B2616")
self.assertEqual(dev.device_type, "LENOVO")
2015-03-26 18:04:23 -04:00
2019-06-05 15:11:31 -04:00
def testNetDevice(self):
2013-03-17 17:06:52 -04:00
devname = "net_00_1c_25_10_b1_e4"
2019-06-05 15:11:31 -04:00
dev = self._nodeDevFromName(devname)
self.assertEqual(dev.name, devname)
self.assertEqual(dev.parent, "pci_8086_1049")
self.assertEqual(dev.device_type, "net")
self.assertEqual(dev.interface, "eth0")
2013-03-17 17:06:52 -04:00
2019-06-05 15:29:10 -04:00
def testPCIDevice(self):
nodename = "pci_8086_10fb"
obj = self._nodeDevFromName(nodename)
self.assertEqual(obj.is_pci_sriov(), True)
nodename = "pci_8086_2448"
obj = self._nodeDevFromName(nodename)
self.assertEqual(obj.is_pci_bridge(), True)
2013-03-17 17:06:52 -04:00
2019-06-05 15:39:09 -04:00
def testUSBDevDevice(self):
2013-03-17 17:06:52 -04:00
devname = "usb_device_781_5151_2004453082054CA1BEEE"
2019-06-05 15:39:09 -04:00
dev = self._nodeDevFromName(devname)
self.assertEqual(dev.vendor_name, "SanDisk Corp.")
self.assertEqual(dev.product_name, "Cruzer Micro 256/512MB Flash Drive")
2019-06-05 15:39:09 -04:00
devname = "usb_device_1d6b_1_0000_00_1a_0"
dev = self._nodeDevFromName(devname)
self.assertTrue(dev.is_usb_linux_root_hub())
2013-03-17 17:06:52 -04:00
2019-06-05 15:46:26 -04:00
def testSCSIDevice(self):
devname = "pci_8086_2829_scsi_host_scsi_device_lun0"
dev = self._nodeDevFromName(devname)
self.assertEqual(dev.host, "0")
self.assertEqual(dev.bus, "0")
self.assertEqual(dev.target, "0")
2019-06-05 16:00:25 -04:00
def testStorageDevice(self):
2013-03-17 17:06:52 -04:00
devname = "storage_serial_SATA_WDC_WD1600AAJS__WD_WCAP95119685"
2019-06-05 16:00:25 -04:00
dev = self._nodeDevFromName(devname)
self.assertEqual(dev.block, "/dev/sda")
self.assertEqual(dev.drive_type, "disk")
self.assertEqual(dev.media_available, None)
2013-03-17 17:06:52 -04:00
2019-06-05 16:00:25 -04:00
devname = "storage_model_DVDRAM_GSA_U1200N"
dev = self._nodeDevFromName(devname)
self.assertEqual(dev.media_label, "Fedora12_media")
self.assertEqual(dev.media_available, 1)
2013-03-17 17:06:52 -04:00
def testSCSIBus(self):
devname = "pci_8086_2829_scsi_host_1"
2019-06-05 16:03:43 -04:00
dev = self._nodeDevFromName(devname)
self.assertEqual(dev.host, "2")
2013-03-17 17:06:52 -04:00
2017-02-21 17:00:54 +04:00
def testDRMDevice(self):
devname = "drm_renderD129"
2019-06-05 16:13:44 -04:00
dev = self._nodeDevFromName(devname)
self.assertEqual(dev.devnodes[0].path, "/dev/dri/renderD129")
self.assertEqual(dev.devnodes[0].node_type, "dev")
self.assertEqual(dev.devnodes[1].path,
"/dev/dri/by-path/pci-0000:00:02.0-render")
self.assertEqual(dev.devnodes[1].node_type, "link")
self.assertEqual(dev.is_drm_render(), True)
2019-06-09 16:39:15 -04:00
self.assertTrue(dev.get_devnode("frob"))
2017-02-21 17:00:54 +04:00
2013-03-17 17:06:52 -04:00
2019-06-05 15:04:35 -04:00
# NodeDevice 2 Device XML tests
2013-03-17 17:06:52 -04:00
def testNodeDev2USB1(self):
nodename = "usb_device_781_5151_2004453082054CA1BEEE"
devfile = "usbdev1.xml"
self._testNode2DeviceCompare(nodename, devfile)
def testNodeDev2USB2(self):
nodename = "usb_device_1d6b_2_0000_00_1d_7"
2013-03-17 17:06:52 -04:00
devfile = "usbdev2.xml"
nodedev = self._nodeDevFromName(nodename)
self._testNode2DeviceCompare(nodename, devfile, nodedev=nodedev)
2013-03-17 17:06:52 -04:00
def testNodeDev2PCI(self):
nodename = "pci_1180_592"
devfile = "pcidev.xml"
self._testNode2DeviceCompare(nodename, devfile)
def testNodeDevFail(self):
nodename = "usb_device_1d6b_1_0000_00_1d_1_if0"
devfile = ""
# This should exist, since usbbus is not a valid device to
# pass to a guest.
self.assertRaises(ValueError,
self._testNode2DeviceCompare, nodename, devfile)