]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
heat tests : refactor stackid check into utils.Stack
authorSteven Hardy <shardy@redhat.com>
Tue, 23 Oct 2012 13:16:39 +0000 (14:16 +0100)
committerSteven Hardy <shardy@redhat.com>
Tue, 23 Oct 2012 21:04:35 +0000 (22:04 +0100)
Rework utils.Stack._check_stackid so it can be used in the
tests to verify stackid format, avoiding maintaining multiple
copies of a stackid regex

Change-Id: If7fbd7b35626c377b42a43ffa03ee8067540963b
Signed-off-by: Steven Hardy <shardy@redhat.com>
heat/tests/functional/test_CFN_API_Actions.py
heat/tests/functional/test_CFN_API_Actions_Boto.py
heat/tests/functional/util.py

index d54e86ddc88824a42761bb12fca81d738fd36b59..a0edc8775c8a2a55d734975553cd80e678acdeb8 100644 (file)
@@ -72,9 +72,6 @@ class CfnApiFunctionalTest(unittest.TestCase):
             cls.logical_resource_status = "CREATE_COMPLETE"
 
             # Save some compiled regexes and strings for response validation
-            cls.stack_id_re = re.compile("^arn:openstack:heat::[0-9a-z]{32}:" +
-                                         "stacks/" + cls.stack.stackname)
-
             cls.time_re = re.compile(
                 "[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$")
             cls.description_re = re.compile(
@@ -117,7 +114,7 @@ class CfnApiFunctionalTest(unittest.TestCase):
         prefix = '/ListStacksResponse/ListStacksResult/StackSummaries/member'
 
         stack_id = self.stack.response_xml_item(response, prefix, "StackId")
-        self.assertTrue(self.stack_id_re.match(stack_id) != None)
+        self.stack.check_stackid(stack_id)
 
         update_time = self.stack.response_xml_item(response, prefix,
                                                    "LastUpdatedTime")
@@ -152,7 +149,7 @@ class CfnApiFunctionalTest(unittest.TestCase):
         prefix = '/DescribeStacksResponse/DescribeStacksResult/Stacks/member'
 
         stack_id = self.stack.response_xml_item(response, prefix, "StackId")
-        self.assertTrue(self.stack_id_re.match(stack_id) != None)
+        self.stack.check_stackid(stack_id)
 
         update_time = self.stack.response_xml_item(response, prefix,
                                                    "LastUpdatedTime")
@@ -230,7 +227,7 @@ class CfnApiFunctionalTest(unittest.TestCase):
                 self.logical_resource_status + '"]'
 
         stack_id = self.stack.response_xml_item(response, prefix, "StackId")
-        self.assertTrue(self.stack_id_re.match(stack_id) != None)
+        self.stack.check_stackid(stack_id)
 
         event_id = self.stack.response_xml_item(response, prefix, "EventId")
         self.assertTrue(re.match("[0-9]*$", event_id) != None)
@@ -302,7 +299,7 @@ class CfnApiFunctionalTest(unittest.TestCase):
                + '/StackResourceDetail'
 
         stack_id = self.stack.response_xml_item(response, prefix, "StackId")
-        self.assertTrue(self.stack_id_re.match(stack_id) != None)
+        self.stack.check_stackid(stack_id)
 
         resource_status = self.stack.response_xml_item(response, prefix,
                                                         "ResourceStatus")
@@ -347,7 +344,7 @@ class CfnApiFunctionalTest(unittest.TestCase):
                 'DescribeStackResourcesResult/StackResources/member'
 
         stack_id = self.stack.response_xml_item(response, prefix, "StackId")
-        self.assertTrue(self.stack_id_re.match(stack_id) != None)
+        self.stack.check_stackid(stack_id)
 
         resource_status = self.stack.response_xml_item(response, prefix,
                                                         "ResourceStatus")
index a21b326149523bc1d361fc29ca1285b7b8cbeb6c..35cd544d7398cbf1f8e8fb8e0904d3ccf29251b5 100644 (file)
@@ -76,8 +76,6 @@ class CfnApiBotoFunctionalTest(unittest.TestCase):
             cls.logical_resource_status = "CREATE_COMPLETE"
 
             # Save some compiled regexes and strings for response validation
-            cls.stack_id_re = re.compile("^arn:openstack:heat::[0-9a-z]{32}:" +
-                                         "stacks/" + cls.stack.stackname)
             cls.time_re = re.compile(
                 "[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$")
             cls.description_re = re.compile(
@@ -127,7 +125,7 @@ class CfnApiBotoFunctionalTest(unittest.TestCase):
         # Note the boto StackSummary object does not contain every item
         # output by our API (ie defined in the AWS docs), we can only
         # test what boto encapsulates in the StackSummary class
-        self.assertTrue(self.stack_id_re.match(summary[0].stack_id) != None)
+        self.stack.check_stackid(summary[0].stack_id)
 
         self.assertEqual(type(summary[0].creation_time), datetime.datetime)
 
@@ -152,7 +150,7 @@ class CfnApiBotoFunctionalTest(unittest.TestCase):
 
         self.assertEqual(type(stacks[0].creation_time), datetime.datetime)
 
-        self.assertTrue(self.stack_id_re.match(stacks[0].stack_id) != None)
+        self.stack.check_stackid(stacks[0].stack_id)
 
         self.assertTrue(self.description_re.match(stacks[0].description)
                         != None)
@@ -207,7 +205,7 @@ class CfnApiBotoFunctionalTest(unittest.TestCase):
 
         self.assertEqual(len(events), 1)
 
-        self.assertTrue(self.stack_id_re.match(events[0].stack_id) != None)
+        self.stack.check_stackid(events[0].stack_id)
 
         self.assertTrue(re.match("[0-9]*$", events[0].event_id) != None)
 
@@ -268,7 +266,7 @@ class CfnApiBotoFunctionalTest(unittest.TestCase):
         res = desc_result['StackResourceDetail']
         self.assertTrue(res != None)
 
-        self.assertTrue(self.stack_id_re.match(res['StackId']) != None)
+        self.stack.check_stackid(res['StackId'])
 
         self.assertEqual(res['ResourceStatus'], self.logical_resource_status)
 
@@ -301,7 +299,7 @@ class CfnApiBotoFunctionalTest(unittest.TestCase):
         res = response[0]
         self.assertTrue(res != None)
 
-        self.assertTrue(self.stack_id_re.match(res.stack_id) != None)
+        self.stack.check_stackid(res.stack_id)
 
         self.assertEqual(res.resource_status, self.logical_resource_status)
 
index 736d85702d2c6dff5c4a1b90ead8e5534ae429fc..cb6390b9f991dfe2e9272b5ea44b7be843795ef6 100644 (file)
@@ -26,6 +26,7 @@ import nose
 import errno
 import tempfile
 import stat
+import re
 from pkg_resources import resource_string
 from lxml import etree
 
@@ -322,6 +323,9 @@ class Stack(object):
         self.distribution = distribution
         self.stack_paramstr = stack_paramstr
 
+        self.stack_id_re = re.compile("^arn:openstack:heat::[0-9a-z]{32}:" +
+                                      "stacks/" + self.stackname + "/[0-9]*$")
+
         self.creds = dict(username=os.environ['OS_USERNAME'],
                           password=os.environ['OS_PASSWORD'],
                           tenant=os.environ['OS_TENANT_NAME'],
@@ -404,7 +408,9 @@ class Stack(object):
         create_list = root.xpath('/CreateStackResponse/CreateStackResult')
         self.testcase.assertTrue(create_list)
         self.testcase.assertEqual(len(create_list), 1)
-        self._check_stackid(create_list)
+        stack_id = create_list[0].findtext('StackId')
+        self.testcase.assertTrue(stack_id != None)
+        self.check_stackid(stack_id)
 
     def _check_update_result(self, result):
         # Check result looks OK
@@ -412,14 +418,13 @@ class Stack(object):
         update_list = root.xpath('/UpdateStackResponse/UpdateStackResult')
         self.testcase.assertTrue(update_list)
         self.testcase.assertEqual(len(update_list), 1)
-        self._check_stackid(update_list)
-
-    def _check_stackid(self, xpq_list):
-        # Extract StackId from the result, and check the StackName part
-        stackid = xpq_list[0].findtext('StackId')
-        idname = stackid.split('/')[1]
-        print "Checking %s contains name %s" % (stackid, self.stackname)
-        self.testcase.assertEqual(idname, self.stackname)
+        stack_id = update_list[0].findtext('StackId')
+        self.testcase.assertTrue(stack_id != None)
+        self.check_stackid(stack_id)
+
+    def check_stackid(self, stack_id):
+        print "Checking %s matches expected format" % (stack_id)
+        self.testcase.assertTrue(self.stack_id_re.match(stack_id) != None)
 
     def _create_heat_client(self):
         return heat_client.get_client('0.0.0.0', 8000,