From 1e10f58eef447132bf60f9d8917b9ba9538f89de Mon Sep 17 00:00:00 2001 From: Adam Spiers Date: Thu, 5 Sep 2019 20:23:58 +0100 Subject: [PATCH] Move get_machine_type() test to test_utils.py SEV work uncovered that test_get_guest_config_machine_type_s390(), a unit test for nova.virt.libvirt.utils.get_machine_type(), was misplaced in test_driver.py, so move that to test_utils.py and in the process extend it to test other architectures. Also rename three related unit tests of the same get_machine_type() for increased clarity. Change-Id: Ib43f96445e7c13f4abc4522f1d3567a4a5499382 blueprint: amd-sev-libvirt-support --- nova/tests/unit/virt/libvirt/test_driver.py | 10 --------- nova/tests/unit/virt/libvirt/test_utils.py | 25 +++++++++++++++++---- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index 6e8554f78b6b..16d00a2356fc 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -6592,16 +6592,6 @@ class LibvirtConnTestCase(test.NoDBTestCase, self.assertTrue(usbhost_exists) self.assertTrue(keyboard_exists) - @mock.patch('nova.virt.libvirt.utils.get_arch') - def test_get_guest_config_machine_type_s390(self, mock_get_arch): - - image_meta = objects.ImageMeta.from_dict(self.test_image_meta) - host_cpu_archs = (fields.Architecture.S390, fields.Architecture.S390X) - for host_cpu_arch in host_cpu_archs: - mock_get_arch.return_value = host_cpu_arch - os_mach_type = libvirt_utils.get_machine_type(image_meta) - self.assertEqual('s390-ccw-virtio', os_mach_type) - def test_get_guest_config_machine_type_through_image_meta(self): self.flags(virt_type="kvm", group='libvirt') diff --git a/nova/tests/unit/virt/libvirt/test_utils.py b/nova/tests/unit/virt/libvirt/test_utils.py index 1dbef21da0c8..fe475723a99d 100644 --- a/nova/tests/unit/virt/libvirt/test_utils.py +++ b/nova/tests/unit/virt/libvirt/test_utils.py @@ -957,21 +957,38 @@ sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0 self.assertEqual('/test/disk', disk_path) self.assertEqual('ploop', format) - def test_get_default_machine_type(self): + @mock.patch('nova.virt.libvirt.utils.get_arch') + def test_get_machine_type_from_fallbacks(self, mock_get_arch): + """Test hardcoded arch-specific fallbacks for default machine type""" + image_meta = objects.ImageMeta.from_dict({"disk_format": "raw"}) + host_cpu_archs = { + obj_fields.Architecture.ARMV7: "virt", + obj_fields.Architecture.AARCH64: "virt", + obj_fields.Architecture.S390: "s390-ccw-virtio", + obj_fields.Architecture.S390X: "s390-ccw-virtio", + obj_fields.Architecture.I686: "pc", + obj_fields.Architecture.X86_64: "pc", + } + for arch, expected_mtype in host_cpu_archs.items(): + mock_get_arch.return_value = arch + mtype = libvirt_utils.get_machine_type(image_meta) + self.assertEqual(expected_mtype, mtype) + + def test_get_machine_type_from_conf(self): self.useFixture(nova_fixtures.ConfPatcher( group="libvirt", hw_machine_type=['x86_64=q35', 'i686=legacy'])) self.assertEqual('q35', libvirt_utils.get_default_machine_type('x86_64')) - def test_get_default_machine_type_empty(self): + def test_get_machine_type_no_conf_or_fallback(self): self.assertIsNone(libvirt_utils.get_default_machine_type('sparc')) - def test_get_default_machine_type_missing(self): + def test_get_machine_type_missing_conf_and_fallback(self): self.useFixture(nova_fixtures.ConfPatcher( group="libvirt", hw_machine_type=['x86_64=q35', 'i686=legacy'])) self.assertIsNone(libvirt_utils.get_default_machine_type('sparc')) - def test_get_default_machine_type_invalid(self): + def test_get_machine_type_survives_invalid_conf(self): self.useFixture(nova_fixtures.ConfPatcher( group="libvirt", hw_machine_type=['x86_64=q35', 'foo'])) self.assertEqual('q35',