Compute servers via addClassResourceCleanup

Cleanup servers in compute tests via addClassResourceCleanup.

Change-Id: I9350c5f1db5d757c44c25b139f5586bf01613dd5
This commit is contained in:
Andrea Frittoli
2017-08-29 18:21:37 +01:00
committed by Andrea Frittoli (andreaf)
parent 991d62df79
commit 0d0a3f3045
3 changed files with 47 additions and 28 deletions

View File

@@ -61,7 +61,7 @@ class ServersAdminNegativeTestJSON(base.BaseV2ComputeAdminTest):
flavor_ref = self.create_flavor(ram=ram, vcpus=vcpus, disk=disk)
self.assertRaises((lib_exc.Forbidden, lib_exc.OverLimit),
self.client.resize_server,
self.servers[0]['id'],
self.s1_id,
flavor_ref['id'])
@decorators.idempotent_id('7368a427-2f26-4ad9-9ba9-911a0ec2b0db')
@@ -83,7 +83,7 @@ class ServersAdminNegativeTestJSON(base.BaseV2ComputeAdminTest):
flavor_ref = self.create_flavor(ram=ram, vcpus=vcpus, disk=disk)
self.assertRaises((lib_exc.Forbidden, lib_exc.OverLimit),
self.client.resize_server,
self.servers[0]['id'],
self.s1_id,
flavor_ref['id'])
@decorators.attr(type=['negative'])

View File

@@ -116,14 +116,12 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest,
cls.ssh_user = CONF.validation.image_ssh_user
cls.image_ssh_user = CONF.validation.image_ssh_user
cls.image_ssh_password = CONF.validation.image_ssh_password
cls.servers = []
cls.security_groups = []
cls.server_groups = []
cls.volumes = []
@classmethod
def resource_cleanup(cls):
cls.clear_servers()
cls.clear_resources('security groups', cls.security_groups,
cls.security_groups_client.delete_security_group)
cls.clear_resources('server groups', cls.server_groups,
@@ -131,25 +129,6 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest,
cls.clear_volumes()
super(BaseV2ComputeTest, cls).resource_cleanup()
@classmethod
def clear_servers(cls):
LOG.debug('Clearing servers: %s', ','.join(
server['id'] for server in cls.servers))
for server in cls.servers:
try:
test_utils.call_and_ignore_notfound_exc(
cls.servers_client.delete_server, server['id'])
except Exception:
LOG.exception('Deleting server %s failed', server['id'])
for server in cls.servers:
try:
waiters.wait_for_server_termination(cls.servers_client,
server['id'])
except Exception:
LOG.exception('Waiting for deletion of server %s failed',
server['id'])
@classmethod
def server_check_teardown(cls):
"""Checks is the shared server clean enough for subsequent test.
@@ -222,7 +201,15 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest,
volume_backed=volume_backed,
**kwargs)
cls.servers.extend(servers)
# For each server schedule wait and delete, so we first delete all
# and then wait for all
for server in servers:
cls.addClassResourceCleanup(waiters.wait_for_server_termination,
cls.servers_client, server['id'])
for server in servers:
cls.addClassResourceCleanup(
test_utils.call_and_ignore_notfound_exc,
cls.servers_client.delete_server, server['id'])
return body

View File

@@ -19,6 +19,7 @@ from tempest.api.compute import base
from tempest.common import waiters
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
CONF = config.CONF
@@ -31,10 +32,6 @@ class ServersTestJSON(base.BaseV2ComputeTest):
super(ServersTestJSON, cls).setup_clients()
cls.client = cls.servers_client
def tearDown(self):
self.clear_servers()
super(ServersTestJSON, self).tearDown()
@decorators.idempotent_id('b92d5ec7-b1dd-44a2-87e4-45e888c46ef0')
@testtools.skipUnless(CONF.compute_feature_enabled.
enable_instance_password,
@@ -43,6 +40,11 @@ class ServersTestJSON(base.BaseV2ComputeTest):
# If an admin password is provided on server creation, the server's
# root password should be set to that password.
server = self.create_test_server(adminPass='testpassword')
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'])
# Verify the password is set correctly in the response
self.assertEqual('testpassword', server['adminPass'])
@@ -57,9 +59,19 @@ class ServersTestJSON(base.BaseV2ComputeTest):
server = self.create_test_server(name=server_name,
wait_until='ACTIVE')
id1 = server['id']
self.addCleanup(waiters.wait_for_server_termination,
self.servers_client, id1)
self.addCleanup(
test_utils.call_and_ignore_notfound_exc,
self.servers_client.delete_server, id1)
server = self.create_test_server(name=server_name,
wait_until='ACTIVE')
id2 = server['id']
self.addCleanup(waiters.wait_for_server_termination,
self.servers_client, id2)
self.addCleanup(
test_utils.call_and_ignore_notfound_exc,
self.servers_client.delete_server, id2)
self.assertNotEqual(id1, id2, "Did not create a new server")
server = self.client.show_server(id1)['server']
name1 = server['name']
@@ -76,6 +88,11 @@ class ServersTestJSON(base.BaseV2ComputeTest):
self.addCleanup(self.keypairs_client.delete_keypair, key_name)
self.keypairs_client.list_keypairs()
server = self.create_test_server(key_name=key_name)
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'])
waiters.wait_for_server_status(self.client, server['id'], 'ACTIVE')
server = self.client.show_server(server['id'])['server']
self.assertEqual(key_name, server['key_name'])
@@ -98,6 +115,11 @@ class ServersTestJSON(base.BaseV2ComputeTest):
def test_update_server_name(self):
# The server name should be changed to the provided value
server = self.create_test_server(wait_until='ACTIVE')
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'])
# Update instance name with non-ASCII characters
prefix_name = u'\u00CD\u00F1st\u00E1\u00F1c\u00E9'
self._update_server_name(server['id'], 'ACTIVE', prefix_name)
@@ -115,6 +137,11 @@ class ServersTestJSON(base.BaseV2ComputeTest):
def test_update_access_server_address(self):
# The server's access addresses should reflect the provided values
server = self.create_test_server(wait_until='ACTIVE')
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'])
# Update the IPv4 and IPv6 access addresses
self.client.update_server(server['id'],
@@ -131,6 +158,11 @@ class ServersTestJSON(base.BaseV2ComputeTest):
def test_create_server_with_ipv6_addr_only(self):
# Create a server without an IPv4 address(only IPv6 address).
server = self.create_test_server(accessIPv6='2001:2001::3')
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'])
waiters.wait_for_server_status(self.client, server['id'], 'ACTIVE')
server = self.client.show_server(server['id'])['server']
self.assertEqual('2001:2001::3', server['accessIPv6'])