From 74280022e8dbe306c59a49f73b78ab40688fe6a6 Mon Sep 17 00:00:00 2001 From: Balazs Gibizer Date: Mon, 20 Sep 2021 20:53:02 +0200 Subject: Reproduce bug story/2009237 Add a functional test that reproduces the bug that nested resource group timeout value is increasing rapidly with every nesting level. Story: 2009237 Task: 43373 Change-Id: I8e85434a5fb9cc6d0ef3240c8ae6085f5124174b (cherry picked from commit 863d645d7ef223a2534423e623fbc1c420c8557f) --- .../functional/test_resource_group.py | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/heat_integrationtests/functional/test_resource_group.py b/heat_integrationtests/functional/test_resource_group.py index ebce70df7..999d41122 100644 --- a/heat_integrationtests/functional/test_resource_group.py +++ b/heat_integrationtests/functional/test_resource_group.py @@ -129,6 +129,68 @@ resources: outputs.append(validate_output(stack, 'random2', 30)) self.assertEqual(outputs, self._stack_output(stack, 'all_values')) + def test_create_nested_groups_with_timeout(self): + parent_template = ''' +heat_template_version: rocky +resources: + parent_group: + type: OS::Heat::ResourceGroup + update_policy: + batch_create: { max_batch_size: 1, pause_time: 1 } + properties: + count: 2 + resource_def: + type: child.yaml +''' + child_template = ''' +heat_template_version: rocky +resources: + child_group: + type: OS::Heat::ResourceGroup + update_policy: + batch_create: { max_batch_size: 1, pause_time: 1 } + properties: + count: 2 + resource_def: + type: value.yaml +''' + value_template = ''' +heat_template_version: rocky +resources: + value: + type: OS::Heat::Value + properties: + type: string + value: 'test' +''' + files = { + 'child.yaml': child_template, + 'value.yaml': value_template, + } + stack_identifier = self.stack_create( + template=parent_template, + files=files, + timeout=10, # in minutes + ) + + resources = self.client.resources.list( + stack_identifier, nested_depth=2, with_detail=True) + timeouts = set() + for res in resources: + if res.resource_type == "OS::Heat::ResourceGroup": + nested_stack = self.client.stacks.get(res.physical_resource_id) + timeouts.add(nested_stack.timeout_mins) + + # FIXME(gibi): This is bug story/2009237 as the timeout calculation of + # nested resource groups are broken. It is using seconds for the + # calculation but then pass that to functions expecting timeouts in + # minutes leading to increasing timeout value with each nesting level. + self.assertEqual({35939, 599}, timeouts) + # After the bug is fixed we expect timeouts less than the overall + # timeout requested for the whole stack. + + # self.assertEqual({10}, timeouts) + def test_update_increase_decrease_count(self): # create stack with resource group count 2 env = {'resource_registry': -- cgit v1.2.1