virt: adjusting the osinfo tests to use fakelibosinfo

All osinfo tests will use the fake libosinfo module instead of
mocking it.

Adjsting the HardwareProperties to return virtio instead of virtio-net
and virtio-block as these names are not suppoted.

Partially implements blueprint libvirt-hardware-policy-from-libosinfo

Change-Id: I995d3fd3d5234327ff5e91c658833ff2d3a1562c
This commit is contained in:
Vladik Romanovsky 2016-02-03 00:11:05 -05:00
parent dcb63f0498
commit bb7908cad4
2 changed files with 20 additions and 38 deletions

View File

@ -12,11 +12,13 @@
# License for the specific language governing permissions and limitations
# under the License.
import fixtures
import mock
from nova import exception
from nova import objects
from nova import test
from nova.tests.unit.virt import fakelibosinfo
from nova.virt import osinfo
@ -25,36 +27,22 @@ class LibvirtOsInfoTest(test.NoDBTestCase):
def setUp(self):
super(LibvirtOsInfoTest, self).setUp()
image_meta = {'properties':
{'os_distro': 'fedora19',
{'os_distro': 'fedora22',
'hw_disk_bus': 'ide',
'hw_vif_model': 'virtio'}
'hw_vif_model': 'rtl8139'}
}
self.img_meta = objects.ImageMeta.from_dict(image_meta)
osinfo.libosinfo = mock.Mock()
self.useFixture(fixtures.MonkeyPatch(
'nova.virt.osinfo.libosinfo',
fakelibosinfo))
def test_get_os(self):
filter_mock = mock.Mock()
osinfo.libosinfo = mock.Mock()
osinfo.libosinfo.Filter.new.return_value = filter_mock
osinfo_mock = mock.Mock()
filtered_list = osinfo_mock.new_filtered
filtered_list.return_value.get_length.return_value = 1
os_info_db = osinfo._OsInfoDatabase.get_instance()
os_info_db.oslist = osinfo_mock
os_info_db.get_os('test33')
filter_mock.add_constraint.assert_called_once_with('short-id',
'test33')
self.assertTrue(filtered_list.return_value.get_nth.called)
os_name = os_info_db.get_os('fedora22').get_name()
self.assertTrue('Fedora 22', os_name)
def test_get_os_fails(self):
filter_mock = mock.Mock()
osinfo.libosinfo = mock.Mock()
osinfo.libosinfo.Filter.return_value.new.return_value = filter_mock
osinfo_mock = mock.Mock()
filtered = osinfo_mock.new_filtered.return_value
filtered.get_length.return_value = 0
os_info_db = osinfo._OsInfoDatabase.get_instance()
os_info_db.oslist = osinfo_mock
self.assertRaises(exception.OsInfoNotFound,
os_info_db.get_os,
'test33')
@ -64,21 +52,13 @@ class LibvirtOsInfoTest(test.NoDBTestCase):
from libosinfo.
"""
img_meta = {'properties':
{'os_distro': 'fedora19'}
{'os_distro': 'fedora22'}
}
img_meta = objects.ImageMeta.from_dict(img_meta)
with test.nested(
mock.patch.object(osinfo.OsInfo, 'network_model',
new_callable=mock.PropertyMock,
return_value='rtl8139'),
mock.patch.object(osinfo.OsInfo, 'disk_model',
new_callable=mock.PropertyMock,
return_value='scsi')):
osinfo_obj = osinfo.HardwareProperties(img_meta)
self.assertEqual('rtl8139', osinfo_obj.network_model)
self.assertEqual('scsi', osinfo_obj.disk_model)
osinfo_obj = osinfo.HardwareProperties(img_meta)
self.assertEqual('virtio', osinfo_obj.network_model)
self.assertEqual('virtio', osinfo_obj.disk_model)
def test_hardware_properties_from_meta(self):
"""Verifies that HardwareProperties attributes are being set
@ -86,5 +66,5 @@ class LibvirtOsInfoTest(test.NoDBTestCase):
"""
with mock.patch.object(osinfo._OsInfoDatabase, 'get_instance'):
osinfo_obj = osinfo.HardwareProperties(self.img_meta)
self.assertEqual('virtio', osinfo_obj.network_model)
self.assertEqual('rtl8139', osinfo_obj.network_model)
self.assertEqual('ide', osinfo_obj.disk_model)

View File

@ -124,10 +124,12 @@ class HardwareProperties(object):
@property
def network_model(self):
return self.img_props.get('hw_vif_model',
self.os_info_obj.network_model)
model = self.img_props.get('hw_vif_model',
self.os_info_obj.network_model)
return 'virtio' if model == 'virtio-net' else model
@property
def disk_model(self):
return self.img_props.get('hw_disk_bus',
self.os_info_obj.disk_model)
model = self.img_props.get('hw_disk_bus',
self.os_info_obj.disk_model)
return 'virtio' if model == 'virtio-block' else model