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 <shardy@redhat.com>
This commit is contained in:
Steven Hardy
2013-01-23 16:56:09 +00:00
parent d407429f7d
commit 748fdb7d90

View File

@@ -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()