From 0d29640228f02df2bf7be09ac9ca8188b17e4538 Mon Sep 17 00:00:00 2001 From: Pavlo Shchelokovskyy Date: Mon, 23 Mar 2015 12:01:25 +0000 Subject: [PATCH] Add minimal_instance_type config option for integration tests. Use a flavor similar to m1.micro for that. It is enough to start both minimal and functional tests images with no serious payload and should decrease the amount of RAM consumed by VMs in corresponding tests four-fold. Change-Id: I378b5a3cde020176ac45ebf8d05bd13278861a4e Related-Bug: #1435285 --- heat_integrationtests/common/config.py | 2 ++ heat_integrationtests/functional/test_validation.py | 7 ++++--- heat_integrationtests/heat_integrationtests.conf.sample | 3 +++ heat_integrationtests/prepare_test_env.sh | 6 ++++-- heat_integrationtests/scenario/scenario_base.py | 5 +++++ heat_integrationtests/scenario/test_neutron_autoscaling.py | 4 +--- .../scenario/test_neutron_loadbalancer.py | 2 +- heat_integrationtests/scenario/test_volumes.py | 2 +- 8 files changed, 21 insertions(+), 10 deletions(-) diff --git a/heat_integrationtests/common/config.py b/heat_integrationtests/common/config.py index ce7407a1b9..5ced77bda8 100644 --- a/heat_integrationtests/common/config.py +++ b/heat_integrationtests/common/config.py @@ -38,6 +38,8 @@ IntegrationTestGroup = [ cfg.StrOpt('instance_type', help="Instance type for tests. Needs to be big enough for a " "full OS plus the test workload"), + cfg.StrOpt('minimal_instance_type', + help="Instance type enough for simplest cases."), cfg.StrOpt('image_ref', help="Name of image to use for tests which boot servers."), cfg.StrOpt('keypair_name', diff --git a/heat_integrationtests/functional/test_validation.py b/heat_integrationtests/functional/test_validation.py index 2df6356e69..6a65091bf8 100644 --- a/heat_integrationtests/functional/test_validation.py +++ b/heat_integrationtests/functional/test_validation.py @@ -22,8 +22,9 @@ class StackValidationTest(test.HeatIntegrationTest): if not self.conf.minimal_image_ref: raise self.skipException("No image configured to test") - if not self.conf.instance_type: - raise self.skipException("No instance_type configured to test") + if not self.conf.minimal_instance_type: + raise self.skipException( + "No minimal_instance_type configured to test") self.assign_keypair() @@ -72,7 +73,7 @@ resources: env = {'resource_registry': {'My::Config': 'provider.yaml'}} parameters = {'keyname': self.keypair_name, - 'flavor': self.conf.instance_type, + 'flavor': self.conf.minimal_instance_type, 'image': self.conf.minimal_image_ref} # Note we don't wait for CREATE_COMPLETE, because we're using a # minimal image without the tools to apply the config. diff --git a/heat_integrationtests/heat_integrationtests.conf.sample b/heat_integrationtests/heat_integrationtests.conf.sample index e6207c7a9b..5a89910e51 100644 --- a/heat_integrationtests/heat_integrationtests.conf.sample +++ b/heat_integrationtests/heat_integrationtests.conf.sample @@ -23,6 +23,9 @@ # workload (string value) #instance_type = +# Instance type enough for simplest cases. (string value) +#minimal_instance_type = + # Name of image to use for tests which boot servers. (string value) #image_ref = diff --git a/heat_integrationtests/prepare_test_env.sh b/heat_integrationtests/prepare_test_env.sh index 537694a785..2ed2d22372 100755 --- a/heat_integrationtests/prepare_test_env.sh +++ b/heat_integrationtests/prepare_test_env.sh @@ -24,9 +24,11 @@ source $DEST/devstack/inc/ini-config cd $DEST/heat/heat_integrationtests -# Register the flavor for booting test servers +# Register the flavors for booting test servers iniset heat_integrationtests.conf DEFAULT instance_type m1.heat_int +iniset heat_integrationtests.conf DEFAULT minimal_instance_type m1.heat_micro nova flavor-create m1.heat_int 452 512 0 1 +nova flavor-create m1.heat_micro 453 128 0 1 # Register the glance image for testing glance image-create --name fedora-heat-test-image --disk-format qcow2 --container-format bare --is-public True --location http://tarballs.openstack.org/heat-test-image/fedora-heat-test-image.qcow2 @@ -34,4 +36,4 @@ iniset heat_integrationtests.conf DEFAULT image_ref fedora-heat-test-image iniset heat_integrationtests.conf DEFAULT boot_config_env $DEST/heat-templates/hot/software-config/boot-config/test_image_env.yaml iniset heat_integrationtests.conf DEFAULT minimal_image_ref cirros-0.3.2-x86_64-uec -cat heat_integrationtests.conf \ No newline at end of file +cat heat_integrationtests.conf diff --git a/heat_integrationtests/scenario/scenario_base.py b/heat_integrationtests/scenario/scenario_base.py index 77c3624496..dd25b89dd7 100644 --- a/heat_integrationtests/scenario/scenario_base.py +++ b/heat_integrationtests/scenario/scenario_base.py @@ -31,6 +31,11 @@ class ScenarioTestsBase(test.HeatIntegrationTest): if not self.conf.instance_type: raise self.skipException("No flavor configured to test") + if not self.conf.minimal_image_ref: + raise self.skipException("No minimal image configured to test") + if not self.conf.minimal_instance_type: + raise self.skipException("No minimal flavor configured to test") + def launch_stack(self, template_name, expected_status='CREATE_COMPLETE', parameters=None, **kwargs): template = self._load_template(__file__, template_name, self.sub_dir) diff --git a/heat_integrationtests/scenario/test_neutron_autoscaling.py b/heat_integrationtests/scenario/test_neutron_autoscaling.py index 2ba085b7c3..9bbfbab331 100644 --- a/heat_integrationtests/scenario/test_neutron_autoscaling.py +++ b/heat_integrationtests/scenario/test_neutron_autoscaling.py @@ -20,8 +20,6 @@ class NeutronAutoscalingTest(scenario_base.ScenarioTestsBase): def setUp(self): super(NeutronAutoscalingTest, self).setUp() - if not self.conf.minimal_image_ref: - raise self.skipException("No minimal image configured to test") if not self.conf.fixed_subnet_name: raise self.skipException("No sub-network configured to test") self.template_name = 'test_neutron_autoscaling.yaml' @@ -41,7 +39,7 @@ class NeutronAutoscalingTest(scenario_base.ScenarioTestsBase): parameters = { "image_id": self.conf.minimal_image_ref, "capacity": "1", - "instance_type": self.conf.instance_type, + "instance_type": self.conf.minimal_instance_type, "fixed_subnet_name": self.conf.fixed_subnet_name, } diff --git a/heat_integrationtests/scenario/test_neutron_loadbalancer.py b/heat_integrationtests/scenario/test_neutron_loadbalancer.py index 0591e5bdda..bbe85bc4cf 100644 --- a/heat_integrationtests/scenario/test_neutron_loadbalancer.py +++ b/heat_integrationtests/scenario/test_neutron_loadbalancer.py @@ -52,7 +52,7 @@ class NeutronLoadBalancerTest(scenario_base.ScenarioTestsBase): parameters = { 'key_name': self.keypair_name, - 'flavor': self.conf.instance_type, + 'flavor': self.conf.minimal_instance_type, 'image': self.conf.image_ref, 'private_subnet_id': self.net['subnets'][0], 'external_network_id': self.public_net['id'] diff --git a/heat_integrationtests/scenario/test_volumes.py b/heat_integrationtests/scenario/test_volumes.py index 9b12a9cc4c..79d49314a6 100644 --- a/heat_integrationtests/scenario/test_volumes.py +++ b/heat_integrationtests/scenario/test_volumes.py @@ -119,7 +119,7 @@ class VolumeBackupRestoreIntegrationTest(scenario_base.ScenarioTestsBase): """ parameters = { 'key_name': self.keypair_name, - 'instance_type': self.conf.instance_type, + 'instance_type': self.conf.minimal_instance_type, 'image_id': self.conf.minimal_image_ref, 'volume_description': self.volume_description, 'timeout': self.conf.build_timeout,