Fix races in SoftwareDeploymentGroupTest

Don't assume that we can get the physical IDs of all of the
SoftwareDeployment resources as soon as the stack becomes
CREATE_IN_PROGRESS. 4dd67bb1aa reads them
again once the stack is COMPLETE; this patch also uses the same physical
resource IDs to verify the update.

Also, make sure all of the resources are IN_PROGRESS before trying to
signal them, because the signal_resources() utility method only signals
resources that are IN_PROGRESS.

Change-Id: I9787a5de5e4272a3ab370f653182aa9283ae01c0
Closes-Bug: #1697794
Closes-Bug: #1626073
Closes-Bug: #1625921
This commit is contained in:
Zane Bitter 2017-06-13 19:38:39 -04:00
parent 724d60949e
commit 41b8e44d1e
1 changed files with 9 additions and 5 deletions

View File

@ -84,8 +84,14 @@ resources:
expected_status='CREATE_IN_PROGRESS')
self._wait_for_resource_status(
stack_identifier, 'deployment', 'CREATE_IN_PROGRESS')
# Wait for all deployment resources to become IN_PROGRESS, since only
# IN_PROGRESS resources get signalled
nested_identifier = self.assert_resource_is_a_stack(
stack_identifier, 'deployment')
self._wait_for_stack_status(nested_identifier, 'CREATE_IN_PROGRESS')
self._wait_for_all_resource_status(nested_identifier,
'CREATE_IN_PROGRESS')
group_resources = self.list_group_resources(
stack_identifier, 'deployment', minimal=False)
@ -96,9 +102,8 @@ resources:
created_group_resources = self.list_group_resources(
stack_identifier, 'deployment', minimal=False)
self.check_input_values(created_group_resources,
'foo', 'foo_input')
self.assertEqual(4, len(created_group_resources))
self.check_input_values(created_group_resources, 'foo', 'foo_input')
self.update_stack(stack_identifier,
template=template,
@ -106,12 +111,11 @@ resources:
expected_status='UPDATE_IN_PROGRESS')
nested_identifier = self.assert_resource_is_a_stack(
stack_identifier, 'deployment')
self.assertEqual(4, len(group_resources))
self._wait_for_stack_status(stack_identifier, 'UPDATE_COMPLETE',
signal_required=True,
resources_to_signal=group_resources)
self.check_input_values(group_resources, 'foo', 'input2')
self.check_input_values(created_group_resources, 'foo', 'input2')
# We explicitly test delete here, vs just via cleanup and check
# the nested stack is gone