tests: Clean up after a failed functional test
Ensure that whenever a stack is created, we delete it after the test by putting the cleanup() call into the tearDown() method. For this to work, we must also move the actual creation into the test itself, since an exception during setUp() will mean that tearDown is not called. Change-Id: I481e691f07c1af9e931258d7ba4453b2037c62ad Signed-off-by: Zane Bitter <zbitter@redhat.com>
This commit is contained in:
@@ -30,16 +30,23 @@ class WordPress2InstancesWithEBS(unittest.TestCase):
|
||||
template = 'WordPress_2_Instances_With_EBS.template'
|
||||
|
||||
self.stack = util.Stack(template, 'F17', 'x86_64', 'cfntools')
|
||||
|
||||
self.WikiDatabase = util.Instance('WikiDatabase')
|
||||
self.WebServer = util.Instance('WebServer')
|
||||
|
||||
def tearDown(self):
|
||||
self.stack.cleanup()
|
||||
|
||||
def test_instance(self):
|
||||
self.stack.create()
|
||||
|
||||
self.WikiDatabase.wait_for_boot()
|
||||
self.WikiDatabase.check_cfntools()
|
||||
self.WikiDatabase.wait_for_provisioning()
|
||||
|
||||
self.WebServer = util.Instance('WebServer')
|
||||
self.WebServer.wait_for_boot()
|
||||
self.WebServer.check_cfntools()
|
||||
self.WebServer.wait_for_provisioning()
|
||||
|
||||
def test_instance(self):
|
||||
# ensure wordpress was installed
|
||||
self.assertTrue(self.WebServer.file_present
|
||||
('/etc/wordpress/wp-config.php'))
|
||||
@@ -62,5 +69,3 @@ class WordPress2InstancesWithEBS(unittest.TestCase):
|
||||
self.assertEqual(devname, '/dev/vdc1')
|
||||
mountpoint = result.split()[1]
|
||||
self.assertEqual(mountpoint, '/var/lib/mysql')
|
||||
|
||||
self.stack.cleanup()
|
||||
|
||||
@@ -34,16 +34,25 @@ class WordPress2EBSEIPFunctionalTest(unittest.TestCase):
|
||||
stack_paramstr)
|
||||
|
||||
self.webserver = util.Instance('WebServer')
|
||||
|
||||
self.database = util.Instance('WikiDatabase')
|
||||
|
||||
def tearDown(self):
|
||||
self.stack.cleanup()
|
||||
|
||||
def test_instance(self):
|
||||
self.stack.create()
|
||||
|
||||
self.webserver.wait_for_boot()
|
||||
self.webserver.check_cfntools()
|
||||
self.webserver.wait_for_provisioning()
|
||||
self.webserver.check_user_data(template)
|
||||
|
||||
self.database = util.Instance('WikiDatabase')
|
||||
self.database.wait_for_boot()
|
||||
self.database.check_cfntools()
|
||||
self.database.wait_for_provisioning()
|
||||
self.database.check_user_data(template)
|
||||
|
||||
def test_instance(self):
|
||||
# Check wordpress installation
|
||||
wp_config_file = '/etc/wordpress/wp-config.php'
|
||||
self.assertTrue(self.webserver.file_present(wp_config_file),
|
||||
@@ -78,7 +87,3 @@ class WordPress2EBSEIPFunctionalTest(unittest.TestCase):
|
||||
ver = verify.VerifyStack()
|
||||
self.assertTrue(ver.verify_wordpress(stack_url),
|
||||
'Wordpress is not accessible at: %s' % stack_url)
|
||||
|
||||
def tearDown(self):
|
||||
self.stack.cleanup()
|
||||
pass
|
||||
|
||||
@@ -36,16 +36,23 @@ class WordPress2Instances(unittest.TestCase):
|
||||
|
||||
self.stack = util.Stack(template, 'F17', 'x86_64', 'cfntools',
|
||||
stack_paramstr)
|
||||
|
||||
self.DatabaseServer = util.Instance('DatabaseServer')
|
||||
self.WebServer = util.Instance('WebServer')
|
||||
|
||||
def tearDown(self):
|
||||
self.stack.cleanup()
|
||||
|
||||
def test_instance(self):
|
||||
self.stack.create()
|
||||
|
||||
self.DatabaseServer.wait_for_boot()
|
||||
self.DatabaseServer.check_cfntools()
|
||||
self.DatabaseServer.wait_for_provisioning()
|
||||
|
||||
self.WebServer = util.Instance('WebServer')
|
||||
self.WebServer.wait_for_boot()
|
||||
self.WebServer.check_cfntools()
|
||||
self.WebServer.wait_for_provisioning()
|
||||
|
||||
def test_instance(self):
|
||||
# ensure wordpress was installed
|
||||
self.assertTrue(self.WebServer.file_present
|
||||
('/etc/wordpress/wp-config.php'))
|
||||
@@ -57,5 +64,3 @@ class WordPress2Instances(unittest.TestCase):
|
||||
print "Got stack output WebsiteURL=%s, verifying" % stack_url
|
||||
ver = verify.VerifyStack()
|
||||
self.assertTrue(ver.verify_wordpress(stack_url))
|
||||
|
||||
self.stack.cleanup()
|
||||
|
||||
@@ -34,14 +34,24 @@ class WordPressComposedInstancesFunctionalTest(unittest.TestCase):
|
||||
stack_paramstr)
|
||||
|
||||
self.WebServer = util.Instance('WebServer')
|
||||
|
||||
self.MySqlDatabaseServer = util.Instance('MySqlDatabaseServer')
|
||||
|
||||
def tearDown(self):
|
||||
self.stack.cleanup()
|
||||
|
||||
def test_instance(self):
|
||||
self.stack.create()
|
||||
|
||||
self.WebServer.wait_for_boot()
|
||||
self.MySqlDatabaseServer.wait_for_boot()
|
||||
|
||||
self.WebServer.check_cfntools()
|
||||
self.WebServer.wait_for_provisioning()
|
||||
|
||||
self.MySqlDatabaseServer = util.Instance('MySqlDatabaseServer')
|
||||
self.MySqlDatabaseServer.check_cfntools()
|
||||
self.MySqlDatabaseServer.wait_for_provisioning()
|
||||
|
||||
def test_instance(self):
|
||||
self.assertTrue(self.WebServer.file_present
|
||||
('/etc/wordpress/wp-config.php'))
|
||||
print 'Wordpress installation detected.'
|
||||
@@ -52,5 +62,3 @@ class WordPressComposedInstancesFunctionalTest(unittest.TestCase):
|
||||
print "Verifying stack output from WebsiteUrl=(%s)." % stack_url
|
||||
ver = verify.VerifyStack()
|
||||
self.assertTrue(ver.verify_wordpress(stack_url))
|
||||
|
||||
self.stack.cleanup()
|
||||
|
||||
@@ -33,10 +33,16 @@ class WordPressFunctionalTest(unittest.TestCase):
|
||||
self.stack = util.Stack(template, 'F17', 'x86_64', 'cfntools',
|
||||
stack_paramstr)
|
||||
self.WikiDatabase = util.Instance('WikiDatabase')
|
||||
|
||||
def tearDown(self):
|
||||
self.stack.cleanup()
|
||||
|
||||
def test_instance(self):
|
||||
self.stack.create()
|
||||
self.WikiDatabase.wait_for_boot()
|
||||
self.WikiDatabase.check_cfntools()
|
||||
self.WikiDatabase.wait_for_provisioning()
|
||||
|
||||
def test_instance(self):
|
||||
# ensure wordpress was installed by checking for expected
|
||||
# configuration file over ssh
|
||||
self.assertTrue(self.WikiDatabase.file_present
|
||||
@@ -49,5 +55,3 @@ class WordPressFunctionalTest(unittest.TestCase):
|
||||
print "Got stack output WebsiteURL=%s, verifying" % stack_url
|
||||
ver = verify.VerifyStack()
|
||||
self.assertTrue(ver.verify_wordpress(stack_url))
|
||||
|
||||
self.stack.cleanup()
|
||||
|
||||
@@ -33,10 +33,17 @@ class WordPressBotoFunctionalTest(unittest.TestCase):
|
||||
self.stack = util.StackBoto(template, 'F17', 'x86_64', 'cfntools',
|
||||
stack_paramstr)
|
||||
self.WikiDatabase = util.Instance('WikiDatabase')
|
||||
|
||||
def tearDown(self):
|
||||
self.stack.cleanup()
|
||||
|
||||
def test_instance(self):
|
||||
self.stack.create()
|
||||
|
||||
self.WikiDatabase.wait_for_boot()
|
||||
self.WikiDatabase.check_cfntools()
|
||||
self.WikiDatabase.wait_for_provisioning()
|
||||
|
||||
def test_instance(self):
|
||||
# ensure wordpress was installed by checking for expected
|
||||
# configuration file over ssh
|
||||
self.assertTrue(self.WikiDatabase.file_present
|
||||
|
||||
@@ -37,10 +37,16 @@ class WordPressSingleEBSFunctionalTest(unittest.TestCase):
|
||||
self.stack = util.Stack(template, 'F17', 'x86_64', 'cfntools',
|
||||
stack_paramstr)
|
||||
self.WikiDatabase = util.Instance('WikiDatabase')
|
||||
|
||||
def tearDown(self):
|
||||
self.stack.cleanup()
|
||||
|
||||
def test_instance(self):
|
||||
self.stack.create()
|
||||
self.WikiDatabase.wait_for_boot()
|
||||
self.WikiDatabase.check_cfntools()
|
||||
self.WikiDatabase.wait_for_provisioning()
|
||||
|
||||
def test_instance(self):
|
||||
# ensure wordpress was installed
|
||||
self.assertTrue(self.WikiDatabase.file_present
|
||||
('/etc/wordpress/wp-config.php'))
|
||||
@@ -63,5 +69,3 @@ class WordPressSingleEBSFunctionalTest(unittest.TestCase):
|
||||
self.assertEqual(devname, '/dev/vdc1')
|
||||
mountpoint = result.split()[1]
|
||||
self.assertEqual(mountpoint, '/var/lib/mysql')
|
||||
|
||||
self.stack.cleanup()
|
||||
|
||||
@@ -36,10 +36,16 @@ class WordPressEBSEIPFunctionalTest(unittest.TestCase):
|
||||
self.stack = util.Stack(template, 'F17', 'x86_64', 'cfntools',
|
||||
stack_paramstr)
|
||||
self.WikiDatabase = util.Instance('WikiDatabase')
|
||||
|
||||
def tearDown(self):
|
||||
self.stack.cleanup()
|
||||
|
||||
def test_instance(self):
|
||||
self.stack.create()
|
||||
self.WikiDatabase.wait_for_boot()
|
||||
self.WikiDatabase.check_cfntools()
|
||||
self.WikiDatabase.wait_for_provisioning()
|
||||
|
||||
def test_instance(self):
|
||||
# ensure wordpress was installed
|
||||
self.assertTrue(self.WikiDatabase.file_present
|
||||
('/etc/wordpress/wp-config.php'))
|
||||
@@ -86,5 +92,3 @@ class WordPressEBSEIPFunctionalTest(unittest.TestCase):
|
||||
self.assertEqual(devname, '/dev/vdc1')
|
||||
mountpoint = result.split()[1]
|
||||
self.assertEqual(mountpoint, '/var/lib/mysql')
|
||||
|
||||
self.stack.cleanup()
|
||||
|
||||
@@ -36,10 +36,16 @@ class WordPressEIPFunctionalTest(unittest.TestCase):
|
||||
self.stack = util.Stack(template, 'F17', 'x86_64', 'cfntools',
|
||||
stack_paramstr)
|
||||
self.WikiDatabase = util.Instance('WikiDatabase')
|
||||
|
||||
def tearDown(self):
|
||||
self.stack.cleanup()
|
||||
|
||||
def test_instance(self):
|
||||
self.stack.create()
|
||||
self.WikiDatabase.wait_for_boot()
|
||||
self.WikiDatabase.check_cfntools()
|
||||
self.WikiDatabase.wait_for_provisioning()
|
||||
|
||||
def test_instance(self):
|
||||
# ensure wordpress was installed
|
||||
self.assertTrue(self.WikiDatabase.file_present
|
||||
('/etc/wordpress/wp-config.php'))
|
||||
@@ -75,5 +81,3 @@ class WordPressEIPFunctionalTest(unittest.TestCase):
|
||||
print "Got stack output InstanceIPAddress=%s, verifying url %s" %\
|
||||
(stack_eip, eip_url)
|
||||
self.assertTrue(ver.verify_wordpress(eip_url))
|
||||
|
||||
self.stack.cleanup()
|
||||
|
||||
@@ -33,8 +33,9 @@ class HaFunctionalTest(unittest.TestCase):
|
||||
self.stack = util.Stack(template, 'F17', 'x86_64', 'cfntools',
|
||||
stack_paramstr)
|
||||
self.WikiDatabase = util.Instance('WikiDatabase')
|
||||
self.WikiDatabase.check_cfntools()
|
||||
self.WikiDatabase.wait_for_provisioning()
|
||||
|
||||
def tearDown(self):
|
||||
self.stack.cleanup()
|
||||
|
||||
def service_is_running(self, name):
|
||||
stdin, stdout, sterr = \
|
||||
@@ -48,6 +49,10 @@ class HaFunctionalTest(unittest.TestCase):
|
||||
return False
|
||||
|
||||
def test_instance(self):
|
||||
self.stack.create()
|
||||
self.WikiDatabase.wait_for_boot()
|
||||
self.WikiDatabase.check_cfntools()
|
||||
self.WikiDatabase.wait_for_provisioning()
|
||||
|
||||
# ensure wordpress was installed
|
||||
self.assertTrue(self.WikiDatabase.file_present
|
||||
@@ -67,5 +72,3 @@ class HaFunctionalTest(unittest.TestCase):
|
||||
tries += 1
|
||||
self.assertTrue(tries < 8)
|
||||
time.sleep(10)
|
||||
|
||||
self.stack.cleanup()
|
||||
|
||||
@@ -38,6 +38,16 @@ class WordPressWithLBFunctionalTest(unittest.TestCase):
|
||||
self.MySqlDatabaseServer = util.Instance(
|
||||
'DatabaseServer.MySqlDatabaseServer')
|
||||
|
||||
def tearDown(self):
|
||||
self.stack.cleanup()
|
||||
|
||||
def test_instance(self):
|
||||
self.stack.create()
|
||||
|
||||
self.WikiServerOne.wait_for_boot()
|
||||
self.LBInstance.wait_for_boot()
|
||||
self.MySqlDatabaseServer.wait_for_boot()
|
||||
|
||||
self.WikiServerOne.check_cfntools()
|
||||
self.LBInstance.check_cfntools()
|
||||
self.MySqlDatabaseServer.check_cfntools()
|
||||
@@ -46,7 +56,6 @@ class WordPressWithLBFunctionalTest(unittest.TestCase):
|
||||
self.LBInstance.wait_for_provisioning()
|
||||
self.MySqlDatabaseServer.wait_for_provisioning()
|
||||
|
||||
def test_instance(self):
|
||||
self.assertTrue(self.WikiServerOne.file_present
|
||||
('/etc/wordpress/wp-config.php'))
|
||||
print 'Wordpress installation detected.'
|
||||
@@ -57,5 +66,3 @@ class WordPressWithLBFunctionalTest(unittest.TestCase):
|
||||
print "Verifying stack output from WebsiteUrl=(%s)." % stack_url
|
||||
ver = verify.VerifyStack()
|
||||
self.assertTrue(ver.verify_wordpress(stack_url))
|
||||
|
||||
self.stack.cleanup()
|
||||
|
||||
@@ -76,6 +76,8 @@ class Instance(object):
|
||||
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
|
||||
self.ip = None
|
||||
|
||||
def wait_for_boot(self):
|
||||
tries = 0
|
||||
while self.ip is None:
|
||||
servers = self.novaclient.servers.list()
|
||||
@@ -286,26 +288,31 @@ class Stack(object):
|
||||
def __init__(self, template_file, distribution, arch, jeos_type,
|
||||
stack_paramstr):
|
||||
|
||||
self.template_file = template_file
|
||||
self.distribution = distribution
|
||||
self.stack_paramstr = stack_paramstr
|
||||
self.prepare_jeos(distribution, arch, jeos_type)
|
||||
|
||||
self.novaclient = nova_client.Client(self.creds['username'],
|
||||
self.creds['password'], self.creds['tenant'],
|
||||
self.creds['auth_url'], service_type='compute')
|
||||
|
||||
keyname = self.novaclient.keypairs.list().pop().name
|
||||
|
||||
self.heatclient = self._create_heat_client()
|
||||
|
||||
def create(self):
|
||||
keyname = self.novaclient.keypairs.list().pop().name
|
||||
|
||||
assert self.heatclient
|
||||
|
||||
full_paramstr = stack_paramstr + ';' + ';'.join(['KeyName=' + keyname,
|
||||
'LinuxDistribution=' + distribution])
|
||||
full_paramstr = ';'.join([self.stack_paramstr,
|
||||
'KeyName=' + keyname,
|
||||
'LinuxDistribution=' + self.distribution])
|
||||
template_params = optparse.Values({'parameters': full_paramstr})
|
||||
|
||||
# Format parameters and create the stack
|
||||
parameters = {}
|
||||
parameters['StackName'] = self.stackname
|
||||
template_path = self.basepath + '/templates/' + template_file
|
||||
template_path = self.basepath + '/templates/' + self.template_file
|
||||
parameters['TemplateBody'] = open(template_path).read()
|
||||
parameters.update(self.heatclient.format_parameters(template_params))
|
||||
result = self.heatclient.create_stack(**parameters)
|
||||
|
||||
Reference in New Issue
Block a user