]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
tests: Clean up after a failed functional test
authorZane Bitter <zbitter@redhat.com>
Wed, 12 Sep 2012 14:12:45 +0000 (16:12 +0200)
committerZane Bitter <zbitter@redhat.com>
Thu, 13 Sep 2012 19:48:05 +0000 (21:48 +0200)
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>
12 files changed:
heat/tests/functional/test_WordPress_2_Instances_With_EBS.py
heat/tests/functional/test_WordPress_2_Instances_With_EBS_EIP.py
heat/tests/functional/test_WordPress_2_Intances.py
heat/tests/functional/test_WordPress_Composed_Instances.py
heat/tests/functional/test_WordPress_Single_Instance.py
heat/tests/functional/test_WordPress_Single_Instance_Boto.py
heat/tests/functional/test_WordPress_Single_Instance_With_EBS.py
heat/tests/functional/test_WordPress_Single_Instance_With_EBS_EIP.py
heat/tests/functional/test_WordPress_Single_Instance_With_EIP.py
heat/tests/functional/test_WordPress_Single_Instance_With_HA.py
heat/tests/functional/test_WordPress_With_LB.py
heat/tests/functional/util.py

index e8083199b84b818b5116ceb6b2ec09d7e732e305..2af7b11509ced949f19ef5d56665c5c5d37c95b7 100644 (file)
@@ -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()
index 4fb1be3cf3e582b5457b3acaf6d4e70734c7e4c7..0da6adccd3c883959d901eead8ab2cbe5d1071c4 100644 (file)
@@ -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
index 339058b03f8f3026f4de4d48d56f185846a8cf9a..d277c2e6572dbcbc2168a155f9fa6c938a021080 100644 (file)
@@ -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()
index d6fb391b1078413ddae01d5ca2d35b43ab73d981..5d6155d4ba8549f6e9ac096308bfdabac771911c 100644 (file)
@@ -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()
index 9fd8a35750fd6b3c8fec1f567c5d6c5f7cf67670..d938427283fc2c96c1b6dc5a7a3c1e4385f3263f 100644 (file)
@@ -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()
index 9fda3fad75a9dd57bcde61a6a496251e5c1846c2..bd734f383b75353f4120e9aec9ef1e4fc88f4a2e 100644 (file)
@@ -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
index 0d8a8c483b4b4e4b2615e1be101fb0464612b7fc..79d67921dcd9a91d50919c865f5903968c59d57d 100644 (file)
@@ -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()
index 51cd8b6635e5ec781f70c489c13ea9786e44523c..3490dec3862706acd140e2b14ee05a2d3e0737c4 100644 (file)
@@ -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()
index 6e189a2e3317b0ea6e33a2a56512b83bf0811d3d..212a4da329cc90eded163584483e07077454bfce 100644 (file)
@@ -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()
index cf2667451d7dbff15f24ee2b8937bbcbd70d4ff2..408c52d8315c1ecb6ea6071af90af98928955af8 100644 (file)
@@ -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()
index 7c4af4a4529a9a5ad05c5a9d52f1dc03528c5a86..44a042f84237722b9f5c26717ee437547d1e8e73 100644 (file)
@@ -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()
index a5944235c8865df55e2d4a3eadec013d348a454e..e44bba10424c2a785501b130513dcb790c083f9e 100644 (file)
@@ -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)