Add test_live_migration_ping for TestNetworkBasicOps in test_network_basic_ops
Related-prod: PRODX-26172
Change-Id: I90e4682e050703cfb92ea3f5f9542475283ea86a
(cherry picked from commit 236ec601c3f972b35300753f0196f9ae45734ab6)
(cherry picked from commit d184935d8e0f9b186df24708489c14432d76e56f)
diff --git a/tempest/scenario/test_network_basic_ops.py b/tempest/scenario/test_network_basic_ops.py
index 7b819e0..cbe605b 100644
--- a/tempest/scenario/test_network_basic_ops.py
+++ b/tempest/scenario/test_network_basic_ops.py
@@ -156,7 +156,7 @@
self.assertIn(self.router['id'],
seen_router_ids)
- def _create_server(self, network, port_id=None):
+ def _create_server(self, network, port_id=None, **kwargs):
keypair = self.create_keypair()
self.keypairs[keypair['name']] = keypair
security_groups = [
@@ -169,7 +169,8 @@
server = self.create_server(
networks=[network],
key_name=keypair['name'],
- security_groups=security_groups)
+ security_groups=security_groups,
+ **kwargs)
self.servers.append(server)
return server
@@ -394,6 +395,21 @@
router['id'], **kwargs)['router']
self.assertEqual(admin_state_up, router['admin_state_up'])
+ def _live_migrate_server(self, server, host_id=None):
+ src_host = self.get_host_for_server(server['id'])
+
+ self.os_adm.servers_client.live_migrate_server(
+ server_id=server['id'],
+ block_migration=False,
+ host=host_id)
+
+ waiters.wait_for_server_status(
+ self.servers_client, server['id'], 'ACTIVE')
+
+ dst_host = self.get_host_for_server(server['id'])
+ self.assertNotEqual(src_host, dst_host,
+ msg="Live migration failed, servers are equal")
+
@decorators.attr(type='smoke')
@decorators.idempotent_id('f323b3ba-82f8-4db7-8ea6-6a895869ec49')
@utils.services('compute', 'network')
@@ -922,3 +938,56 @@
security_groups=[])
self.check_remote_connectivity(ssh_client, dest=peer_address,
nic=spoof_nic, should_succeed=True)
+
+ @decorators.idempotent_id('463caa51-0967-4d6d-8ee9-11db1557c710')
+ @decorators.attr(type='slow')
+ @utils.services('compute', 'network')
+ def test_connectivity_between_vms_after_live_migration(self):
+ """Test the live-migration of the instances and ping
+
+ 1. Create server 1 and 2 on the same host
+ 2. Ping server 1 from server 2
+ 3. Live migrate server 1 to other host
+ 4. Ping server 1 from server 2
+ 5. Migrate back server 1 to the first host
+ 6. Ping server 1 from server 2
+ """
+
+ # Create server 1 with network, subnetwork, router, host
+ # and ping server 1
+ self._setup_network_and_servers()
+
+ server01 = self.servers[0]
+ hints = {'same_host': server01['id']}
+
+ # Create server 2 with network on the same host
+ self._create_new_network(create_gateway=True)
+ server02 = self._create_server(self.network,
+ scheduler_hints=hints)
+ server02_ip = [addr['addr'] for addr in
+ server02['addresses'][self.network['name']]]
+
+ # Check if both instances are on the same host
+ host01_id = self.get_host_for_server(server01['id'])
+ host02_id = self.get_host_for_server(server02['id'])
+
+ self.assertEqual(host01_id, host02_id,
+ message="Created servers have different hosts")
+
+ # Check ping between servers before live migration
+ self._check_server_connectivity(self.floating_ip_tuple.floating_ip,
+ server02_ip, should_connect=True)
+
+ # Live migrate server 1 to the new host
+ self._live_migrate_server(server=server01)
+
+ # Check ping between servers after live migration
+ self._check_server_connectivity(self.floating_ip_tuple.floating_ip,
+ server02_ip, should_connect=True)
+
+ # Migrate back server 1 to the first host, wait for status Active
+ self._live_migrate_server(server=server01, host_id=host01_id)
+
+ # Check ping between servers after live migration
+ self._check_server_connectivity(self.floating_ip_tuple.floating_ip,
+ server02_ip, should_connect=True)