From 50ad9d4c0355cac1d7a31d1b984a0bed2c21465f Mon Sep 17 00:00:00 2001 From: Matthew Booth Date: Tue, 8 Nov 2016 15:18:32 +0000 Subject: [PATCH] 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 --- nova/tests/unit/virt/libvirt/fakelibvirt.py | 7 +++++++ nova/tests/unit/virt/libvirt/test_driver.py | 14 +++++++++----- nova/tests/unit/virt/libvirt/test_guest.py | 3 --- nova/tests/unit/virt/libvirt/test_host.py | 3 --- .../tests/unit/virt/libvirt/test_migration.py | 6 ++---- nova/tests/unit/virt/libvirt/test_vif.py | 2 ++ nova/tests/unit/virt/test_virt_drivers.py | 19 +++---------------- 7 files changed, 23 insertions(+), 31 deletions(-) diff --git a/nova/tests/unit/virt/libvirt/fakelibvirt.py b/nova/tests/unit/virt/libvirt/fakelibvirt.py index 92c514dec1..9d74317dda 100644 --- a/nova/tests/unit/virt/libvirt/fakelibvirt.py +++ b/nova/tests/unit/virt/libvirt/fakelibvirt.py @@ -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) diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index 84cc433c94..ea21da60ff 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -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) diff --git a/nova/tests/unit/virt/libvirt/test_guest.py b/nova/tests/unit/virt/libvirt/test_guest.py index bc62024c3d..b1f4fefcd3 100644 --- a/nova/tests/unit/virt/libvirt/test_guest.py +++ b/nova/tests/unit/virt/libvirt/test_guest.py @@ -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 diff --git a/nova/tests/unit/virt/libvirt/test_host.py b/nova/tests/unit/virt/libvirt/test_host.py index 45357a75b2..a1627ac1c0 100644 --- a/nova/tests/unit/virt/libvirt/test_host.py +++ b/nova/tests/unit/virt/libvirt/test_host.py @@ -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): diff --git a/nova/tests/unit/virt/libvirt/test_migration.py b/nova/tests/unit/virt/libvirt/test_migration.py index 90914df685..78906814db 100644 --- a/nova/tests/unit/virt/libvirt/test_migration.py +++ b/nova/tests/unit/virt/libvirt/test_migration.py @@ -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, diff --git a/nova/tests/unit/virt/libvirt/test_vif.py b/nova/tests/unit/virt/libvirt/test_vif.py index a5638ada37..e8fbb5429e 100644 --- a/nova/tests/unit/virt/libvirt/test_vif.py +++ b/nova/tests/unit/virt/libvirt/test_vif.py @@ -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() diff --git a/nova/tests/unit/virt/test_virt_drivers.py b/nova/tests/unit/virt/test_virt_drivers.py index cf82b045fb..3c2f36e2bd 100644 --- a/nova/tests/unit/virt/test_virt_drivers.py +++ b/nova/tests/unit/virt/test_virt_drivers.py @@ -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)