Add tempest ids for functional and scenario tests
This patch add tempest ids for all functional and scenario tests. Also add check-uuid to tox tests. Change-Id: I247d662b9695744a8dc7e8c7db00ed36478f3d61
This commit is contained in:
parent
8257d55634
commit
9b02d1e662
|
@ -10,6 +10,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -62,6 +64,7 @@ class UpdatePortTest(functional_base.FunctionalTestsBase):
|
|||
port_mac = self._stack_output(stack, 'mac_address')
|
||||
return port_id[0], port_ip, port_mac
|
||||
|
||||
@decorators.idempotent_id('8e37933b-345c-4ce5-a523-e67bdf198d73')
|
||||
def test_update_remove_ip(self):
|
||||
# create with defined ip_address
|
||||
stack_identifier = self.stack_create(template=test_template)
|
||||
|
@ -77,6 +80,7 @@ class UpdatePortTest(functional_base.FunctionalTestsBase):
|
|||
self.assertEqual(_id, new_id)
|
||||
self.assertEqual(_mac, new_mac)
|
||||
|
||||
@decorators.idempotent_id('df1bf0fb-115e-42f3-b6cc-e12b5d506c98')
|
||||
def test_update_with_mac_address(self):
|
||||
if not self.conf.admin_username or not self.conf.admin_password:
|
||||
self.skipTest('No admin creds found, skipping')
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -41,6 +43,7 @@ class UpdateSubnetTest(functional_base.FunctionalTestsBase):
|
|||
output = self._stack_output(stack, output_key)
|
||||
return output
|
||||
|
||||
@decorators.idempotent_id('af43fc6d-58ba-4b5f-bd68-07b29f0a96bc')
|
||||
def test_update_allocation_pools(self):
|
||||
stack_identifier = self.stack_create(template=test_template)
|
||||
alloc_pools = self.get_outputs(stack_identifier, 'alloc_pools')
|
||||
|
@ -57,6 +60,7 @@ class UpdateSubnetTest(functional_base.FunctionalTestsBase):
|
|||
self.assertEqual([{'start': '11.11.11.10', 'end': '11.11.11.100'}],
|
||||
new_alloc_pools)
|
||||
|
||||
@decorators.idempotent_id('2f1d3b04-2183-4e50-8aa3-fa0fbff5c861')
|
||||
def test_update_allocation_pools_to_empty(self):
|
||||
stack_identifier = self.stack_create(template=test_template)
|
||||
alloc_pools = self.get_outputs(stack_identifier, 'alloc_pools')
|
||||
|
@ -72,6 +76,7 @@ class UpdateSubnetTest(functional_base.FunctionalTestsBase):
|
|||
# new_alloc_pools should be []
|
||||
self.assertEqual([], new_alloc_pools)
|
||||
|
||||
@decorators.idempotent_id('6ec51150-6f83-4179-9faa-a3aee91ea150')
|
||||
def test_update_to_no_allocation_pools(self):
|
||||
stack_identifier = self.stack_create(template=test_template)
|
||||
alloc_pools = self.get_outputs(stack_identifier, 'alloc_pools')
|
||||
|
@ -87,6 +92,7 @@ class UpdateSubnetTest(functional_base.FunctionalTestsBase):
|
|||
# last_alloc_pools should be []
|
||||
self.assertEqual([], last_alloc_pools)
|
||||
|
||||
@decorators.idempotent_id('ffb3eaf8-044b-4229-99f9-5fd983ccc9d9')
|
||||
def test_update_gateway_ip(self):
|
||||
stack_identifier = self.stack_create(template=test_template)
|
||||
gw_ip = self.get_outputs(stack_identifier, 'gateway_ip')
|
||||
|
@ -100,6 +106,7 @@ class UpdateSubnetTest(functional_base.FunctionalTestsBase):
|
|||
# the gateway_ip should be the new one
|
||||
self.assertEqual('11.11.11.9', new_gw_ip)
|
||||
|
||||
@decorators.idempotent_id('e7b37a6b-e883-4c0c-b6a3-9ece1843e902')
|
||||
def test_update_gateway_ip_to_empty(self):
|
||||
stack_identifier = self.stack_create(template=test_template)
|
||||
gw_ip = self.get_outputs(stack_identifier, 'gateway_ip')
|
||||
|
@ -113,6 +120,7 @@ class UpdateSubnetTest(functional_base.FunctionalTestsBase):
|
|||
# new gateway_ip should be None
|
||||
self.assertIsNone(new_gw_ip)
|
||||
|
||||
@decorators.idempotent_id('373bab03-1f66-4883-b1de-2ecc39efe17e')
|
||||
def test_update_to_no_gateway_ip(self):
|
||||
stack_identifier = self.stack_create(template=test_template)
|
||||
gw_ip = self.get_outputs(stack_identifier, 'gateway_ip')
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
import copy
|
||||
import yaml
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -94,6 +96,7 @@ class UpdateTrunkTest(functional_base.FunctionalTestsBase):
|
|||
sub_ports_set = {frozenset(d.items()) for d in new_sub_ports}
|
||||
return sub_ports_set
|
||||
|
||||
@decorators.idempotent_id('5572b0ac-fdb2-4c68-a49e-024771814471')
|
||||
def test_add_first_sub_port(self):
|
||||
stack_identifier = self.stack_create(template=test_template)
|
||||
|
||||
|
@ -117,6 +120,7 @@ class UpdateTrunkTest(functional_base.FunctionalTestsBase):
|
|||
self.assertEqual(self._sub_ports_dict_to_set(new_sub_port),
|
||||
self._sub_ports_dict_to_set(trunk_sub_port))
|
||||
|
||||
@decorators.idempotent_id('c3f52330-01b7-4649-99fd-43700e6bbda3')
|
||||
def test_add_a_second_sub_port(self):
|
||||
parsed_template = yaml.safe_load(test_template)
|
||||
sub_ports = [{'port': {'get_resource': 'sub_port_one'},
|
||||
|
@ -153,6 +157,7 @@ class UpdateTrunkTest(functional_base.FunctionalTestsBase):
|
|||
self.assertEqual(self._sub_ports_dict_to_set(expected_sub_ports),
|
||||
self._sub_ports_dict_to_set(trunk_sub_ports))
|
||||
|
||||
@decorators.idempotent_id('cb59363e-5517-42f9-8b93-9ad700e2ef4c')
|
||||
def test_remove_sub_port_from_trunk(self):
|
||||
sub_ports = [{'port': {'get_resource': 'sub_port_one'},
|
||||
'segmentation_type': 'vlan',
|
||||
|
@ -189,6 +194,7 @@ class UpdateTrunkTest(functional_base.FunctionalTestsBase):
|
|||
self.assertEqual(self._sub_ports_dict_to_set(expected_sub_ports),
|
||||
self._sub_ports_dict_to_set(trunk_sub_ports))
|
||||
|
||||
@decorators.idempotent_id('7f0836c7-1d35-4d11-bcdc-e0e19ca68b68')
|
||||
def test_remove_last_sub_port_from_trunk(self):
|
||||
sub_ports = [{'port': {'get_resource': 'sub_port_one'},
|
||||
'segmentation_type': 'vlan',
|
||||
|
@ -224,6 +230,7 @@ class UpdateTrunkTest(functional_base.FunctionalTestsBase):
|
|||
'The returned sub ports (%s) in trunk_details is '
|
||||
'not empty!' % trunk_sub_ports)
|
||||
|
||||
@decorators.idempotent_id('e9296d6f-009c-4530-9aaf-84a0f8281bcb')
|
||||
def test_update_existing_sub_port_on_trunk(self):
|
||||
sub_ports = [{'port': {'get_resource': 'sub_port_one'},
|
||||
'segmentation_type': 'vlan',
|
||||
|
@ -253,6 +260,7 @@ class UpdateTrunkTest(functional_base.FunctionalTestsBase):
|
|||
self.assertEqual(self._sub_ports_dict_to_set([updated_sub_port]),
|
||||
self._sub_ports_dict_to_set(trunk_sub_ports))
|
||||
|
||||
@decorators.idempotent_id('912044d8-e0c1-4c6c-ab4e-bc1cadc46c18')
|
||||
def test_update_trunk_name_and_description(self):
|
||||
new_name = 'pineapple'
|
||||
new_description = 'This is a test trunk'
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -43,6 +45,7 @@ outputs:
|
|||
value: { get_param: foo }
|
||||
'''
|
||||
|
||||
@decorators.idempotent_id('d5bbf763-8eb9-4657-ad3f-e97405b6e1f2')
|
||||
def test_db_encryption(self):
|
||||
# Create a stack with the value of 'foo' to be encrypted
|
||||
foo_param = 'my_encrypted_foo'
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
@ -73,6 +74,7 @@ class EncryptionVolTypeTest(functional_base.FunctionalTestsBase):
|
|||
self.assertEqual(my_encrypted_vol_type_tmpl_prop['control_location'],
|
||||
phy_rsrc_specs.control_location)
|
||||
|
||||
@decorators.idempotent_id('a98de4ce-aa59-478b-a8ce-b5d818c76a68')
|
||||
def test_create_update(self):
|
||||
stack_identifier = self.stack_create(
|
||||
template=test_encryption_vol_type)
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
import uuid
|
||||
|
||||
from tempest.lib import decorators
|
||||
from zaqarclient.queues.v2 import client as zaqarclient
|
||||
|
||||
from heat_tempest_plugin.common import test
|
||||
|
@ -28,6 +29,7 @@ resources:
|
|||
value: ok
|
||||
'''
|
||||
|
||||
@decorators.idempotent_id('d0b72695-e97d-4aa1-bfaf-31c14b09ac87')
|
||||
def test_events(self):
|
||||
queue_id = str(uuid.uuid4())
|
||||
environment = {'event_sinks': [{'type': 'zaqar-queue',
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -32,6 +34,7 @@ outputs:
|
|||
value: {get_resource: test1}
|
||||
'''
|
||||
|
||||
@decorators.idempotent_id('45449bad-18ba-4148-82e6-a6bc1e9a9b04')
|
||||
def test_create_with_external_ref(self):
|
||||
stack_name = self._stack_rand_name()
|
||||
stack_identifier = self.stack_create(
|
||||
|
@ -55,6 +58,7 @@ outputs:
|
|||
'output_key': 'str',
|
||||
'output_value': 'foobar'}], stack.outputs)
|
||||
|
||||
@decorators.idempotent_id('fb16477c-e981-4ef9-a83b-c0acc162343a')
|
||||
def test_update_with_external_ref(self):
|
||||
stack_name = self._stack_rand_name()
|
||||
stack_identifier = self.stack_create(
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
|
||||
import yaml
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -27,6 +29,7 @@ class HooksTest(functional_base.FunctionalTestsBase):
|
|||
'foo_step3': {'type': 'OS::Heat::RandomString',
|
||||
'depends_on': 'foo_step2'}}}
|
||||
|
||||
@decorators.idempotent_id('f14cbe86-0392-474a-9f28-bb561745698d')
|
||||
def test_hook_pre_create(self):
|
||||
env = {'resource_registry':
|
||||
{'resources':
|
||||
|
@ -58,6 +61,7 @@ class HooksTest(functional_base.FunctionalTestsBase):
|
|||
stack_identifier, 'foo_step2', 'CREATE_COMPLETE')
|
||||
self._wait_for_stack_status(stack_identifier, 'CREATE_COMPLETE')
|
||||
|
||||
@decorators.idempotent_id('75009076-96eb-43af-b4df-f002704737d2')
|
||||
def test_hook_pre_update_nochange(self):
|
||||
env = {'resource_registry':
|
||||
{'resources':
|
||||
|
@ -99,6 +103,7 @@ class HooksTest(functional_base.FunctionalTestsBase):
|
|||
self.assertEqual(res_before.physical_resource_id,
|
||||
res_after.physical_resource_id)
|
||||
|
||||
@decorators.idempotent_id('9f03d1e0-a2d2-42fc-a9c6-47db05b9c8ed')
|
||||
def test_hook_pre_update_replace(self):
|
||||
env = {'resource_registry':
|
||||
{'resources':
|
||||
|
@ -141,6 +146,7 @@ class HooksTest(functional_base.FunctionalTestsBase):
|
|||
self.assertNotEqual(res_before.physical_resource_id,
|
||||
res_after.physical_resource_id)
|
||||
|
||||
@decorators.idempotent_id('15c4f97d-5e06-40c6-83af-0e57d5afaff9')
|
||||
def test_hook_pre_update_in_place(self):
|
||||
env = {'resource_registry':
|
||||
{'resources':
|
||||
|
@ -190,6 +196,7 @@ class HooksTest(functional_base.FunctionalTestsBase):
|
|||
self.assertEqual(res_before.physical_resource_id,
|
||||
res_after.physical_resource_id)
|
||||
|
||||
@decorators.idempotent_id('7d96b5f4-4aba-493d-b098-4beea4654a2b')
|
||||
def test_hook_pre_create_nested(self):
|
||||
files = {'nested.yaml': yaml.safe_dump(self.template)}
|
||||
env = {'resource_registry':
|
||||
|
@ -231,6 +238,7 @@ class HooksTest(functional_base.FunctionalTestsBase):
|
|||
nested_identifier, 'foo_step2', 'CREATE_COMPLETE')
|
||||
self._wait_for_stack_status(stack_identifier, 'CREATE_COMPLETE')
|
||||
|
||||
@decorators.idempotent_id('cffc0783-3add-4f0c-ac66-03c90f6feeb0')
|
||||
def test_hook_pre_create_wildcard(self):
|
||||
env = {'resource_registry':
|
||||
{'resources':
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
# under the License.
|
||||
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -88,6 +90,7 @@ outputs:
|
|||
if not self.is_network_extension_supported('lbaasv2'):
|
||||
self.skipTest('LBaasv2 extension not available, skipping')
|
||||
|
||||
@decorators.idempotent_id('2f4a476c-cba7-448b-a7c1-85f7284f0293')
|
||||
def test_create_update_loadbalancer(self):
|
||||
parameters = {
|
||||
'subnet': self.conf.fixed_subnet_name,
|
||||
|
@ -125,6 +128,7 @@ outputs:
|
|||
self.assertEqual(7777, output['connection_limit'])
|
||||
self.assertEqual('updatedListener', output['description'])
|
||||
|
||||
@decorators.idempotent_id('104f59ae-a3c8-4c12-98e5-a7bc0007878d')
|
||||
def test_add_delete_poolmember(self):
|
||||
parameters = {
|
||||
'subnet': self.conf.fixed_subnet_name,
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -173,6 +175,7 @@ class CreateServerTest(functional_base.FunctionalTestsBase):
|
|||
stack = self.client.stacks.get(stack_identifier)
|
||||
return self._stack_output(stack, output_key)
|
||||
|
||||
@decorators.idempotent_id('58ccf0aa-7531-4eaa-8ed5-38663a4defaa')
|
||||
def test_create_server_with_subnet_fixed_ip_sec_group(self):
|
||||
parms = {'flavor': self.conf.minimal_instance_type,
|
||||
'image': self.conf.minimal_image_ref}
|
||||
|
@ -190,6 +193,7 @@ class CreateServerTest(functional_base.FunctionalTestsBase):
|
|||
server = self.compute_client.servers.get(server_id)
|
||||
self.assertEqual([{"name": "the_sg"}], server.security_groups)
|
||||
|
||||
@decorators.idempotent_id('12185eaa-927f-43f3-a525-0424c4eb9b5d')
|
||||
def test_create_update_server_with_subnet(self):
|
||||
parms = {'flavor': self.conf.minimal_instance_type,
|
||||
'image': self.conf.minimal_image_ref}
|
||||
|
@ -213,6 +217,7 @@ class CreateServerTest(functional_base.FunctionalTestsBase):
|
|||
self.assertNotIn('11.11.11', new_networks['the_net'][0])
|
||||
self.assertIn('12.12.12', new_networks['the_net'][0])
|
||||
|
||||
@decorators.idempotent_id('19479c15-6b25-4865-8889-658566608bd9')
|
||||
def test_create_server_with_port(self):
|
||||
parms = {'flavor': self.conf.minimal_instance_type,
|
||||
'image': self.conf.minimal_image_ref}
|
||||
|
@ -234,6 +239,7 @@ class UpdateServerNetworksTest(functional_base.FunctionalTestsBase):
|
|||
stack = self.client.stacks.get(stack_identifier)
|
||||
return self._stack_output(stack, output_key)
|
||||
|
||||
@decorators.idempotent_id('c1a22dbf-3160-41b7-8d3f-62ca33fc35a8')
|
||||
def test_create_update_server_swap_network_subnet(self):
|
||||
'''Test updating stack with:
|
||||
|
||||
|
@ -257,6 +263,7 @@ class UpdateServerNetworksTest(functional_base.FunctionalTestsBase):
|
|||
parameters=self.params)
|
||||
self.assertEqual(port0, self.get_outputs(stack_identifier, 'port0_id'))
|
||||
|
||||
@decorators.idempotent_id('cccfe612-1ab7-401f-a4c5-63372826a780')
|
||||
def test_create_update_server_swap_network_port(self):
|
||||
'''Test updating stack with:
|
||||
|
||||
|
@ -280,6 +287,7 @@ class UpdateServerNetworksTest(functional_base.FunctionalTestsBase):
|
|||
parameters=self.params)
|
||||
self.assertEqual(port0, self.get_outputs(stack_identifier, 'port0_id'))
|
||||
|
||||
@decorators.idempotent_id('3eeb0dff-5d2d-4178-a4e6-06e4c26ce23a')
|
||||
def test_create_update_server_swap_subnet_network(self):
|
||||
'''Test updating stack with:
|
||||
|
||||
|
@ -303,6 +311,7 @@ class UpdateServerNetworksTest(functional_base.FunctionalTestsBase):
|
|||
parameters=self.params)
|
||||
self.assertEqual(port0, self.get_outputs(stack_identifier, 'port0_id'))
|
||||
|
||||
@decorators.idempotent_id('647fda5d-fc0c-4eb1-9ce3-c4c537461324')
|
||||
def test_create_update_server_add_subnet(self):
|
||||
'''Test updating stack with:
|
||||
|
||||
|
@ -328,6 +337,7 @@ class UpdateServerNetworksTest(functional_base.FunctionalTestsBase):
|
|||
parameters=self.params)
|
||||
self.assertEqual(port0, self.get_outputs(stack_identifier, 'port0_id'))
|
||||
|
||||
@decorators.idempotent_id('01c0f1cd-25b2-49b9-b4ac-fc4dd8937e42')
|
||||
def test_create_update_server_add_same_fixed_ip(self):
|
||||
'''Test updating stack with:
|
||||
|
||||
|
@ -355,6 +365,7 @@ class UpdateServerNetworksTest(functional_base.FunctionalTestsBase):
|
|||
parameters=self.params)
|
||||
self.assertEqual(port0, self.get_outputs(stack_identifier, 'port0_id'))
|
||||
|
||||
@decorators.idempotent_id('abc39cd6-7745-4314-ac04-85df532dd7c9')
|
||||
def test_create_update_server_add_network(self):
|
||||
'''Test updating stack with:
|
||||
|
||||
|
@ -380,6 +391,7 @@ class UpdateServerNetworksTest(functional_base.FunctionalTestsBase):
|
|||
parameters=self.params)
|
||||
self.assertEqual(port0, self.get_outputs(stack_identifier, 'port0_id'))
|
||||
|
||||
@decorators.idempotent_id('3f729e7e-a698-4ee3-8a5e-0db84f16d1e1')
|
||||
def test_create_update_server_multi_networks_swaps(self):
|
||||
'''Test updating stack with:
|
||||
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -99,6 +101,7 @@ outputs:
|
|||
if not self.conf.minimal_instance_type:
|
||||
raise self.skipException("No minimal flavor configured to test")
|
||||
|
||||
@decorators.idempotent_id('cc54ca6e-b91d-4ddd-80cc-24a886dfaaa0')
|
||||
def test_create_stack_with_multi_signal_waitcondition(self):
|
||||
params = {'flavor': self.conf.minimal_instance_type,
|
||||
'image': self.conf.minimal_image_ref,
|
||||
|
|
|
@ -10,9 +10,11 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
from heatclient import exc
|
||||
import six
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
class StackPreviewTest(functional_base.FunctionalTestsBase):
|
||||
|
@ -88,6 +90,7 @@ parameters:
|
|||
self.assertEqual(stack_name, result['parameters']['OS::stack_name'])
|
||||
self.assertEqual('abc', result['parameters']['incomming'])
|
||||
|
||||
@decorators.idempotent_id('4c2c062d-4723-42c0-a113-3307dd4ceb12')
|
||||
def test_basic_pass(self):
|
||||
stack_name = self._stack_rand_name()
|
||||
result = self.client.stacks.preview(
|
||||
|
@ -114,6 +117,7 @@ parameters:
|
|||
self.assertEqual('abc', res['properties']['value'])
|
||||
self.assertEqual([], res['required_by'])
|
||||
|
||||
@decorators.idempotent_id('54e69a54-762d-479e-a4f4-1fbf21af01c6')
|
||||
def test_basic_fail(self):
|
||||
stack_name = self._stack_rand_name()
|
||||
|
||||
|
@ -131,6 +135,7 @@ parameters:
|
|||
': The Parameter (missing) was not provided.',
|
||||
six.text_type(excp))
|
||||
|
||||
@decorators.idempotent_id('0449113c-ff90-4f2b-8825-27ea35c1983f')
|
||||
def test_nested_pass(self):
|
||||
"""Nested stacks need to recurse down the stacks."""
|
||||
main_template = '''
|
||||
|
@ -187,6 +192,7 @@ outputs:
|
|||
self.assertEqual('abc', res['properties']['value'])
|
||||
self.assertEqual([], res['required_by'])
|
||||
|
||||
@decorators.idempotent_id('6ca8ddfc-106f-4ecc-83f7-fca31d0c85ca')
|
||||
def test_res_group_with_nested_template(self):
|
||||
main_template = '''
|
||||
heat_template_version: 2015-04-30
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
from heatclient import exc
|
||||
import six
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
@ -49,6 +50,7 @@ outputs:
|
|||
self.template = self.template.replace('RegionOne',
|
||||
self.conf.region)
|
||||
|
||||
@decorators.idempotent_id('7e735c40-24fb-4ef8-8585-d1c68b344476')
|
||||
def test_remote_stack_alone(self):
|
||||
stack_id = self.stack_create(template=self.remote_template)
|
||||
expected_resources = {'random1': 'OS::Heat::RandomString'}
|
||||
|
@ -57,6 +59,7 @@ outputs:
|
|||
output_value = self._stack_output(stack, 'remote_key')
|
||||
self.assertEqual(32, len(output_value))
|
||||
|
||||
@decorators.idempotent_id('aeed20d1-ebda-4544-9ace-16b0c8fc24f6')
|
||||
def test_stack_create(self):
|
||||
files = {'remote_stack.yaml': self.remote_template}
|
||||
stack_id = self.stack_create(files=files)
|
||||
|
@ -80,6 +83,7 @@ outputs:
|
|||
remote_resources = {'random1': 'OS::Heat::RandomString'}
|
||||
self.assertEqual(remote_resources, self.list_resources(remote_id))
|
||||
|
||||
@decorators.idempotent_id('830bfeae-6d8a-4cb2-823d-d8b6c3a740ad')
|
||||
def test_stack_create_bad_region(self):
|
||||
tmpl_bad_region = self.template.replace(self.conf.region, 'DARKHOLE')
|
||||
files = {'remote_stack.yaml': self.remote_template}
|
||||
|
@ -94,6 +98,7 @@ outputs:
|
|||
'orchestration service in DARKHOLE region not found"')
|
||||
self.assertEqual(error_msg, six.text_type(ex))
|
||||
|
||||
@decorators.idempotent_id('b2190dfc-d223-4595-b168-6c42b0f3a3e5')
|
||||
def test_stack_resource_validation_fail(self):
|
||||
tmpl_bad_format = self.remote_template.replace('resources', 'resource')
|
||||
files = {'remote_stack.yaml': tmpl_bad_format}
|
||||
|
@ -106,6 +111,7 @@ outputs:
|
|||
'invalid: resource"') % self.conf.region
|
||||
self.assertEqual(error_msg, six.text_type(ex))
|
||||
|
||||
@decorators.idempotent_id('141f0478-121b-4e61-bde7-d5551bfd1fc2')
|
||||
def test_stack_update(self):
|
||||
files = {'remote_stack.yaml': self.remote_template}
|
||||
stack_id = self.stack_create(files=files)
|
||||
|
@ -137,6 +143,7 @@ outputs:
|
|||
self.assertEqual(remote_resources,
|
||||
self.list_resources(rstack.id))
|
||||
|
||||
@decorators.idempotent_id('50841af8-bdf5-4df6-a075-dc061ada6833')
|
||||
def test_stack_suspend_resume(self):
|
||||
files = {'remote_stack.yaml': self.remote_template}
|
||||
stack_id = self.stack_create(files=files)
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -35,6 +37,7 @@ test_template_depend = {
|
|||
|
||||
class ResourcesList(functional_base.FunctionalTestsBase):
|
||||
|
||||
@decorators.idempotent_id('b65b5c82-68b0-42c9-82a0-c0e74e9ad906')
|
||||
def test_filtering_with_depend(self):
|
||||
stack_identifier = self.stack_create(template=test_template_depend)
|
||||
[test2] = self.client.resources.list(stack_identifier,
|
||||
|
@ -42,6 +45,7 @@ class ResourcesList(functional_base.FunctionalTestsBase):
|
|||
|
||||
self.assertEqual('CREATE_COMPLETE', test2.resource_status)
|
||||
|
||||
@decorators.idempotent_id('97a65d53-b449-4a43-8283-42d43b165756')
|
||||
def test_required_by(self):
|
||||
stack_identifier = self.stack_create(template=test_template_depend)
|
||||
[test1] = self.client.resources.list(stack_identifier,
|
||||
|
|
|
@ -20,6 +20,7 @@ import time
|
|||
import yaml
|
||||
|
||||
from oslo_utils import timeutils
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.common import exceptions
|
||||
from heat_tempest_plugin.common import test
|
||||
|
@ -69,6 +70,7 @@ properties:
|
|||
|
||||
enable_cleanup = True
|
||||
|
||||
@decorators.idempotent_id('8ee231ff-f80a-4a17-a860-5cda87e18ad0')
|
||||
def test_deployments_metadata(self):
|
||||
parms = {'flavor': self.conf.minimal_instance_type,
|
||||
'network': self.conf.fixed_network_name,
|
||||
|
@ -102,6 +104,7 @@ properties:
|
|||
for config_stack in config_stacks:
|
||||
self._wait_for_stack_status(config_stack, 'CREATE_COMPLETE')
|
||||
|
||||
@decorators.idempotent_id('bd539232-b999-4bec-b47d-ff4822fc8b82')
|
||||
def test_deployments_timeout_failed(self):
|
||||
parms = {'flavor': self.conf.minimal_instance_type,
|
||||
'network': self.conf.fixed_network_name,
|
||||
|
@ -226,6 +229,7 @@ auth_url = %(auth_url)s
|
|||
queue_id = %(queue_id)s
|
||||
'''
|
||||
|
||||
@decorators.idempotent_id('3af97ced-bead-4629-b78a-97762719e990')
|
||||
def test_signal_queues(self):
|
||||
parms = {'flavor': self.conf.minimal_instance_type,
|
||||
'network': self.conf.fixed_network_name,
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -42,6 +44,7 @@ outputs:
|
|||
self.assertIsNotNone(event.resource_status_reason)
|
||||
self.assertIsNotNone(event.id)
|
||||
|
||||
@decorators.idempotent_id('620f4f7c-74f8-48a4-a8b0-d06d0337f133')
|
||||
def test_event(self):
|
||||
parameters = {}
|
||||
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -35,6 +37,7 @@ outputs:
|
|||
value: { get_attr: [test_resource_b, output] }
|
||||
'''
|
||||
|
||||
@decorators.idempotent_id('a886dd67-4506-4a37-82ae-43f0a7d83f35')
|
||||
def test_outputs(self):
|
||||
stack_identifier = self.stack_create(
|
||||
template=self.template
|
||||
|
@ -89,6 +92,7 @@ outputs:
|
|||
value: {get_attr: [test_resource_b, output]}
|
||||
'''
|
||||
|
||||
@decorators.idempotent_id('aea0e495-4c77-4033-8c43-3351e9cb7b48')
|
||||
def test_outputs_update_new_resource(self):
|
||||
stack_identifier = self.stack_create(template=self.before_template)
|
||||
self.update_stack(stack_identifier, template=self.after_template)
|
||||
|
@ -133,6 +137,7 @@ outputs:
|
|||
value: { get_param: foo }
|
||||
'''
|
||||
|
||||
@decorators.idempotent_id('993a403c-c6e2-475d-a65d-a82b8c9e0c22')
|
||||
def test_output_error_nested(self):
|
||||
stack_identifier = self.stack_create(
|
||||
template=self.nested_template,
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -31,6 +33,7 @@ resources:
|
|||
value: {get_param: input}
|
||||
'''
|
||||
|
||||
@decorators.idempotent_id('67332e51-b427-42d5-ad8d-fd2ec334f361')
|
||||
def test_stack_tag(self):
|
||||
# Stack create with stack tags
|
||||
tags = 'foo,bar'
|
||||
|
@ -66,6 +69,7 @@ resources:
|
|||
empty_tags_stack = self.client.stacks.get(stack_identifier)
|
||||
self.assertIsNone(empty_tags_stack.tags)
|
||||
|
||||
@decorators.idempotent_id('5ed79584-0684-4f9c-ae8e-44a8f874ec79')
|
||||
def test_hidden_stack(self):
|
||||
# Stack create with hidden stack tag
|
||||
tags = 'foo,hidden'
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
import six
|
||||
|
||||
from heatclient import exc
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
@ -86,6 +87,7 @@ resources:
|
|||
length: {get_param: aparam}
|
||||
'''
|
||||
|
||||
@decorators.idempotent_id('b65a80c2-a507-4deb-9e7e-43181cc05211')
|
||||
def test_template_validate_basic(self):
|
||||
ret = self.client.stacks.validate(template=self.random_template)
|
||||
expected = {'Description': 'the stack description',
|
||||
|
@ -102,6 +104,7 @@ resources:
|
|||
'resource_registry': {u'resources': {}}}}
|
||||
self.assertEqual(expected, ret)
|
||||
|
||||
@decorators.idempotent_id('bf27371d-e202-4bae-9f13-2ef137958517')
|
||||
def test_template_validate_override_default(self):
|
||||
env = {'parameters': {'aparam': 5}}
|
||||
ret = self.client.stacks.validate(template=self.random_template,
|
||||
|
@ -121,6 +124,7 @@ resources:
|
|||
'resource_registry': {u'resources': {}}}}
|
||||
self.assertEqual(expected, ret)
|
||||
|
||||
@decorators.idempotent_id('0278e03d-ed50-4909-b29d-9c4267d3fcd6')
|
||||
def test_template_validate_override_none(self):
|
||||
env = {'resource_registry': {
|
||||
'OS::Heat::RandomString': 'OS::Heat::None'}}
|
||||
|
@ -142,6 +146,7 @@ resources:
|
|||
u'resources': {}}}}
|
||||
self.assertEqual(expected, ret)
|
||||
|
||||
@decorators.idempotent_id('acb1435b-f1db-4427-9121-7e3144ddb81e')
|
||||
def test_template_validate_basic_required_param(self):
|
||||
tmpl = self.random_template.replace('default: 10', '')
|
||||
ret = self.client.stacks.validate(template=tmpl)
|
||||
|
@ -158,6 +163,7 @@ resources:
|
|||
'resource_registry': {u'resources': {}}}}
|
||||
self.assertEqual(expected, ret)
|
||||
|
||||
@decorators.idempotent_id('7aac1feb-8256-4f70-8459-5e9780d28904')
|
||||
def test_template_validate_fail_version(self):
|
||||
fail_template = self.random_template.replace('2014-10-16', 'invalid')
|
||||
ex = self.assertRaises(exc.HTTPBadRequest,
|
||||
|
@ -165,6 +171,7 @@ resources:
|
|||
template=fail_template)
|
||||
self.assertIn('The template version is invalid', six.text_type(ex))
|
||||
|
||||
@decorators.idempotent_id('6a6472d2-71fa-4ebe-a2b6-20878838555b')
|
||||
def test_template_validate_parameter_groups(self):
|
||||
ret = self.client.stacks.validate(template=self.random_template_groups)
|
||||
expected = {'Description': 'the stack description',
|
||||
|
@ -198,6 +205,7 @@ resources:
|
|||
'resource_registry': {u'resources': {}}}}
|
||||
self.assertEqual(expected, ret)
|
||||
|
||||
@decorators.idempotent_id('5100cf18-f52a-47a2-880c-d540edad149f')
|
||||
def test_template_validate_nested_off(self):
|
||||
files = {'mynested.yaml': self.random_template}
|
||||
ret = self.client.stacks.validate(template=self.parent_template,
|
||||
|
@ -218,6 +226,7 @@ resources:
|
|||
u'resources': {}}}}
|
||||
self.assertEqual(expected, ret)
|
||||
|
||||
@decorators.idempotent_id('480bcf64-25ae-49c7-b147-7cbc27d09cea')
|
||||
def test_template_validate_nested_on(self):
|
||||
files = {'mynested.yaml': self.random_template}
|
||||
ret = self.client.stacks.validate(template=self.parent_template_noprop,
|
||||
|
@ -244,6 +253,7 @@ resources:
|
|||
u'resources': {}}}}
|
||||
self.assertEqual(expected, ret)
|
||||
|
||||
@decorators.idempotent_id('a0bb07f0-2e10-4226-a205-a7eb04df415f')
|
||||
def test_template_validate_nested_on_multiple(self):
|
||||
# parent_template -> nested_template -> random_template
|
||||
nested_template = self.random_template.replace(
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
@ -38,6 +39,7 @@ class TemplateAPITest(functional_base.FunctionalTestsBase):
|
|||
}
|
||||
}
|
||||
|
||||
@decorators.idempotent_id('ac6ebc41-bd6a-4df4-80e5-f4b9ae3b5506')
|
||||
def test_get_stack_template(self):
|
||||
stack_identifier = self.stack_create(
|
||||
template=self.template
|
||||
|
@ -45,11 +47,13 @@ class TemplateAPITest(functional_base.FunctionalTestsBase):
|
|||
template_from_client = self.client.stacks.template(stack_identifier)
|
||||
self.assertEqual(self.template, template_from_client)
|
||||
|
||||
@decorators.idempotent_id('9f9a2fc0-f029-4d1f-a2eb-f019b9f75944')
|
||||
def test_resource_types(self):
|
||||
resource_types = self.client.resource_types.list()
|
||||
self.assertTrue(any(resource.resource_type == "OS::Heat::TestResource"
|
||||
for resource in resource_types))
|
||||
|
||||
@decorators.idempotent_id('fafbdcd0-eec3-4e6f-9c88-1e4835d085cf')
|
||||
def test_show_resource_template(self):
|
||||
resource_details = self.client.resource_types.get(
|
||||
resource_type="OS::Heat::TestResource"
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
||||
|
||||
|
@ -61,6 +63,7 @@ outputs:
|
|||
self.assertEqual('OS::Heat::RandomString',
|
||||
result['resource_type'])
|
||||
|
||||
@decorators.idempotent_id('871cc5dd-7550-494d-8c6d-9d549a8c0305')
|
||||
def test_template_validate_basic(self):
|
||||
ret = self.client.stacks.validate(template=self.random_template)
|
||||
expected = {
|
||||
|
@ -82,6 +85,7 @@ outputs:
|
|||
}
|
||||
self.assertEqual(expected, ret)
|
||||
|
||||
@decorators.idempotent_id('e84c76b8-a5e5-45e7-9c4b-4c160d1c385f')
|
||||
def test_template_validate_override_default(self):
|
||||
env = {'parameters': {u'\u53c2\u6570': 5}}
|
||||
ret = self.client.stacks.validate(template=self.random_template,
|
||||
|
@ -106,6 +110,7 @@ outputs:
|
|||
}
|
||||
self.assertEqual(expected, ret)
|
||||
|
||||
@decorators.idempotent_id('66338945-a3ae-4e3a-aa17-ab802ceb00b1')
|
||||
def test_stack_preview(self):
|
||||
result = self.client.stacks.preview(
|
||||
template=self.random_template,
|
||||
|
@ -113,6 +118,7 @@ outputs:
|
|||
disable_rollback=True).to_dict()
|
||||
self._assert_preview_results(result)
|
||||
|
||||
@decorators.idempotent_id('d2c4a10c-3cb4-4efd-889d-695a0acbd04f')
|
||||
def test_create_stack(self):
|
||||
stack_identifier = self.stack_create(template=self.random_template)
|
||||
stack = self.client.stacks.get(stack_identifier)
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
import json
|
||||
|
||||
from keystoneclient.v3 import client as keystoneclient
|
||||
from tempest.lib import decorators
|
||||
from zaqarclient.queues.v2 import client as zaqarclient
|
||||
|
||||
from heat_tempest_plugin.tests.functional import functional_base
|
||||
|
@ -38,6 +39,7 @@ outputs:
|
|||
value: {'Fn::Select': ['data_id', {get_attr: [wait_condition, data]}]}
|
||||
'''
|
||||
|
||||
@decorators.idempotent_id('90183f0d-9929-43a6-8fb6-b81003824c6d')
|
||||
def test_signal_queues(self):
|
||||
stack_identifier = self.stack_create(
|
||||
template=self.template,
|
||||
|
|
|
@ -11,7 +11,9 @@
|
|||
# under the License.
|
||||
|
||||
import datetime
|
||||
|
||||
from oslo_log import log as logging
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.common import test
|
||||
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||
|
@ -35,6 +37,7 @@ class AodhAlarmTest(scenario_base.ScenarioTestsBase):
|
|||
actual))
|
||||
return actual == expected
|
||||
|
||||
@decorators.idempotent_id('fc0f18a6-f65c-4df1-b9c5-e160dea59849')
|
||||
def test_alarm(self):
|
||||
"""Confirm we can create an alarm and trigger it."""
|
||||
# create metric
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
import time
|
||||
|
||||
import requests
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.common import test
|
||||
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||
|
@ -48,6 +49,7 @@ class AutoscalingLoadBalancerTest(scenario_base.ScenarioTestsBase):
|
|||
resp.add(r.text)
|
||||
self.assertEqual(expected_num, len(resp))
|
||||
|
||||
@decorators.idempotent_id('48ddbc45-cef6-4640-acd6-7efc281833b9')
|
||||
def test_autoscaling_loadbalancer_neutron(self):
|
||||
"""Check work of AutoScaing and Neutron LBaaS v1 resource in Heat.
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
import time
|
||||
|
||||
import requests
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.common import test
|
||||
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||
|
@ -50,6 +51,7 @@ class AutoscalingLoadBalancerv2Test(scenario_base.ScenarioTestsBase):
|
|||
break
|
||||
self.assertEqual(expected_num, len(resp))
|
||||
|
||||
@decorators.idempotent_id('89459930-aa61-4557-989b-3429d3b3b612')
|
||||
def test_autoscaling_loadbalancer_neutron(self):
|
||||
"""Check work of AutoScaing and Neutron LBaaS v2 resource in Heat.
|
||||
|
||||
|
|
|
@ -10,9 +10,11 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from heatclient.common import template_utils
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.common import test
|
||||
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||
from heatclient.common import template_utils
|
||||
|
||||
|
||||
class BasicResourcesTest(scenario_base.ScenarioTestsBase):
|
||||
|
@ -38,6 +40,7 @@ class BasicResourcesTest(scenario_base.ScenarioTestsBase):
|
|||
server_networks = self._stack_output(stack, 'server_networks')
|
||||
self.assertIn(self.private_net_name, server_networks)
|
||||
|
||||
@decorators.idempotent_id('bd151ea4-2dcd-4440-9bf0-eff63a98e5d4')
|
||||
def test_base_resources_integration(self):
|
||||
"""Define test for base resources interation from core porjects
|
||||
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
|
||||
import json
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.common import exceptions
|
||||
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||
|
||||
|
@ -92,6 +94,7 @@ class CfnInitIntegrationTest(scenario_base.ScenarioTestsBase):
|
|||
self._log_console_output(servers=[server])
|
||||
raise
|
||||
|
||||
@decorators.idempotent_id('3f7726fc-a41b-40ca-ab38-51e2973f146a')
|
||||
def test_server_cfn_init(self):
|
||||
"""Check cfn-init and cfn-signal availability on the created server.
|
||||
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
|
||||
import json
|
||||
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.common import exceptions
|
||||
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||
|
||||
|
@ -75,10 +77,12 @@ class ServerSignalIntegrationTest(scenario_base.ScenarioTestsBase):
|
|||
self.fail(
|
||||
"Timed out waiting for %s to become reachable" % server_ip)
|
||||
|
||||
@decorators.idempotent_id('8da0f6cc-60e6-4298-9e54-e1f905c5552a')
|
||||
def test_server_signal_userdata_format_raw(self):
|
||||
self._test_server_signal(image=self.conf.minimal_image_ref,
|
||||
flavor=self.conf.minimal_instance_type)
|
||||
|
||||
@decorators.idempotent_id('3d753d42-7c16-4a0e-8f73-875881826626')
|
||||
def test_server_signal_userdata_format_software_config(self):
|
||||
if not self.conf.image_ref:
|
||||
raise self.skipException("No image configured to test")
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
from heatclient.common import template_utils
|
||||
import six
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||
|
||||
|
@ -132,6 +133,7 @@ class SoftwareConfigIntegrationTest(scenario_base.ScenarioTestsBase):
|
|||
dep1_dep.updated_time,
|
||||
dep1_dep.creation_time)
|
||||
|
||||
@decorators.idempotent_id('fb2afe23-d1a8-45fc-bf8d-b18fc8412972')
|
||||
def test_server_software_config(self):
|
||||
"""Check that passed files with scripts are executed on created server.
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
from cinderclient import exceptions as cinder_exceptions
|
||||
from oslo_log import log as logging
|
||||
import six
|
||||
from tempest.lib import decorators
|
||||
|
||||
from heat_tempest_plugin.common import exceptions
|
||||
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||
|
@ -98,6 +99,7 @@ class VolumeBackupRestoreIntegrationTest(scenario_base.ScenarioTestsBase):
|
|||
self.volume_client.volumes.get,
|
||||
volume_id2)
|
||||
|
||||
@decorators.idempotent_id('c3416735-87bf-4478-85c5-b3823819eb19')
|
||||
def test_cinder_volume_create_backup_restore(self):
|
||||
"""Ensure the 'Snapshot' deletion policy works.
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
other:
|
||||
- |
|
||||
We can now run check-uuid to check if we give tempest id for all tempest
|
||||
tests (not includes tests which run with gabbits) by running
|
||||
``tox -e pep8``. Also now you can run ``tox -e uuidgen`` for automatically
|
||||
add ids to tests.
|
12
tox.ini
12
tox.ini
|
@ -12,7 +12,17 @@ commands = bash -c 'if [ ! -d ./.testrepository ] ; then testr init ; fi'
|
|||
testr run {posargs}
|
||||
|
||||
[testenv:pep8]
|
||||
commands = flake8
|
||||
setenv =
|
||||
PYTHONPATH = .
|
||||
commands =
|
||||
flake8
|
||||
check-uuid --package heat_tempest_plugin
|
||||
|
||||
[testenv:uuidgen]
|
||||
setenv =
|
||||
PYTHONPATH = .
|
||||
commands =
|
||||
check-uuid --fix --package heat_tempest_plugin
|
||||
|
||||
[testenv:docs]
|
||||
deps = -r{toxinidir}/requirements.txt
|
||||
|
|
Loading…
Reference in New Issue