libvirt: Fix incorrect libvirt library patching in tests

In several places were were incorrectly globally patching modules
which load the libvirt library in tests. A number of tests relied on
this patching, but did not do it themselves. They happened to work
when running all tests due to test ordering, but failed when running a
subset of tests.

Change-Id: Ic03a50ef702490abad7482213a8f118318422064
This commit is contained in:
Matthew Booth 2016-11-08 15:18:32 +00:00
parent a6053dd608
commit 50ad9d4c03
7 changed files with 23 additions and 31 deletions

View File

@ -12,6 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
import sys
import time
import uuid
@ -1487,4 +1488,10 @@ class FakeLibvirtFixture(fixtures.Fixture):
def setUp(self):
super(FakeLibvirtFixture, self).setUp()
# Some modules load the libvirt library in a strange way
for module in ('driver', 'host', 'guest', 'firewall', 'migration'):
i = 'nova.virt.libvirt.{module}.libvirt'.format(module=module)
# NOTE(mdbooth): The strange incantation below means 'this module'
self.useFixture(fixtures.MonkeyPatch(i, sys.modules[__name__]))
disable_event_thread(self)

View File

@ -110,11 +110,6 @@ from nova.virt.libvirt.storage import rbd_utils
from nova.virt.libvirt import utils as libvirt_utils
from nova.virt.libvirt.volume import volume as volume_drivers
libvirt_driver.libvirt = fakelibvirt
host.libvirt = fakelibvirt
libvirt_guest.libvirt = fakelibvirt
libvirt_migrate.libvirt = fakelibvirt
CONF = nova.conf.CONF
@ -15002,6 +14997,10 @@ class HostStateTestCase(test.NoDBTestCase):
def _get_host_numa_topology(self):
return HostStateTestCase.numa_topology
def setUp(self):
super(HostStateTestCase, self).setUp()
self.useFixture(fakelibvirt.FakeLibvirtFixture())
@mock.patch.object(fakelibvirt, "openAuth")
def test_update_status(self, mock_open):
mock_open.return_value = fakelibvirt.Connection("qemu:///system")
@ -15041,6 +15040,7 @@ class LibvirtDriverTestCase(test.NoDBTestCase):
"""Test for nova.virt.libvirt.libvirt_driver.LibvirtDriver."""
def setUp(self):
super(LibvirtDriverTestCase, self).setUp()
self.useFixture(fakelibvirt.FakeLibvirtFixture())
os_vif.initialize()
self.drvr = libvirt_driver.LibvirtDriver(
@ -17009,6 +17009,7 @@ class LibvirtVolumeUsageTestCase(test.NoDBTestCase):
def setUp(self):
super(LibvirtVolumeUsageTestCase, self).setUp()
self.useFixture(fakelibvirt.FakeLibvirtFixture())
self.drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
self.c = context.get_admin_context()
@ -17056,6 +17057,7 @@ class LibvirtNonblockingTestCase(test.NoDBTestCase):
def setUp(self):
super(LibvirtNonblockingTestCase, self).setUp()
self.useFixture(fakelibvirt.FakeLibvirtFixture())
self.flags(connection_uri="test:///default",
group='libvirt')
@ -17101,6 +17103,7 @@ class LibvirtVolumeSnapshotTestCase(test.NoDBTestCase):
def setUp(self):
super(LibvirtVolumeSnapshotTestCase, self).setUp()
self.useFixture(fakelibvirt.FakeLibvirtFixture())
self.drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
self.c = context.get_admin_context()
@ -18091,6 +18094,7 @@ class _BaseSnapshotTests(test.NoDBTestCase):
self.useFixture(fixtures.MonkeyPatch(
'nova.virt.libvirt.imagebackend.libvirt_utils',
fake_libvirt_utils))
self.useFixture(fakelibvirt.FakeLibvirtFixture())
self.image_service = nova.tests.unit.image.fake.stub_out_image_service(
self)

View File

@ -29,9 +29,6 @@ from nova.virt.libvirt import guest as libvirt_guest
from nova.virt.libvirt import host
host.libvirt = fakelibvirt
libvirt_guest.libvirt = fakelibvirt
if sys.version_info > (3,):
long = int

View File

@ -32,9 +32,6 @@ from nova.virt.libvirt import driver as libvirt_driver
from nova.virt.libvirt import guest as libvirt_guest
from nova.virt.libvirt import host
host.libvirt = fakelibvirt
libvirt_guest.libvirt = fakelibvirt
class FakeVirtDomain(object):

View File

@ -29,10 +29,6 @@ from nova.virt.libvirt import guest as libvirt_guest
from nova.virt.libvirt import host
from nova.virt.libvirt import migration
libvirt_guest.libvirt = fakelibvirt
host.libvirt = fakelibvirt
migration.libvirt = fakelibvirt
class UtilityMigrationTestCase(test.NoDBTestCase):
@ -261,6 +257,8 @@ class MigrationMonitorTestCase(test.NoDBTestCase):
def setUp(self):
super(MigrationMonitorTestCase, self).setUp()
self.useFixture(fakelibvirt.FakeLibvirtFixture())
flavor = objects.Flavor(memory_mb=2048,
swap=0,
vcpu_weight=None,

View File

@ -33,6 +33,7 @@ from nova.pci import utils as pci_utils
from nova import test
from nova.tests.unit import matchers
from nova.tests.unit.virt import fakelibosinfo
from nova.tests.unit.virt.libvirt import fakelibvirt
from nova import utils
from nova.virt.libvirt import config as vconfig
from nova.virt.libvirt import host
@ -435,6 +436,7 @@ class LibvirtVifTestCase(test.NoDBTestCase):
def setUp(self):
super(LibvirtVifTestCase, self).setUp()
self.useFixture(fakelibvirt.FakeLibvirtFixture())
self.flags(allow_same_net_traffic=True)
# os_vif.initialize is typically done in nova-compute startup
os_vif.initialize()

View File

@ -91,34 +91,19 @@ class _FakeDriverBackendTestCase(object):
import nova.tests.unit.virt.libvirt.fake_os_brick_connector as \
fake_os_brick_connector
sys.modules['libvirt'] = fakelibvirt
import nova.virt.libvirt.driver
import nova.virt.libvirt.firewall
import nova.virt.libvirt.host
self.useFixture(fake_imagebackend.ImageBackendFixture())
self.useFixture(fixtures.MonkeyPatch(
'nova.virt.libvirt.driver.libvirt',
fakelibvirt))
self.useFixture(fakelibvirt.FakeLibvirtFixture())
self.useFixture(fixtures.MonkeyPatch(
'nova.virt.libvirt.driver.libvirt_utils',
fake_libvirt_utils))
self.useFixture(fixtures.MonkeyPatch(
'nova.virt.libvirt.host.libvirt',
fakelibvirt))
self.useFixture(fixtures.MonkeyPatch(
'nova.virt.libvirt.imagebackend.libvirt_utils',
fake_libvirt_utils))
self.useFixture(fixtures.MonkeyPatch(
'nova.virt.libvirt.firewall.libvirt',
fakelibvirt))
self.useFixture(fixtures.MonkeyPatch(
'nova.virt.libvirt.driver.connector',
fake_os_brick_connector))
fakelibvirt.disable_event_thread(self)
self.flags(rescue_image_id="2",
rescue_kernel_id="3",
rescue_ramdisk_id=None,
@ -159,6 +144,8 @@ class _FakeDriverBackendTestCase(object):
live=live)
return fake_wait
import nova.virt.libvirt.driver
self.stubs.Set(nova.virt.libvirt.driver.LibvirtDriver,
'_get_instance_disk_info',
fake_get_instance_disk_info)