Merge "Adds tests for resize server for swap"
diff --git a/tempest/api/compute/admin/test_create_server.py b/tempest/api/compute/admin/test_create_server.py
index 293e284..c5078ea 100644
--- a/tempest/api/compute/admin/test_create_server.py
+++ b/tempest/api/compute/admin/test_create_server.py
@@ -136,3 +136,97 @@
servers_client=self.client)
disks_num_eph = len(linux_client.get_disks().split('\n'))
self.assertEqual(disks_num + 1, disks_num_eph)
+
+
+class ServersWithFlavorSwapResizeTest(base.BaseV2ComputeAdminTest):
+ """Test resizing flavor swap size"""
+
+ @classmethod
+ def setup_credentials(cls):
+ cls.prepare_instance_network()
+ super(ServersWithFlavorSwapResizeTest, cls).setup_credentials()
+
+ @classmethod
+ def setup_clients(cls):
+ super(ServersWithFlavorSwapResizeTest, cls).setup_clients()
+ cls.client = cls.servers_client
+
+ def _create_server_with_swap(self, swap=0):
+ admin_pass = self.image_ssh_password
+ validation_resources = self.get_test_validation_resources(
+ self.os_primary)
+
+ flavor_id = self.create_flavor(
+ ram=1024, vcpus=1, disk=1, swap=swap)['id']
+
+ server = self.create_test_server(
+ validatable=True,
+ validation_resources=validation_resources,
+ wait_until='ACTIVE',
+ adminPass=admin_pass,
+ flavor=flavor_id)
+
+ self.addCleanup(waiters.wait_for_server_termination,
+ self.servers_client, server['id'])
+ self.addCleanup(test_utils.call_and_ignore_notfound_exc,
+ self.servers_client.delete_server,
+ server['id'])
+
+ server = self.client.show_server(server['id'])['server']
+
+ ssh_client = self.get_ssh_client(
+ server, validation_resources, admin_pass)
+ return server, ssh_client
+
+ def _resize_server_with_new_swap(self, server, swap=0):
+ flavor_id = self.create_flavor(
+ ram=1024, vcpus=1, disk=1, swap=swap)['id']
+ self.resize_server(server['id'], flavor_id)
+
+ @decorators.idempotent_id('b2c7bcfc-bb5b-4e22-b517-c7f686b80211')
+ def test_flavor_swap_0_to_1024(self):
+ server, ssh_client = self._create_server_with_swap(swap=0)
+ swap_devs = len(ssh_client.get_swap_devs())
+
+ self.assertEqual(swap_devs, 0)
+
+ self._resize_server_with_new_swap(server, swap=1024)
+ swap_devs = len(ssh_client.get_swap_devs())
+
+ self.assertEqual(swap_devs, 1)
+
+ self.reboot_server(server['id'], 'hard')
+ swap_devs = len(ssh_client.get_swap_devs())
+ self.assertEqual(swap_devs, 1)
+
+ @decorators.idempotent_id('b2c7bcfc-bb5b-4e22-b517-c7f686b80212')
+ def test_flavor_swap_2048_to_1024(self):
+ server, ssh_client = self._create_server_with_swap(swap=2048)
+ swap_devs = len(ssh_client.get_swap_devs())
+
+ self.assertEqual(swap_devs, 1)
+
+ self._resize_server_with_new_swap(server, swap=1024)
+ swap_devs = len(ssh_client.get_swap_devs())
+
+ self.assertEqual(swap_devs, 1)
+
+ self.reboot_server(server['id'], 'hard')
+ swap_devs = len(ssh_client.get_swap_devs())
+ self.assertEqual(swap_devs, 1)
+
+ @decorators.idempotent_id('b2c7bcfc-bb5b-4e22-b517-c7f686b80213')
+ def test_flavor_swap_1024_to_0(self):
+ server, ssh_client = self._create_server_with_swap(swap=1024)
+ swap_devs = len(ssh_client.get_swap_devs())
+
+ self.assertEqual(swap_devs, 1)
+
+ self._resize_server_with_new_swap(server, swap=0)
+ swap_devs = len(ssh_client.get_swap_devs())
+
+ self.assertEqual(swap_devs, 0)
+
+ self.reboot_server(server['id'], 'hard')
+ swap_devs = len(ssh_client.get_swap_devs())
+ self.assertEqual(swap_devs, 0)
diff --git a/tempest/api/compute/base.py b/tempest/api/compute/base.py
index b974b52..bf56818 100644
--- a/tempest/api/compute/base.py
+++ b/tempest/api/compute/base.py
@@ -18,6 +18,7 @@
from oslo_log import log as logging
from tempest.common import compute
+from tempest.common.utils.linux import remote_client
from tempest.common import waiters
from tempest import config
from tempest import exceptions
@@ -732,3 +733,12 @@
for target_host in hosts:
if source_host != target_host:
return target_host
+
+ def get_ssh_client(self, server, validation_resources, admin_pass):
+ return remote_client.RemoteClient(
+ self.get_server_ip(server, validation_resources),
+ self.ssh_user,
+ admin_pass,
+ validation_resources['keypair']['private_key'],
+ server=server,
+ servers_client=self.client)
diff --git a/tempest/common/utils/linux/remote_client.py b/tempest/common/utils/linux/remote_client.py
index 79cc09c..a84f139 100644
--- a/tempest/common/utils/linux/remote_client.py
+++ b/tempest/common/utils/linux/remote_client.py
@@ -244,3 +244,9 @@
"""Wrapper for tcp connectivity checks."""
kwargs.pop('nic', None)
return self.nc_host(host, **kwargs)
+
+ def get_swap_devs(self):
+ cmd = 'blkid'
+ data = self.exec_command(cmd)
+ devs = [dev for dev in data.splitlines() if 'TYPE="swap"' in dev]
+ return devs