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:
parent
dcb63f0498
commit
bb7908cad4
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue