Add vdpa base movement tests
Add vdpa movement tests resize and cold migration to test_vdpa test sutie. Depends-on: https://review.opendev.org/c/openstack/whitebox-tempest-plugin/+/822354 Change-Id: Id24df279177b8575b68c830d9282bd8a00713aa8
This commit is contained in:
parent
81a677f54f
commit
f31b8d85b6
@ -13,6 +13,7 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.common import waiters
|
||||
from tempest import config
|
||||
|
||||
from whitebox_tempest_plugin.api.compute import base
|
||||
@ -83,3 +84,127 @@ class VDPASmokeTests(base.BaseWhiteboxComputeTest):
|
||||
server['id'],
|
||||
port['port']['id']
|
||||
)
|
||||
|
||||
|
||||
class VDPAColdMigration(VDPASmokeTests):
|
||||
|
||||
@classmethod
|
||||
def skip_checks(cls):
|
||||
super(VDPAColdMigration, cls).skip_checks()
|
||||
if CONF.compute.min_compute_nodes < 2:
|
||||
msg = "Need two or more compute nodes to execute cold migration"
|
||||
raise cls.skipException(msg)
|
||||
if not CONF.compute_feature_enabled.vdpa_cold_migration_supported:
|
||||
msg = "vDPA Cold Migration support needed in order to run tests"
|
||||
raise cls.skipException(msg)
|
||||
|
||||
def _test_vdpa_cold_migration(self, revert=False):
|
||||
port = self._create_port_from_vnic_type(
|
||||
net=self.network,
|
||||
vnic_type='vdpa'
|
||||
)
|
||||
server = self.create_test_server(
|
||||
networks=[{'port': port['port']['id']}],
|
||||
wait_until='ACTIVE'
|
||||
)
|
||||
|
||||
# Determine a target host for cold migration target
|
||||
dest_host = self.get_host_other_than(server['id'])
|
||||
|
||||
# Cold migrate the the instance to the target host
|
||||
src_host = self.get_host_for_server(server['id'])
|
||||
self.admin_servers_client.migrate_server(server['id'], host=dest_host)
|
||||
waiters.wait_for_server_status(self.servers_client, server['id'],
|
||||
'VERIFY_RESIZE')
|
||||
|
||||
if revert:
|
||||
self.admin_servers_client.revert_resize_server(server['id'])
|
||||
else:
|
||||
self.admin_servers_client.confirm_resize_server(server['id'])
|
||||
|
||||
waiters.wait_for_server_status(self.servers_client,
|
||||
server['id'], 'ACTIVE')
|
||||
dest_host = self.get_host_for_server(server['id'])
|
||||
|
||||
# If the cold migration is reverted the guest should be back on
|
||||
# it's original host. Otherwise the destination host should now be
|
||||
# different from the source
|
||||
if revert:
|
||||
self.assertEqual(src_host, dest_host)
|
||||
else:
|
||||
self.assertNotEqual(src_host, dest_host)
|
||||
|
||||
interface_xml_element = self._get_xml_interface_device(
|
||||
server['id'],
|
||||
port['port']['id'],
|
||||
)
|
||||
if CONF.whitebox.rx_queue_size:
|
||||
driver = interface_xml_element.find("./driver[@name='vhost']")
|
||||
self.assertEqual(
|
||||
str(CONF.whitebox.rx_queue_size),
|
||||
driver.attrib['rx_queue_size'],
|
||||
"VDPA rx_queue_size equaling %s not found" %
|
||||
str(CONF.whitebox.rx_queue_size))
|
||||
|
||||
# Confirm dev_type, allocation status, and pci address information are
|
||||
# correct in pci_devices table of openstack DB
|
||||
self._verify_neutron_port_binding(
|
||||
server['id'],
|
||||
port['port']['id']
|
||||
)
|
||||
|
||||
def test_vdpa_cold_migration(self):
|
||||
self._test_vdpa_cold_migration()
|
||||
|
||||
def test_revert_vdpa_cold_migration(self):
|
||||
self._test_vdpa_cold_migration(revert=True)
|
||||
|
||||
|
||||
class VDPAResizeInstance(VDPASmokeTests):
|
||||
|
||||
@classmethod
|
||||
def skip_checks(cls):
|
||||
super(VDPAResizeInstance, cls).skip_checks()
|
||||
if not CONF.compute_feature_enabled.vdpa_cold_migration_supported:
|
||||
msg = "vDPA Cold Migration support needed in order to run " \
|
||||
"resize tests"
|
||||
raise cls.skipException(msg)
|
||||
if not CONF.compute_feature_enabled.resize:
|
||||
msg = 'Resize not available.'
|
||||
raise cls.skipException(msg)
|
||||
|
||||
def setUp(self):
|
||||
super(VDPAResizeInstance, self).setUp()
|
||||
self.new_flavor = self.create_flavor(vcpus=2, ram=256)
|
||||
|
||||
def test_vdpa_to_standard_resize(self):
|
||||
# Create an instance with a vDPA port and resize the server
|
||||
port = self._create_port_from_vnic_type(
|
||||
net=self.network,
|
||||
vnic_type='vdpa'
|
||||
)
|
||||
server = self.create_test_server(
|
||||
networks=[{'port': port['port']['id']}],
|
||||
wait_until='ACTIVE'
|
||||
)
|
||||
|
||||
self.resize_server(server['id'], self.new_flavor['id'])
|
||||
|
||||
interface_xml_element = self._get_xml_interface_device(
|
||||
server['id'],
|
||||
port['port']['id'],
|
||||
)
|
||||
if CONF.whitebox.rx_queue_size:
|
||||
driver = interface_xml_element.find("./driver[@name='vhost']")
|
||||
self.assertEqual(
|
||||
str(CONF.whitebox.rx_queue_size),
|
||||
driver.attrib['rx_queue_size'],
|
||||
"VDPA rx_queue_size equaling %s not found" %
|
||||
str(CONF.whitebox.rx_queue_size))
|
||||
|
||||
# Confirm dev_type, allocation status, and pci address information are
|
||||
# correct in pci_devices table of openstack DB
|
||||
self._verify_neutron_port_binding(
|
||||
server['id'],
|
||||
port['port']['id']
|
||||
)
|
||||
|
@ -322,7 +322,7 @@ class VGPUColdMigration(VGPUTest):
|
||||
if CONF.compute.min_compute_nodes < 2:
|
||||
msg = "Need two or more compute nodes to execute cold migration"
|
||||
raise cls.skipException(msg)
|
||||
if not CONF.whitebox_hardware.vgpu_cold_migration_supported:
|
||||
if not CONF.compute_feature_enabled.vgpu_cold_migration_supported:
|
||||
msg = "vGPU Cold Migration support needed in order to run tests"
|
||||
raise cls.skipException(msg)
|
||||
|
||||
@ -465,7 +465,7 @@ class VGPUResizeInstance(VGPUTest):
|
||||
@classmethod
|
||||
def skip_checks(cls):
|
||||
super(VGPUResizeInstance, cls).skip_checks()
|
||||
if not CONF.whitebox_hardware.vgpu_cold_migration_supported:
|
||||
if not CONF.compute_feature_enabled.vgpu_cold_migration_supported:
|
||||
msg = "vGPU Cold Migration support needed in order to run " \
|
||||
"resize tests"
|
||||
raise cls.skipException(msg)
|
||||
|
@ -286,11 +286,6 @@ hardware_opts = [
|
||||
default=None,
|
||||
help="The NUMA Node ID that has affinity to the NIC connected to the "
|
||||
"physnet defined in 'sriov_physnet'"),
|
||||
cfg.BoolOpt(
|
||||
'vgpu_cold_migration_supported',
|
||||
default=False,
|
||||
help='Cold migration and resize supported for guest instances '
|
||||
'with vGPU devices'),
|
||||
cfg.DictOpt(
|
||||
'vgpu_type_mapping',
|
||||
default=None,
|
||||
@ -330,5 +325,13 @@ compute_features_group_opts = [
|
||||
'[libvirt]/swtpm_enabled=True'
|
||||
'[libvirt]/swtpm_user=tss'
|
||||
'[libvirt]/swtpm_group=tss'
|
||||
'[key_manager]/backend=barbican')
|
||||
'[key_manager]/backend=barbican'),
|
||||
cfg.BoolOpt('vdpa_cold_migration_supported',
|
||||
default=False,
|
||||
help='Cold migration and resize supported for guest instances '
|
||||
'with vDPA ports'),
|
||||
cfg.BoolOpt('vgpu_cold_migration_supported',
|
||||
default=False,
|
||||
help='Cold migration and resize supported for guest instances '
|
||||
'with vGPU devices')
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user