From aa8375acf44f730df5de1df4202ada2c7a7be4f2 Mon Sep 17 00:00:00 2001 From: Alexandr Nagovitsyn Date: Wed, 2 Mar 2016 17:32:16 +0300 Subject: [PATCH] Add RAM filters and increased the timers in heat tests Recently, a few new bugs associated with timers and error 'failed by timeout on step wait stack CREATE_COMPLETE status' Research has shown that an error in most cases occurs due to a slow environments. Typically, a small amount of RAM (<3 GB). Tests autoscaling and wait condition require more than 7 GB Also increased the other timers in (+ 120s in verify steps, + 30s in create stack steps, +10s in some other. Change-Id: I8066581e6358e84655ac3b419dcaa324e4f57aca Closes-bug:#1544179 Closes-bug:#1539721 Closes-bug:#1525200 --- fuel_health/heatmanager.py | 14 ++++++ fuel_health/tests/tests_platform/test_heat.py | 47 ++++++++++--------- 2 files changed, 40 insertions(+), 21 deletions(-) diff --git a/fuel_health/heatmanager.py b/fuel_health/heatmanager.py index c0fab8e1..0be4c875 100644 --- a/fuel_health/heatmanager.py +++ b/fuel_health/heatmanager.py @@ -258,3 +258,17 @@ class HeatBaseTest(fuel_health.nmanager.PlatformServicesBaseClass): LOG.debug('List of fetched objects: {0}'.format(objects)) return objects + + def check_required_resources(self, min_required_ram_mb=4096, + hdd=40, vCpu=2): + vms_count = self.get_info_about_available_resources( + min_required_ram_mb, hdd, vCpu) + if vms_count < 1: + msg = ('This test requires more hardware resources of your ' + 'OpenStack cluster: your cloud should allow to create ' + 'at least 1 VM with {0} MB of RAM, {1} HDD and {2} vCPUs. ' + 'You need to remove some resources or add compute nodes ' + 'to have an ability to run this OSTF test.' + .format(min_required_ram_mb, hdd, vCpu)) + LOG.debug(msg) + self.skipTest(msg) diff --git a/fuel_health/tests/tests_platform/test_heat.py b/fuel_health/tests/tests_platform/test_heat.py index d0de4289..3da21682 100644 --- a/fuel_health/tests/tests_platform/test_heat.py +++ b/fuel_health/tests/tests_platform/test_heat.py @@ -28,6 +28,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): super(HeatSmokeTests, self).setUp() if not self.config.compute.compute_nodes: self.skipTest('There are no compute nodes') + self.min_required_ram_mb = 7000 def test_advanced_actions(self): """Advanced stack actions: suspend, resume and check @@ -51,7 +52,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): 15. Check that instance owned by stack is in 'ACTIVE' status. 16. Delete the stack and wait for the stack to be deleted. - Duration: 660 s. + Duration: 900 s. Available since release: 2014.2-6.1 """ @@ -81,13 +82,13 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): # create stack fail_msg = 'Stack was not created properly.' stack = self.verify( - 60, self.create_stack, + 90, self.create_stack, 2, fail_msg, 'stack creation', template, parameters=parameters ) self.verify( - 300, self.wait_for_stack_status, + 420, self.wait_for_stack_status, 3, fail_msg, 'stack status becoming "CREATE_COMPLETE"', stack.id, 'CREATE_COMPLETE' @@ -106,7 +107,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): stack.id ) self.verify( - 60, self.wait_for_stack_status, + 90, self.wait_for_stack_status, 5, fail_msg, 'stack status becoming "SUSPEND_COMPLETE"', stack.id, 'SUSPEND_COMPLETE' @@ -134,7 +135,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): stack.id ) self.verify( - 60, self.wait_for_stack_status, + 90, self.wait_for_stack_status, 9, fail_msg, 'stack status becoming "RESUME_COMPLETE"', stack.id, 'RESUME_COMPLETE' @@ -162,7 +163,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): stack.id ) self.verify( - 60, self.wait_for_stack_status, + 90, self.wait_for_stack_status, 13, fail_msg, 'stack status becoming "CHECK_COMPLETE"', stack.id, 'CHECK_COMPLETE' @@ -212,7 +213,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): 9. Get the stack template details. 10. Delete the stack and wait for the stack to be deleted. - Duration: 560 s. + Duration: 720 s. """ self.check_image_exists() @@ -241,13 +242,13 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): # create stack fail_msg = 'Stack was not created properly.' stack = self.verify( - 60, self.create_stack, + 90, self.create_stack, 2, fail_msg, 'stack creation', template, parameters=parameters ) self.verify( - 300, self.wait_for_stack_status, + 420, self.wait_for_stack_status, 3, fail_msg, 'stack status becoming "CREATE_COMPLETE"', stack.id, 'CREATE_COMPLETE' @@ -365,7 +366,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): # delete stack fail_msg = 'Can not delete stack.' self.verify( - 20, self.heat_client.stacks.delete, + 30, self.heat_client.stacks.delete, 10, fail_msg, 'deleting stack', stack.id @@ -399,7 +400,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): 14. Delete the stack. 15. Wait for the stack to be deleted. - Duration: 950 s. + Duration: 1140 s. """ self.check_image_exists() @@ -428,13 +429,13 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): # create stack fail_msg = 'Stack was not created properly.' stack = self.verify( - 60, self.create_stack, + 90, self.create_stack, 2, fail_msg, 'stack creation', template, parameters=parameters ) self.verify( - 300, self.wait_for_stack_status, + 420, self.wait_for_stack_status, 3, fail_msg, 'stack status becoming "CREATE_COMPLETE"', stack.id, 'CREATE_COMPLETE' @@ -449,7 +450,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): ) stack = self.verify( - 20, self.update_stack, + 30, self.update_stack, 4, fail_msg, 'updating stack, changing resource name', stack.id, @@ -486,7 +487,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): parameters['InstanceType'] = flavor.name stack = self.verify( - 20, self.update_stack, + 30, self.update_stack, 8, fail_msg, 'updating stack, changing instance flavor', stack.id, @@ -527,7 +528,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): 'heat_update_nova_stack_template.yaml') stack = self.verify( - 20, self.update_stack, + 30, self.update_stack, 11, fail_msg, 'updating stack, changing template', stack.id, @@ -557,7 +558,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): # delete stack fail_msg = 'Can not delete stack.' self.verify( - 20, self.heat_client.stacks.delete, + 30, self.heat_client.stacks.delete, 14, fail_msg, 'deleting stack', stack.id @@ -595,6 +596,8 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): self.check_image_exists() + self.check_required_resources(self.min_required_ram_mb) + # creation of test flavor heat_flavor = self.verify( 50, self.create_flavor, @@ -739,7 +742,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): of the stack. 5. Verify the instance of the stack has been deleted. - Duration: 310 s. + Duration: 470 s. """ self.check_image_exists() @@ -766,7 +769,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): fail_msg = 'Stack creation was not started.' stack = self.verify( - 60, self.create_stack, + 90, self.create_stack, 2, fail_msg, 'starting stack creation', template, disable_rollback=False, parameters=parameters @@ -777,7 +780,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): fail_msg, 3 ) self.verify( - 300, self.wait_for_stack_deleted, + 420, self.wait_for_stack_deleted, 4, 'Rollback of the stack failed.', 'rolling back the stack after its creation failed', stack.id @@ -790,7 +793,7 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): fail_msg = 'The stack instance rollback failed.' self.verify( - 20, self.assertTrue, + 30, self.assertTrue, 5, fail_msg, 'verifying if the instance was rolled back', len(instances) == 0 @@ -816,6 +819,8 @@ class HeatSmokeTests(heatmanager.HeatBaseTest): self.check_image_exists() + self.check_required_resources(self.min_required_ram_mb) + # creation of test flavor heat_flavor = self.verify( 50, self.create_flavor,