libvirt: Mock libvirt'y things in setUp
While addressing a nit from change I8e5a122cc547222249973cf595d90c2d8d5658d4, I realized pretty much every test using the nova.tests.functional.libvirt.base.ServersTestBase' base class was now mocking the same things. This results in a lot of noise and distracts from what the tests are trying to do. Centralize the common mocks in the base class and clean up said noise. Change-Id: I5895865751e8e1fb08b3515bc9f8119cfcb9f35e Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
This commit is contained in:
parent
872a823d9a
commit
85ea4f703d
|
@ -15,6 +15,7 @@
|
|||
|
||||
import copy
|
||||
import fixtures
|
||||
import io
|
||||
import mock
|
||||
|
||||
from nova.objects import fields as obj_fields
|
||||
|
@ -45,7 +46,20 @@ class ServersTestBase(base.ServersTestBase):
|
|||
self.useFixture(fakelibvirt.FakeLibvirtFixture())
|
||||
self.useFixture(func_fixtures.PlacementFixture())
|
||||
|
||||
self.stub_out('nova.privsep.utils.supports_direct_io', lambda _: True)
|
||||
self.useFixture(fixtures.MockPatch(
|
||||
'nova.virt.libvirt.LibvirtDriver._create_image'))
|
||||
self.useFixture(fixtures.MockPatch(
|
||||
'nova.virt.libvirt.LibvirtDriver._get_local_gb_info',
|
||||
return_value={'total': 128, 'used': 44, 'free': 84}))
|
||||
self.useFixture(fixtures.MockPatch(
|
||||
'nova.virt.libvirt.driver.libvirt_utils.is_valid_hostname',
|
||||
return_value=True))
|
||||
self.useFixture(fixtures.MockPatch(
|
||||
'nova.virt.libvirt.driver.libvirt_utils.file_open',
|
||||
side_effect=[io.BytesIO(b''), io.BytesIO(b'')]))
|
||||
self.useFixture(fixtures.MockPatch(
|
||||
'nova.privsep.utils.supports_direct_io',
|
||||
return_value=True))
|
||||
|
||||
# Mock the 'get_connection' function, as we're going to need to provide
|
||||
# custom capabilities for each test
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import io
|
||||
import six
|
||||
|
||||
import mock
|
||||
|
@ -57,14 +56,6 @@ class NUMAServersTestBase(base.ServersTestBase):
|
|||
return self.start_service('scheduler')
|
||||
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._get_local_gb_info',
|
||||
new=mock.Mock(return_value={'total': 128,
|
||||
'used': 44,
|
||||
'free': 84}))
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.is_valid_hostname',
|
||||
new=mock.Mock(return_value=True))
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.file_open',
|
||||
new=mock.Mock(side_effect=[io.BytesIO(b''), io.BytesIO(b'')]))
|
||||
class NUMAServersTest(NUMAServersTestBase):
|
||||
|
||||
def _run_build_test(self, flavor_id, end_status='ACTIVE'):
|
||||
|
@ -188,16 +179,7 @@ class NUMAServersWithNetworksTest(NUMAServersTestBase):
|
|||
|
||||
return self._wait_for_state_change(found_server, 'BUILD')
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._get_local_gb_info',
|
||||
return_value={'total': 128,
|
||||
'used': 44,
|
||||
'free': 84})
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.is_valid_hostname',
|
||||
return_value=True)
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.file_open',
|
||||
side_effect=[io.BytesIO(b''), io.BytesIO(b'')])
|
||||
def test_create_server_with_single_physnet(
|
||||
self, mock_file_open, mock_valid_hostname, mock_get_fs_info):
|
||||
def test_create_server_with_single_physnet(self):
|
||||
extra_spec = {'hw:numa_nodes': '1'}
|
||||
flavor_id = self._create_flavor(extra_spec=extra_spec)
|
||||
networks = [
|
||||
|
@ -210,16 +192,7 @@ class NUMAServersWithNetworksTest(NUMAServersTestBase):
|
|||
self.assertTrue(self.mock_filter.called)
|
||||
self.assertEqual('ACTIVE', status)
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._get_local_gb_info',
|
||||
return_value={'total': 128,
|
||||
'used': 44,
|
||||
'free': 84})
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.is_valid_hostname',
|
||||
return_value=True)
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.file_open',
|
||||
side_effect=[io.BytesIO(b''), io.BytesIO(b'')])
|
||||
def test_create_server_with_multiple_physnets(
|
||||
self, mock_file_open, mock_valid_hostname, mock_get_fs_info):
|
||||
def test_create_server_with_multiple_physnets(self):
|
||||
"""Test multiple networks split across host NUMA nodes.
|
||||
|
||||
This should pass because the networks requested are split across
|
||||
|
@ -239,16 +212,7 @@ class NUMAServersWithNetworksTest(NUMAServersTestBase):
|
|||
self.assertTrue(self.mock_filter.called)
|
||||
self.assertEqual('ACTIVE', status)
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._get_local_gb_info',
|
||||
return_value={'total': 128,
|
||||
'used': 44,
|
||||
'free': 84})
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.is_valid_hostname',
|
||||
return_value=True)
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.file_open',
|
||||
side_effect=[io.BytesIO(b''), io.BytesIO(b'')])
|
||||
def test_create_server_with_multiple_physnets_fail(
|
||||
self, mock_file_open, mock_valid_hostname, mock_get_fs_info):
|
||||
def test_create_server_with_multiple_physnets_fail(self):
|
||||
"""Test multiple networks split across host NUMA nodes.
|
||||
|
||||
This should fail because we've requested a single-node instance but the
|
||||
|
@ -267,16 +231,7 @@ class NUMAServersWithNetworksTest(NUMAServersTestBase):
|
|||
self.assertTrue(self.mock_filter.called)
|
||||
self.assertEqual('ERROR', status)
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._get_local_gb_info',
|
||||
return_value={'total': 128,
|
||||
'used': 44,
|
||||
'free': 84})
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.is_valid_hostname',
|
||||
return_value=True)
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.file_open',
|
||||
side_effect=[io.BytesIO(b''), io.BytesIO(b'')])
|
||||
def test_create_server_with_physnet_and_tunneled_net(
|
||||
self, mock_file_open, mock_valid_hostname, mock_get_fs_info):
|
||||
def test_create_server_with_physnet_and_tunneled_net(self):
|
||||
"""Test combination of physnet and tunneled network.
|
||||
|
||||
This should pass because we've requested a single-node instance and the
|
||||
|
@ -295,16 +250,7 @@ class NUMAServersWithNetworksTest(NUMAServersTestBase):
|
|||
self.assertTrue(self.mock_filter.called)
|
||||
self.assertEqual('ACTIVE', status)
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._get_local_gb_info',
|
||||
return_value={'total': 128,
|
||||
'used': 44,
|
||||
'free': 84})
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.is_valid_hostname',
|
||||
return_value=True)
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.file_open',
|
||||
side_effect=[io.BytesIO(b''), io.BytesIO(b'')])
|
||||
def test_rebuild_server_with_network_affinity(
|
||||
self, mock_file_open, mock_valid_hostname, mock_get_fs_info):
|
||||
def test_rebuild_server_with_network_affinity(self):
|
||||
extra_spec = {'hw:numa_nodes': '1'}
|
||||
flavor_id = self._create_flavor(extra_spec=extra_spec)
|
||||
networks = [
|
||||
|
@ -353,16 +299,7 @@ class NUMAServersWithNetworksTest(NUMAServersTestBase):
|
|||
self.assertEqual(500, ex.response.status_code)
|
||||
self.assertIn('NoValidHost', six.text_type(ex))
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._get_local_gb_info',
|
||||
return_value={'total': 128,
|
||||
'used': 44,
|
||||
'free': 84})
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.is_valid_hostname',
|
||||
return_value=True)
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.file_open',
|
||||
side_effect=[io.BytesIO(b''), io.BytesIO(b'')])
|
||||
def test_cold_migrate_with_physnet(
|
||||
self, mock_file_open, mock_valid_hostname, mock_get_fs_info):
|
||||
def test_cold_migrate_with_physnet(self):
|
||||
host_info = fakelibvirt.NUMAHostInfo(cpu_nodes=2, cpu_sockets=1,
|
||||
cpu_cores=2, cpu_threads=2,
|
||||
kB_mem=15740000)
|
||||
|
@ -426,16 +363,7 @@ class NUMAServersWithNetworksTest(NUMAServersTestBase):
|
|||
self.assertIsNotNone(network_metadata)
|
||||
self.assertEqual(set(['foo']), network_metadata.physnets)
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._get_local_gb_info',
|
||||
return_value={'total': 128,
|
||||
'used': 44,
|
||||
'free': 84})
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.is_valid_hostname',
|
||||
return_value=True)
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.file_open',
|
||||
side_effect=[io.BytesIO(b''), io.BytesIO(b'')])
|
||||
def test_cold_migrate_with_physnet_fails(
|
||||
self, mock_file_open, mock_valid_hostname, mock_get_fs_info):
|
||||
def test_cold_migrate_with_physnet_fails(self):
|
||||
host_infos = [
|
||||
# host 1 has room on both nodes
|
||||
fakelibvirt.NUMAHostInfo(cpu_nodes=2, cpu_sockets=1,
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import io
|
||||
|
||||
import fixtures
|
||||
import mock
|
||||
from oslo_config import cfg
|
||||
|
@ -50,17 +48,6 @@ class _PCIServersTestBase(base.ServersTestBase):
|
|||
'nova.scheduler.filters.pci_passthrough_filter'
|
||||
'.PciPassthroughFilter.host_passes',
|
||||
side_effect=host_pass_mock)).mock
|
||||
self.useFixture(fixtures.MockPatch(
|
||||
'nova.virt.libvirt.LibvirtDriver._get_local_gb_info',
|
||||
return_value={'total': 128,
|
||||
'used': 44,
|
||||
'free': 84}))
|
||||
self.useFixture(fixtures.MockPatch(
|
||||
'nova.virt.libvirt.driver.libvirt_utils.is_valid_hostname',
|
||||
return_value=True))
|
||||
self.useFixture(fixtures.MockPatch(
|
||||
'nova.virt.libvirt.driver.libvirt_utils.file_open',
|
||||
side_effect=[io.BytesIO(b''), io.BytesIO(b'')]))
|
||||
|
||||
def _setup_scheduler_service(self):
|
||||
# Enable the 'NUMATopologyFilter', 'PciPassthroughFilter'
|
||||
|
@ -139,8 +126,7 @@ class SRIOVServersTest(_PCIServersTestBase):
|
|||
},
|
||||
)]
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._create_image')
|
||||
def test_create_server_with_VF(self, img_mock):
|
||||
def test_create_server_with_VF(self):
|
||||
|
||||
host_info = fakelibvirt.NUMAHostInfo(cpu_nodes=2, cpu_sockets=1,
|
||||
cpu_cores=2, cpu_threads=2,
|
||||
|
@ -155,8 +141,7 @@ class SRIOVServersTest(_PCIServersTestBase):
|
|||
|
||||
self._run_build_test(flavor_id)
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._create_image')
|
||||
def test_create_server_with_PF(self, img_mock):
|
||||
def test_create_server_with_PF(self):
|
||||
|
||||
host_info = fakelibvirt.NUMAHostInfo(cpu_nodes=2, cpu_sockets=1,
|
||||
cpu_cores=2, cpu_threads=2,
|
||||
|
@ -171,8 +156,7 @@ class SRIOVServersTest(_PCIServersTestBase):
|
|||
|
||||
self._run_build_test(flavor_id)
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._create_image')
|
||||
def test_create_server_with_PF_no_VF(self, img_mock):
|
||||
def test_create_server_with_PF_no_VF(self):
|
||||
|
||||
host_info = fakelibvirt.NUMAHostInfo(cpu_nodes=2, cpu_sockets=1,
|
||||
cpu_cores=2, cpu_threads=2,
|
||||
|
@ -192,8 +176,7 @@ class SRIOVServersTest(_PCIServersTestBase):
|
|||
self._run_build_test(flavor_id_pfs)
|
||||
self._run_build_test(flavor_id_vfs, end_status='ERROR')
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._create_image')
|
||||
def test_create_server_with_VF_no_PF(self, img_mock):
|
||||
def test_create_server_with_VF_no_PF(self):
|
||||
|
||||
host_info = fakelibvirt.NUMAHostInfo(cpu_nodes=2, cpu_sockets=1,
|
||||
cpu_cores=2, cpu_threads=2,
|
||||
|
@ -307,8 +290,7 @@ class PCIServersTest(_PCIServersTestBase):
|
|||
}
|
||||
)]
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._create_image')
|
||||
def test_create_server_with_pci_dev_and_numa(self, img_mock):
|
||||
def test_create_server_with_pci_dev_and_numa(self):
|
||||
"""Verifies that an instance can be booted with cpu pinning and with an
|
||||
assigned pci device.
|
||||
"""
|
||||
|
@ -329,8 +311,7 @@ class PCIServersTest(_PCIServersTestBase):
|
|||
|
||||
self._run_build_test(flavor_id)
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._create_image')
|
||||
def test_create_server_with_pci_dev_and_numa_fails(self, img_mock):
|
||||
def test_create_server_with_pci_dev_and_numa_fails(self):
|
||||
"""This test ensures that it is not possible to allocated CPU and
|
||||
memory resources from one NUMA node and a PCI device from another.
|
||||
"""
|
||||
|
@ -376,8 +357,7 @@ class PCIServersWithNUMAPoliciesTest(_PCIServersTestBase):
|
|||
}
|
||||
)]
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._create_image')
|
||||
def test_create_server_with_pci_dev_and_numa(self, img_mock):
|
||||
def test_create_server_with_pci_dev_and_numa(self):
|
||||
"""Validate behavior of 'preferred' PCI NUMA policy.
|
||||
|
||||
This test ensures that it *is* possible to allocate CPU and memory
|
||||
|
|
|
@ -13,9 +13,6 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import io
|
||||
import mock
|
||||
|
||||
from nova.tests.functional.api import client
|
||||
from nova.tests.functional.libvirt import base
|
||||
from nova.tests.unit.virt.libvirt import fakelibvirt
|
||||
|
@ -46,16 +43,7 @@ class RealTimeServersTest(base.ServersTestBase):
|
|||
client.OpenStackApiException,
|
||||
self.api.post_server, {'server': server})
|
||||
|
||||
@mock.patch('nova.virt.libvirt.LibvirtDriver._get_local_gb_info',
|
||||
return_value={'total': 128,
|
||||
'used': 44,
|
||||
'free': 84})
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.is_valid_hostname',
|
||||
return_value=True)
|
||||
@mock.patch('nova.virt.libvirt.driver.libvirt_utils.file_open',
|
||||
side_effect=[io.BytesIO(b''), io.BytesIO(b'')])
|
||||
def test_success(
|
||||
self, mock_file_open, mock_valid_hostname, mock_get_fs_info):
|
||||
def test_success(self):
|
||||
host_info = fakelibvirt.NUMAHostInfo(cpu_nodes=2, cpu_sockets=1,
|
||||
cpu_cores=2, cpu_threads=2,
|
||||
kB_mem=15740000)
|
||||
|
|
Loading…
Reference in New Issue