Assert DELETE_COMPLETE on all stack delete cleanup

Currently stacks are deleted on integration test cleanup but no
polling is done for DELETE_COMPLETE, so the test will pass even though
the stack may be in a DELETE_FAILED state.

This change uses _stack_delete for all cleanup stack deleting, which
polls for complete.

Change-Id: Ic44b27130596cf3fa8616608a091b683ea131e0b
Closes-Bug: #1486303
This commit is contained in:
Steve Baker
2015-08-19 13:37:08 +12:00
parent 29bb3be3aa
commit 3dbfb0fd92
4 changed files with 8 additions and 21 deletions

View File

@@ -426,7 +426,7 @@ class HeatIntegrationTest(testscenarios.WithScenarios,
tags=tags
)
if expected_status not in ['ROLLBACK_COMPLETE'] and enable_cleanup:
self.addCleanup(self.client.stacks.delete, name)
self.addCleanup(self._stack_delete, name)
stack = self.client.stacks.get(name)
stack_identifier = '%s/%s' % (name, stack.id)
@@ -458,7 +458,7 @@ class HeatIntegrationTest(testscenarios.WithScenarios,
environment=env,
adopt_stack_data=adopt_data,
)
self.addCleanup(self.client.stacks.delete, name)
self.addCleanup(self._stack_delete, name)
stack = self.client.stacks.get(name)
stack_identifier = '%s/%s' % (name, stack.id)
@@ -468,7 +468,7 @@ class HeatIntegrationTest(testscenarios.WithScenarios,
def stack_abandon(self, stack_id):
if (self.conf.skip_test_stack_action_list and
'ABANDON' in self.conf.skip_test_stack_action_list):
self.addCleanup(self.client.stacks.delete, stack_id)
self.addCleanup(self._stack_delete, stack_id)
self.skipTest('Testing Stack abandon disabled in conf, skipping')
info = self.client.stacks.abandon(stack_id=stack_id)
return info
@@ -476,7 +476,7 @@ class HeatIntegrationTest(testscenarios.WithScenarios,
def stack_suspend(self, stack_identifier):
if (self.conf.skip_test_stack_action_list and
'SUSPEND' in self.conf.skip_test_stack_action_list):
self.addCleanup(self.client.stacks.delete, stack_identifier)
self.addCleanup(self._stack_delete, stack_identifier)
self.skipTest('Testing Stack suspend disabled in conf, skipping')
stack_name = stack_identifier.split('/')[0]
self.client.actions.suspend(stack_name)
@@ -488,7 +488,7 @@ class HeatIntegrationTest(testscenarios.WithScenarios,
def stack_resume(self, stack_identifier):
if (self.conf.skip_test_stack_action_list and
'RESUME' in self.conf.skip_test_stack_action_list):
self.addCleanup(self.client.stacks.delete, stack_identifier)
self.addCleanup(self._stack_delete, stack_identifier)
self.skipTest('Testing Stack resume disabled in conf, skipping')
stack_name = stack_identifier.split('/')[0]
self.client.actions.resume(stack_name)

View File

@@ -235,7 +235,7 @@ class AutoscalingGroupBasicTest(AutoscalingGroupTest):
parameters={},
environment=env
)
self.addCleanup(self.client.stacks.delete, stack_name)
self.addCleanup(self._stack_delete, stack_name)
stack = self.client.stacks.get(stack_name)
stack_identifier = '%s/%s' % (stack_name, stack.id)
self._wait_for_stack_status(stack_identifier, 'CREATE_FAILED')

View File

@@ -16,19 +16,7 @@ import keystoneclient
from heat_integrationtests.functional import functional_base
class ConditionalExposureTestBase(functional_base.FunctionalTestsBase):
def setUp(self):
super(ConditionalExposureTestBase, self).setUp()
def _delete(self, stack_name):
stacks = self.client.stacks.list()
for s in stacks:
if s.stack_name == stack_name:
self._stack_delete(s.identifier)
break
class ServiceBasedExposureTest(ConditionalExposureTestBase):
class ServiceBasedExposureTest(functional_base.FunctionalTestsBase):
# NOTE(pas-ha) if we ever decide to install Sahara on Heat
# functional gate, this must be changed to other not-installed
# but in principle supported service
@@ -72,7 +60,6 @@ resources:
def test_unavailable_resources_not_created(self):
stack_name = self._stack_rand_name()
self.addCleanup(self._delete, stack_name)
ex = self.assertRaises(exc.HTTPBadRequest,
self.client.stacks.create,
stack_name=stack_name,

View File

@@ -225,7 +225,7 @@ class InstanceGroupBasicTest(InstanceGroupTest):
parameters={},
environment=env
)
self.addCleanup(self.client.stacks.delete, stack_name)
self.addCleanup(self._stack_delete, stack_name)
stack = self.client.stacks.get(stack_name)
stack_identifier = '%s/%s' % (stack_name, stack.id)
self._wait_for_stack_status(stack_identifier, 'CREATE_FAILED')