From: Steven Hardy Date: Wed, 23 Jan 2013 16:56:09 +0000 (+0000) Subject: heat tests : autoscaling test add missing VerifyAll X-Git-Tag: 2014.1~966^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=748fdb7d9015769113f2b2b458a86cc6d41070a1;p=openstack-build%2Fheat-build.git heat tests : autoscaling test add missing VerifyAll Add logic to verify stubbed calls to loadbalancer reload, also break up the tests a bit into functionally related chunks instead of having two mega-tests Change-Id: I94897b6ec23cae92bc464b4b3ef2a7b634bfdb0c Signed-off-by: Steven Hardy --- diff --git a/heat/tests/test_autoscaling.py b/heat/tests/test_autoscaling.py index 9f3eb39f..2abf89ed 100644 --- a/heat/tests/test_autoscaling.py +++ b/heat/tests/test_autoscaling.py @@ -77,12 +77,18 @@ class AutoScalingTest(unittest.TestCase): resource.state) return resource - def test_scaling_group(self): + def _stub_lb_reload(self, expected_list): + self.m.VerifyAll() + self.m.UnsetStubs() + self.m.StubOutWithMock(loadbalancer.LoadBalancer, 'reload') + loadbalancer.LoadBalancer.reload(expected_list).AndReturn(None) + self.m.ReplayAll() + def test_scaling_group_update(self): t = self.load_template() stack = self.parse_stack(t) - # start with min then delete + self._stub_lb_reload(['WebServerGroup-0']) resource = self.create_scaling_group(t, stack, 'WebServerGroup') self.assertEqual('WebServerGroup', resource.FnGetRefId()) @@ -91,25 +97,50 @@ class AutoScalingTest(unittest.TestCase): resource.handle_update()) resource.delete() + self.m.VerifyAll() + + def test_scaling_group_adjust(self): + t = self.load_template() + stack = self.parse_stack(t) # start with 3 properties = t['Resources']['WebServerGroup']['Properties'] properties['DesiredCapacity'] = '3' + self._stub_lb_reload(['WebServerGroup-0', 'WebServerGroup-1', + 'WebServerGroup-2']) resource = self.create_scaling_group(t, stack, 'WebServerGroup') self.assertEqual('WebServerGroup-0,WebServerGroup-1,WebServerGroup-2', resource.resource_id) # reduce to 1 + self._stub_lb_reload(['WebServerGroup-0']) resource.adjust(-2) self.assertEqual('WebServerGroup-0', resource.resource_id) # raise to 3 + self._stub_lb_reload(['WebServerGroup-0', 'WebServerGroup-1', + 'WebServerGroup-2']) resource.adjust(2) self.assertEqual('WebServerGroup-0,WebServerGroup-1,WebServerGroup-2', resource.resource_id) # set to 2 + self._stub_lb_reload(['WebServerGroup-0', 'WebServerGroup-1']) resource.adjust(2, 'ExactCapacity') + self.assertEqual('WebServerGroup-0,WebServerGroup-1', + resource.resource_id) + self.m.VerifyAll() + + def test_scaling_group_nochange(self): + t = self.load_template() + stack = self.parse_stack(t) + + # Create initial group, 2 instances + properties = t['Resources']['WebServerGroup']['Properties'] + properties['DesiredCapacity'] = '2' + self._stub_lb_reload(['WebServerGroup-0', 'WebServerGroup-1']) + resource = self.create_scaling_group(t, stack, 'WebServerGroup') + stack.resources['WebServerGroup'] = resource self.assertEqual('WebServerGroup-0,WebServerGroup-1', resource.resource_id) @@ -125,40 +156,80 @@ class AutoScalingTest(unittest.TestCase): # no change resource.adjust(0) + self.assertEqual('WebServerGroup-0,WebServerGroup-1', + resource.resource_id) + resource.delete() + self.m.VerifyAll() + + def test_scaling_group_percent(self): + t = self.load_template() + stack = self.parse_stack(t) + + # Create initial group, 2 instances + properties = t['Resources']['WebServerGroup']['Properties'] + properties['DesiredCapacity'] = '2' + self._stub_lb_reload(['WebServerGroup-0', 'WebServerGroup-1']) + resource = self.create_scaling_group(t, stack, 'WebServerGroup') + stack.resources['WebServerGroup'] = resource self.assertEqual('WebServerGroup-0,WebServerGroup-1', resource.resource_id) # reduce by 50% + self._stub_lb_reload(['WebServerGroup-0']) resource.adjust(-50, 'PercentChangeInCapacity') self.assertEqual('WebServerGroup-0', resource.resource_id) # raise by 200% + self._stub_lb_reload(['WebServerGroup-0', 'WebServerGroup-1', + 'WebServerGroup-2']) resource.adjust(200, 'PercentChangeInCapacity') self.assertEqual('WebServerGroup-0,WebServerGroup-1,WebServerGroup-2', resource.resource_id) resource.delete() + self.m.VerifyAll() - def test_scaling_policy(self): + def test_scaling_policy_up(self): t = self.load_template() stack = self.parse_stack(t) - # start with min then delete + # Create initial group + self._stub_lb_reload(['WebServerGroup-0']) resource = self.create_scaling_group(t, stack, 'WebServerGroup') stack.resources['WebServerGroup'] = resource - self.assertEqual('WebServerGroup-0', resource.resource_id) + # Scale up one + self._stub_lb_reload(['WebServerGroup-0', 'WebServerGroup-1']) up_policy = self.create_scaling_policy(t, stack, 'WebServerScaleUpPolicy') up_policy.alarm() self.assertEqual('WebServerGroup-0,WebServerGroup-1', resource.resource_id) + resource.delete() + self.m.VerifyAll() + + def test_scaling_policy_down(self): + t = self.load_template() + stack = self.parse_stack(t) + + # Create initial group, 2 instances + properties = t['Resources']['WebServerGroup']['Properties'] + properties['DesiredCapacity'] = '2' + self._stub_lb_reload(['WebServerGroup-0', 'WebServerGroup-1']) + resource = self.create_scaling_group(t, stack, 'WebServerGroup') + stack.resources['WebServerGroup'] = resource + self.assertEqual('WebServerGroup-0,WebServerGroup-1', + resource.resource_id) + + # Scale down one + self._stub_lb_reload(['WebServerGroup-0']) down_policy = self.create_scaling_policy(t, stack, 'WebServerScaleDownPolicy') down_policy.alarm() self.assertEqual('WebServerGroup-0', resource.resource_id) resource.delete() + self.m.VerifyAll()