]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
heat tests : autoscaling test add missing VerifyAll
authorSteven Hardy <shardy@redhat.com>
Wed, 23 Jan 2013 16:56:09 +0000 (16:56 +0000)
committerSteven Hardy <shardy@redhat.com>
Thu, 24 Jan 2013 19:51:14 +0000 (19:51 +0000)
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>
heat/tests/test_autoscaling.py

index 9f3eb39fbaae7d6cdf7ce2987174da7e5e56a010..2abf89edcad38d70e78de688ae6d2571403d6f37 100644 (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()