Wait for the policy to be done in tests

As observed in the amqp job, we sometimes signal scale policy too fast,
without waiting for the medata to be set. It creates a timeout. We can
check the metadata of the policy before signaling again, to make sure
that we can move forward.

Change-Id: I9857803ef960efbd034f05985ec8fcc7272e2f70
This commit is contained in:
Thomas Herve 2017-04-10 23:44:26 +02:00
parent ffc1412ed5
commit 7109468b2f
4 changed files with 14 additions and 7 deletions

View File

@ -655,10 +655,14 @@ class HeatIntegrationTest(testscenarios.WithScenarios,
return matched
time.sleep(build_interval)
def check_autoscale_complete(self, stack_id, expected_num):
def check_autoscale_complete(self, stack_id, expected_num, parent_stack,
policy):
res_list = self.client.resources.list(stack_id)
all_res_complete = all(res.resource_status in ('UPDATE_COMPLETE',
'CREATE_COMPLETE')
for res in res_list)
all_res = len(res_list) == expected_num
return all_res and all_res_complete
if all_res and all_res_complete:
metadata = self.client.resources.metadata(parent_stack, policy)
return not metadata.get('scaling_in_progress')
return False

View File

@ -119,7 +119,8 @@ outputs:
self.conf.build_interval,
self.check_autoscale_complete,
asg.physical_resource_id,
expected_resources))
expected_resources, stack_id,
'scale_up_policy'))
def test_asg_scale_down_min_size(self):
stack_id = self.stack_create(template=self.template,
@ -140,7 +141,8 @@ outputs:
self.conf.build_interval,
self.check_autoscale_complete,
asg.physical_resource_id,
expected_resources))
expected_resources, stack_id,
'scale_down_policy'))
def test_asg_cooldown(self):
cooldown_tmpl = self.template.replace('cooldown: 0',
@ -162,7 +164,8 @@ outputs:
self.conf.build_interval,
self.check_autoscale_complete,
asg.physical_resource_id,
expected_resources))
expected_resources, stack_id,
'scale_up_policy'))
def test_path_attrs(self):
stack_id = self.stack_create(template=self.template)

View File

@ -104,7 +104,7 @@ class AutoscalingLoadBalancerTest(scenario_base.ScenarioTestsBase):
test.call_until_true(self.conf.build_timeout,
self.conf.build_interval,
self.check_autoscale_complete,
asg.physical_resource_id, 2)
asg.physical_resource_id, 2, sid, 'scale_up')
# Check number of distinctive responses, must now be 2
self.check_num_responses(lb_url, 2)

View File

@ -104,7 +104,7 @@ class AutoscalingLoadBalancerv2Test(scenario_base.ScenarioTestsBase):
test.call_until_true(self.conf.build_timeout,
self.conf.build_interval,
self.check_autoscale_complete,
asg.physical_resource_id, 2)
asg.physical_resource_id, 2, sid, 'scale_up')
# Check number of distinctive responses, must now be 2
self.check_num_responses(lb_url, 2)