From 41b8e44d1e89440dca994bb927ecb35784d94e34 Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Tue, 13 Jun 2017 19:38:39 -0400 Subject: [PATCH] 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. 4dd67bb1aa2df4f5270f79600ac1f888b0bd9a5f 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 --- .../functional/test_software_deployment_group.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/heat_integrationtests/functional/test_software_deployment_group.py b/heat_integrationtests/functional/test_software_deployment_group.py index 06f0ce1746..22143dc4e7 100644 --- a/heat_integrationtests/functional/test_software_deployment_group.py +++ b/heat_integrationtests/functional/test_software_deployment_group.py @@ -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