Add tempest test to live/cold migrate Windows OS's
Test:
- WindowsServers10Test.test_live_migration
- WindowsServers10Test.test_cold_migration
- WindowsServers11Test.test_live_migration_with_vtpm_negative
- WindowsServers11Test.test_cold_migration
Related-Prod: PRODX-37842
Change-Id: I31c755b94cde82b4d408a95ded8d26e30a17975d
diff --git a/tempest/api/compute/admin/test_create_server.py b/tempest/api/compute/admin/test_create_server.py
index f583c8f..5eed76a 100644
--- a/tempest/api/compute/admin/test_create_server.py
+++ b/tempest/api/compute/admin/test_create_server.py
@@ -22,6 +22,7 @@
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
+from tempest.lib import exceptions as lib_exc
CONF = config.CONF
@@ -209,6 +210,55 @@
validation_resources=validation_resources,
wait_until='PINGABLE')
+ def _test_live_migration(self):
+ block_migration = (CONF.compute_feature_enabled.
+ block_migration_for_live_migration)
+ disk_over_commit = False
+ validation_resources = self.get_class_validation_resources(
+ self.os_primary)
+ server_id = self.create_test_server(
+ image_id=self.image_id,
+ flavor=self.flavor_id,
+ validatable=True,
+ validation_resources=validation_resources,
+ wait_until='PINGABLE')['id']
+ source_host = self.get_host_for_server(server_id)
+ if not CONF.compute_feature_enabled.can_migrate_between_any_hosts:
+ # not to specify a host so that the scheduler will pick one
+ destination_host = None
+ else:
+ destination_host = self.get_host_other_than(server_id)
+ self.admin_servers_client.live_migrate_server(
+ server_id,
+ host=destination_host,
+ block_migration=block_migration,
+ disk_over_commit=disk_over_commit)
+ waiters.wait_for_server_status(self.client,
+ server_id, 'ACTIVE')
+ destination_host = self.get_host_for_server(server_id)
+ self.assertNotEqual(source_host, destination_host)
+
+ def _test_cold_migration(self):
+ # Run as admin to allow migrate tpm secret
+ validation_resources = self.get_class_validation_resources(
+ self.os_admin)
+ server_id = self.create_test_server(
+ clients=self.os_admin,
+ image_id=self.image_id,
+ flavor=self.flavor_id,
+ validatable=True,
+ validation_resources=validation_resources,
+ wait_until='PINGABLE')['id']
+ source_host = self.get_host_for_server(server_id)
+ self.admin_servers_client.migrate_server(server_id)
+ waiters.wait_for_server_status(self.admin_servers_client,
+ server_id, 'VERIFY_RESIZE')
+ self.admin_servers_client.confirm_resize_server(server_id)
+ waiters.wait_for_server_status(self.admin_servers_client,
+ server_id, 'ACTIVE')
+ destination_host = self.get_host_for_server(server_id)
+ self.assertNotEqual(source_host, destination_host)
+
class WindowsServers10Test(WindowsServersBaseTest):
@@ -219,6 +269,20 @@
def test_create_server(self):
self._test_create_server()
+ @decorators.attr(type='multinode')
+ @decorators.idempotent_id('6c22fcb1-4c3e-4bf6-b8c7-c3e2322cf5ff')
+ @testtools.skipUnless(CONF.compute_feature_enabled.live_migration,
+ 'Live migration is not available.')
+ def test_live_migration(self):
+ self._test_live_migration()
+
+ @decorators.attr(type='multinode')
+ @decorators.idempotent_id('96d67c40-fd4d-4286-a3c7-880d9eb77a95')
+ @testtools.skipUnless(CONF.compute_feature_enabled.cold_migration,
+ 'Cold migration is not available.')
+ def test_cold_migration(self):
+ self._test_cold_migration()
+
class WindowsServers11Test(WindowsServersBaseTest):
@@ -228,3 +292,18 @@
@decorators.idempotent_id('1cff7fea-f251-4a05-a667-9b946913a3c5')
def test_create_server(self):
self._test_create_server()
+
+ @decorators.attr(type=['negative'])
+ @decorators.idempotent_id('9afd991e-0478-41ca-b5cf-bf32b10ae5a7')
+ @testtools.skipUnless(CONF.compute_feature_enabled.live_migration,
+ 'Live migration is not available.')
+ def test_live_migration_with_vtpm_negative(self):
+ """Test live migrating instance with vTPM should not be supported"""
+ self.assertRaises(lib_exc.BadRequest, self._test_live_migration)
+
+ @decorators.attr(type='multinode')
+ @decorators.idempotent_id('7da88453-cc6d-4fef-b893-b4ae8f40767d')
+ @testtools.skipUnless(CONF.compute_feature_enabled.cold_migration,
+ 'Cold migration is not available.')
+ def test_cold_migration(self):
+ self._test_cold_migration()