diff options
author | Dino Madarang <dinox.madarang@intel.com> | 2017-12-27 15:52:12 -0800 |
---|---|---|
committer | Dino Madarang <dinox.madarang@intel.com> | 2018-01-16 09:51:35 -0700 |
commit | 32e9ee7b2a8f095319a806780a93beef0c6cc382 (patch) | |
tree | 736d307d565a8693aa8cdcf09adb803598da98ca | |
parent | d579e62b431a31856a03098dc5323948ccfa4fdb (diff) |
bugfix: Fix duplicate 'address' in standlone SRIOV
* Add unit test per Rodolfo's comment
Creating a VM using generted xml file /tmp/vm_sriov_0.xml returns
an XML error: missing source address type.
This fix modifies generted xml from:
<source>
<address>
<address bus="0x1a" domain="0x0000" function="0x0" slot="0x10" type="pci" />
</address>
</source>
to:
<source>
<address bus="0x1a" domain="0x0000" function="0x0" slot="0x10" type="pci" />
</source>
Change-Id: I694153e7468986bacb19ba3e09e761993aad7184
Signed-off-by: Dino Simeon Madarang <dinox.madarang@intel.com>
Reviewed-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Reviewed-by: Ross Brattain <ross.b.brattain@intel.com>
Reviewed-by: Alain Jebara <alain.jebara@intel.com>
Reviewed-by: Emma Foley <emma.l.foley@intel.com>
-rw-r--r-- | tests/unit/benchmark/contexts/standalone/test_model.py | 27 | ||||
-rw-r--r-- | yardstick/benchmark/contexts/standalone/model.py | 3 |
2 files changed, 25 insertions, 5 deletions
diff --git a/tests/unit/benchmark/contexts/standalone/test_model.py b/tests/unit/benchmark/contexts/standalone/test_model.py index 31ec2b7d1..a8c54f193 100644 --- a/tests/unit/benchmark/contexts/standalone/test_model.py +++ b/tests/unit/benchmark/contexts/standalone/test_model.py @@ -134,9 +134,9 @@ class ModelLibvirtTestCase(unittest.TestCase): as mock_parse: xml = copy.deepcopy(self.xml) mock_parse.return_value = xml - vf_pci = '0001:05:04.2' + vm_pci = '0001:05:04.2' model.Libvirt.add_sriov_interfaces( - self.pci_address_str, vf_pci, self.mac, xml_input) + vm_pci, self.pci_address_str, self.mac, xml_input) mock_parse.assert_called_once_with(xml_input) self.mock_write_xml.assert_called_once_with(xml_input) interface = xml.find('devices').find('interface') @@ -145,8 +145,29 @@ class ModelLibvirtTestCase(unittest.TestCase): mac = interface.find('mac') self.assertEqual(self.mac, mac.get('address')) source = interface.find('source') + source_address = source.find('address') self.assertIsNotNone(source.find('address')) - self.assertIsNotNone(interface.find('address')) + + self.assertEqual('pci', source_address.get('type')) + self.assertEqual('0x' + self.pci_address_str.split(':')[0], + source_address.get('domain')) + self.assertEqual('0x' + self.pci_address_str.split(':')[1], + source_address.get('bus')) + self.assertEqual('0x' + self.pci_address_str.split(':')[2].split('.')[0], + source_address.get('slot')) + self.assertEqual('0x' + self.pci_address_str.split(':')[2].split('.')[1], + source_address.get('function')) + + interface_address = interface.find('address') + self.assertEqual('pci', interface_address.get('type')) + self.assertEqual('0x' + vm_pci.split(':')[0], + interface_address.get('domain')) + self.assertEqual('0x' + vm_pci.split(':')[1], + interface_address.get('bus')) + self.assertEqual('0x' + vm_pci.split(':')[2].split('.')[0], + interface_address.get('slot')) + self.assertEqual('0x' + vm_pci.split(':')[2].split('.')[1], + interface_address.get('function')) def test_create_snapshot_qemu(self): result = "/var/lib/libvirt/images/0.qcow2" diff --git a/yardstick/benchmark/contexts/standalone/model.py b/yardstick/benchmark/contexts/standalone/model.py index 85ae14b1d..0d58e91b0 100644 --- a/yardstick/benchmark/contexts/standalone/model.py +++ b/yardstick/benchmark/contexts/standalone/model.py @@ -212,9 +212,8 @@ class Libvirt(object): mac.set('address', vf_mac) source = ET.SubElement(interface, 'source') - addr = ET.SubElement(source, 'address') pci_address = PciAddress(vf_pci.strip()) - cls._add_interface_address(addr, pci_address) + cls._add_interface_address(source, pci_address) pci_vm_address = PciAddress(vm_pci.strip()) cls._add_interface_address(interface, pci_vm_address) |