heat tests : refactor stackid check into utils.Stack
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>
This commit is contained in:
parent
dd6a378152
commit
fd66a93cc7
@ -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")
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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)
|
||||
stack_id = update_list[0].findtext('StackId')
|
||||
self.testcase.assertTrue(stack_id != None)
|
||||
self.check_stackid(stack_id)
|
||||
|
||||
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)
|
||||
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,
|
||||
|
Loading…
Reference in New Issue
Block a user