Rebase done.
Heat smoke test moved to heat package. Version of heat-client downgraded to 0.2.2 in setup.py. Test description and test method naming fixed. Stack creation, updating and deletion actions divided into two steps. Added verification points to Verify details step. Added verification of Heat service is present in the keystone.
This commit is contained in:
parent
97109a671a
commit
77df2e1d87
|
@ -22,6 +22,7 @@ import heatclient.v1.client
|
||||||
|
|
||||||
from fuel_health.common.utils.data_utils import rand_name
|
from fuel_health.common.utils.data_utils import rand_name
|
||||||
from fuel_health import config
|
from fuel_health import config
|
||||||
|
from fuel_health import exceptions
|
||||||
import fuel_health.nmanager
|
import fuel_health.nmanager
|
||||||
import fuel_health.test
|
import fuel_health.test
|
||||||
|
|
||||||
|
@ -98,12 +99,22 @@ class HeatBaseTest(fuel_health.nmanager.OfficialClientTest):
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
super(HeatBaseTest, cls).setUpClass()
|
super(HeatBaseTest, cls).setUpClass()
|
||||||
|
cls.heat_service_available = False
|
||||||
|
for service in cls.identity_client.services.list():
|
||||||
|
if service.name == 'heat':
|
||||||
|
cls.heat_service_available = True
|
||||||
|
break
|
||||||
|
|
||||||
cls.stacks = []
|
cls.stacks = []
|
||||||
cls.flavor = None
|
cls.flavor = None
|
||||||
|
|
||||||
cls.wait_interval = cls.config.compute.build_interval
|
cls.wait_interval = cls.config.compute.build_interval
|
||||||
cls.wait_timeout = cls.config.compute.build_timeout
|
cls.wait_timeout = cls.config.compute.build_timeout
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(HeatBaseTest, self).setUp()
|
||||||
|
if not self.heat_service_available:
|
||||||
|
self.fail('Heat is unavailable.')
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def tearDownClass(cls):
|
def tearDownClass(cls):
|
||||||
cls.clean_stacks()
|
cls.clean_stacks()
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||||
|
|
||||||
|
# Copyright 2013 Mirantis, Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
|
@ -23,22 +23,26 @@ from fuel_health import heatmanager
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class HeatTest(heatmanager.HeatBaseTest):
|
class TestStackAction(heatmanager.HeatBaseTest):
|
||||||
"""Test class contains tests that check typical stack-related actions.
|
"""
|
||||||
|
Test class verifies that stack can be created, updated and deleted.
|
||||||
Special requirements:
|
Special requirements:
|
||||||
1. Heat component should be installed.
|
1. Heat component should be installed.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@attr(type=["fuel", "smoke"])
|
@attr(type=["fuel", "smoke"])
|
||||||
def test_manipulate_stack(self):
|
def test_stack(self):
|
||||||
"""Check typical stack-related actions
|
"""Create stack, check its details, then update and delete stack.
|
||||||
Target component: Heat
|
Target component: Heat
|
||||||
|
|
||||||
Scenario:
|
Scenario:
|
||||||
1. Create stack.
|
1. Create stack.
|
||||||
2. Get details of the created stack by its name.
|
2. Wait for stack status to become 'CREATE_COMPLETE'.
|
||||||
3. Update stack.
|
3. Get details of the created stack by its name.
|
||||||
4. Delete stack.
|
4. Update stack.
|
||||||
|
5. Wait for stack to be updated.
|
||||||
|
6. Delete stack.
|
||||||
|
7. Wait for stack to be deleted.
|
||||||
Duration: 60 s.
|
Duration: 60 s.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -49,42 +53,50 @@ class HeatTest(heatmanager.HeatBaseTest):
|
||||||
"stack creation",
|
"stack creation",
|
||||||
self.heat_client)
|
self.heat_client)
|
||||||
|
|
||||||
self.verify(100, self.wait_for_stack_status, 1,
|
self.verify(100, self.wait_for_stack_status, 2,
|
||||||
fail_msg,
|
fail_msg,
|
||||||
"stack status becoming 'CREATE_COMPLETE'",
|
"stack status becoming 'CREATE_COMPLETE'",
|
||||||
stack.id, 'CREATE_COMPLETE')
|
stack.id, 'CREATE_COMPLETE')
|
||||||
|
|
||||||
# get stack details
|
# get stack details
|
||||||
stack_details = self.verify(20, self.heat_client.stacks.get, 2,
|
details = self.verify(20, self.heat_client.stacks.get, 3,
|
||||||
"Cannot retrieve stack details.",
|
"Cannot retrieve stack details.",
|
||||||
"retrieving stack details",
|
"retrieving stack details",
|
||||||
stack.stack_name)
|
stack.stack_name)
|
||||||
|
|
||||||
|
fail_msg = "Stack details contain incorrect values."
|
||||||
|
self.verify_response_body_content(
|
||||||
|
details.id, stack.id,
|
||||||
|
fail_msg, 3)
|
||||||
|
|
||||||
self.verify_response_body_content(
|
self.verify_response_body_content(
|
||||||
stack_details.id,
|
self.config.compute.image_name, details.parameters['ImageId'],
|
||||||
stack.id,
|
fail_msg, 3)
|
||||||
"Stack details contain incorrect values.", 2)
|
|
||||||
|
self.verify_response_body_content(
|
||||||
|
details.stack_status, 'CREATE_COMPLETE',
|
||||||
|
fail_msg, 3)
|
||||||
|
|
||||||
# update stack
|
# update stack
|
||||||
fail_msg = "Cannot update stack."
|
fail_msg = "Cannot update stack."
|
||||||
stack = self.verify(20, self.update_stack, 3,
|
stack = self.verify(20, self.update_stack, 4,
|
||||||
fail_msg,
|
fail_msg,
|
||||||
"updating stack.",
|
"updating stack.",
|
||||||
self.heat_client, stack.id)
|
self.heat_client, stack.id)
|
||||||
|
|
||||||
self.verify(100, self.wait_for_stack_status, 3,
|
self.verify(100, self.wait_for_stack_status, 5,
|
||||||
fail_msg,
|
fail_msg,
|
||||||
"stack status becoming 'UPDATE_COMPLETE'",
|
"stack status becoming 'UPDATE_COMPLETE'",
|
||||||
stack.id, 'UPDATE_COMPLETE')
|
stack.id, 'UPDATE_COMPLETE')
|
||||||
|
|
||||||
# delete stack
|
# delete stack
|
||||||
fail_msg = "Cannot delete stack."
|
fail_msg = "Cannot delete stack."
|
||||||
self.verify(20, self.heat_client.stacks.delete, 4,
|
self.verify(20, self.heat_client.stacks.delete, 6,
|
||||||
fail_msg,
|
fail_msg,
|
||||||
"volume deletion",
|
"volume deletion",
|
||||||
stack.id)
|
stack.id)
|
||||||
|
|
||||||
self.verify(100, self.wait_for_stack_deleted, 4,
|
self.verify(100, self.wait_for_stack_deleted, 7,
|
||||||
fail_msg,
|
fail_msg,
|
||||||
"deleting stack",
|
"deleting stack",
|
||||||
stack.id)
|
stack.id)
|
1
setup.py
1
setup.py
|
@ -22,6 +22,7 @@ fuel_health_reqs = [
|
||||||
'python-glanceclient>=0.9.0',
|
'python-glanceclient>=0.9.0',
|
||||||
'python-keystoneclient>=0.3.1',
|
'python-keystoneclient>=0.3.1',
|
||||||
'python-novaclient>=2.13.0',
|
'python-novaclient>=2.13.0',
|
||||||
|
'python-heatclient==0.2.2',
|
||||||
'paramiko>=1.10.1',
|
'paramiko>=1.10.1',
|
||||||
'requests>=1.2.3',
|
'requests>=1.2.3',
|
||||||
'unittest2>=0.5.1',
|
'unittest2>=0.5.1',
|
||||||
|
|
Loading…
Reference in New Issue