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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user