Adding description for testcases - compute part7

When Tempest is used in customer site, often we are required to
provide a testcase list including testcase names and descriptions.
Now no this kind of doc is available, so we can add descriptions
with the format of doc string for every testcase, so later we
can generata such a testcase description list.

There are hundreds of testcases missing descriptions, so we can
add them gradually, and limit the modified files in one patch
for the convenience of reviewing.

Change-Id: I26f0b5dc72c3b1943e913e63b36e2beb4af1cede
partially-implements: blueprint testcase-description
This commit is contained in:
zhufl 2020-08-12 13:47:21 +08:00
parent 24961f6244
commit 36ef089e18
11 changed files with 131 additions and 70 deletions

View File

@ -21,6 +21,7 @@ CONF = config.CONF
class CertificatesV2TestJSON(base.BaseV2ComputeTest):
"""Test Certificates API"""
@classmethod
def skip_checks(cls):
@ -30,10 +31,10 @@ class CertificatesV2TestJSON(base.BaseV2ComputeTest):
@decorators.idempotent_id('c070a441-b08e-447e-a733-905909535b1b')
def test_create_root_certificate(self):
# create certificates
"""Test creating root certificate"""
self.certificates_client.create_certificate()
@decorators.idempotent_id('3ac273d0-92d2-4632-bdfc-afbc21d4606c')
def test_get_root_certificate(self):
# get the root certificate
"""Test getting root certificate details"""
self.certificates_client.show_certificate('root')

View File

@ -19,11 +19,16 @@ from tempest.lib import decorators
class KeyPairsV2TestJSON(base.BaseKeypairTest):
"""Test keypairs API with compute microversion less than 2.2"""
max_microversion = '2.1'
@decorators.idempotent_id('1d1dbedb-d7a0-432a-9d09-83f543c3c19b')
def test_keypairs_create_list_delete(self):
# Keypairs created should be available in the response list
"""Test create/list/delete keypairs
Keypairs created should be available in the response list
"""
# Create 3 keypairs
key_list = list()
for _ in range(3):
@ -48,7 +53,7 @@ class KeyPairsV2TestJSON(base.BaseKeypairTest):
@decorators.idempotent_id('6c1d3123-4519-4742-9194-622cb1714b7d')
def test_keypair_create_delete(self):
# Keypair should be created, verified and deleted
"""Test create/delete keypair"""
k_name = data_utils.rand_name('keypair')
keypair = self.create_keypair(k_name)
key_name = keypair['name']
@ -58,7 +63,7 @@ class KeyPairsV2TestJSON(base.BaseKeypairTest):
@decorators.idempotent_id('a4233d5d-52d8-47cc-9a25-e1864527e3df')
def test_get_keypair_detail(self):
# Keypair should be created, Got details by name and deleted
"""Test getting keypair detail by keypair name"""
k_name = data_utils.rand_name('keypair')
self.create_keypair(k_name)
keypair_detail = self.keypairs_client.show_keypair(k_name)['keypair']
@ -68,7 +73,7 @@ class KeyPairsV2TestJSON(base.BaseKeypairTest):
@decorators.idempotent_id('39c90c6a-304a-49dd-95ec-2366129def05')
def test_keypair_create_with_pub_key(self):
# Keypair should be created with a given public key
"""Test creating keypair with a given public key"""
k_name = data_utils.rand_name('keypair')
pub_key = ("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCs"
"Ne3/1ILNCqFyfYWDeTKLD6jEXC2OQHLmietMWW+/vd"

View File

@ -21,10 +21,12 @@ from tempest.lib import exceptions as lib_exc
class KeyPairsNegativeTestJSON(base.BaseKeypairTest):
"""Negative tests of keypairs API"""
@decorators.attr(type=['negative'])
@decorators.idempotent_id('29cca892-46ae-4d48-bc32-8fe7e731eb81')
def test_keypair_create_with_invalid_pub_key(self):
# Keypair should not be created with a non RSA public key
"""Test keypair should not be created with a non RSA public key"""
pub_key = "ssh-rsa JUNK nova@ubuntu"
self.assertRaises(lib_exc.BadRequest,
self.create_keypair, pub_key=pub_key)
@ -32,7 +34,7 @@ class KeyPairsNegativeTestJSON(base.BaseKeypairTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('7cc32e47-4c42-489d-9623-c5e2cb5a2fa5')
def test_keypair_delete_nonexistent_key(self):
# Non-existent key deletion should throw a proper error
"""Test non-existent key deletion should throw a proper error"""
k_name = data_utils.rand_name("keypair-non-existent")
self.assertRaises(lib_exc.NotFound,
self.keypairs_client.delete_keypair,
@ -41,7 +43,7 @@ class KeyPairsNegativeTestJSON(base.BaseKeypairTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('dade320e-69ca-42a9-ba4a-345300f127e0')
def test_create_keypair_with_empty_public_key(self):
# Keypair should not be created with an empty public key
"""Test keypair should not be created with an empty public key"""
pub_key = ' '
self.assertRaises(lib_exc.BadRequest, self.create_keypair,
pub_key=pub_key)
@ -49,7 +51,7 @@ class KeyPairsNegativeTestJSON(base.BaseKeypairTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('fc100c19-2926-4b9c-8fdc-d0589ee2f9ff')
def test_create_keypair_when_public_key_bits_exceeds_maximum(self):
# Keypair should not be created when public key bits are too long
"""Test keypair should not be created when public key are too long"""
pub_key = 'ssh-rsa ' + 'A' * 2048 + ' openstack@ubuntu'
self.assertRaises(lib_exc.BadRequest, self.create_keypair,
pub_key=pub_key)
@ -57,7 +59,7 @@ class KeyPairsNegativeTestJSON(base.BaseKeypairTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('0359a7f1-f002-4682-8073-0c91e4011b7c')
def test_create_keypair_with_duplicate_name(self):
# Keypairs with duplicate names should not be created
"""Test keypairs with duplicate names should not be created"""
k_name = data_utils.rand_name('keypair')
self.keypairs_client.create_keypair(name=k_name)
# Now try the same keyname to create another key
@ -68,14 +70,14 @@ class KeyPairsNegativeTestJSON(base.BaseKeypairTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('1398abe1-4a84-45fb-9294-89f514daff00')
def test_create_keypair_with_empty_name_string(self):
# Keypairs with name being an empty string should not be created
"""Test keypairs with empty name should not be created"""
self.assertRaises(lib_exc.BadRequest, self.create_keypair,
'')
@decorators.attr(type=['negative'])
@decorators.idempotent_id('3faa916f-779f-4103-aca7-dc3538eee1b7')
def test_create_keypair_with_long_keynames(self):
# Keypairs with name longer than 255 chars should not be created
"""Test keypairs with name longer than 255 should not be created"""
k_name = 'keypair-'.ljust(260, '0')
self.assertRaises(lib_exc.BadRequest, self.create_keypair,
k_name)
@ -83,7 +85,7 @@ class KeyPairsNegativeTestJSON(base.BaseKeypairTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('45fbe5e0-acb5-49aa-837a-ff8d0719db91')
def test_create_keypair_invalid_name(self):
# Keypairs with name being an invalid name should not be created
"""Test keypairs with an invalid name should not be created"""
k_name = r'key_/.\@:'
self.assertRaises(lib_exc.BadRequest, self.create_keypair,
k_name)

View File

@ -18,6 +18,8 @@ from tempest.lib import decorators
class KeyPairsV22TestJSON(test_keypairs.KeyPairsV2TestJSON):
"""Test keypairs API with compute microversion greater than 2.1"""
min_microversion = '2.2'
max_microversion = 'latest'
@ -43,9 +45,11 @@ class KeyPairsV22TestJSON(test_keypairs.KeyPairsV2TestJSON):
@decorators.idempotent_id('8726fa85-7f98-4b20-af9e-f710a4f3391c')
def test_keypairsv22_create_list_show(self):
"""Test create/list/show keypair"""
self._test_keypairs_create_list_show()
@decorators.idempotent_id('89d59d43-f735-441a-abcf-0601727f47b6')
def test_keypairsv22_create_list_show_with_type(self):
"""Test create/list/show keypair with keypair type"""
keypair_type = 'x509'
self._test_keypairs_create_list_show(keypair_type=keypair_type)

View File

@ -18,6 +18,10 @@ from tempest.lib import decorators
class SecurityGroupRulesTestJSON(base.BaseSecurityGroupsTest):
"""Test security group rules API
Test security group rules API with compute microversion less than 2.36.
"""
@classmethod
def setup_clients(cls):
@ -55,8 +59,7 @@ class SecurityGroupRulesTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type='smoke')
@decorators.idempotent_id('850795d7-d4d3-4e55-b527-a774c0123d3a')
def test_security_group_rules_create(self):
# Positive test: Creation of Security Group rule
# should be successful
"""Test creating security group rules"""
# Creating a Security Group to add rules to it
security_group = self.create_security_group()
securitygroup_id = security_group['id']
@ -72,10 +75,7 @@ class SecurityGroupRulesTestJSON(base.BaseSecurityGroupsTest):
@decorators.idempotent_id('7a01873e-3c38-4f30-80be-31a043cfe2fd')
def test_security_group_rules_create_with_optional_cidr(self):
# Positive test: Creation of Security Group rule
# with optional argument cidr
# should be successful
"""Test creating security group rules with optional field cidr"""
# Creating a Security Group to add rules to it
security_group = self.create_security_group()
parent_group_id = security_group['id']
@ -94,10 +94,7 @@ class SecurityGroupRulesTestJSON(base.BaseSecurityGroupsTest):
@decorators.idempotent_id('7f5d2899-7705-4d4b-8458-4505188ffab6')
def test_security_group_rules_create_with_optional_group_id(self):
# Positive test: Creation of Security Group rule
# with optional argument group_id
# should be successful
"""Test creating security group rules with optional field group id"""
# Creating a Security Group to add rules to it
security_group = self.create_security_group()
parent_group_id = security_group['id']
@ -122,8 +119,7 @@ class SecurityGroupRulesTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type='smoke')
@decorators.idempotent_id('a6154130-5a55-4850-8be4-5e9e796dbf17')
def test_security_group_rules_list(self):
# Positive test: Created Security Group rules should be
# in the list of all rules
"""Test listing security group rules"""
# Creating a Security Group to add rules to it
security_group = self.create_security_group()
securitygroup_id = security_group['id']
@ -159,7 +155,7 @@ class SecurityGroupRulesTestJSON(base.BaseSecurityGroupsTest):
@decorators.idempotent_id('fc5c5acf-2091-43a6-a6ae-e42760e9ffaf')
def test_security_group_rules_delete_when_peer_group_deleted(self):
# Positive test:rule will delete when peer group deleting
"""Test security group rule gets deleted when peer group is deleted"""
# Creating a Security Group to add rules to it
security_group = self.create_security_group()
sg1_id = security_group['id']

View File

@ -20,6 +20,11 @@ from tempest.lib import exceptions as lib_exc
class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
"""Negative tests of security group rules API
Negative tests of security group rules API with compute microversion
less than 2.36.
"""
@classmethod
def setup_clients(cls):
@ -29,8 +34,11 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('1d507e98-7951-469b-82c3-23f1e6b8c254')
def test_create_security_group_rule_with_non_existent_id(self):
# Negative test: Creation of Security Group rule should FAIL
# with non existent Parent group id
"""Test creating security group rule with non existent parent group
Negative test: Creation of security group rule should fail
with non existent parent group id.
"""
# Adding rules to the non existent Security Group id
parent_group_id = self.generate_random_security_group_id()
ip_protocol = 'tcp'
@ -45,8 +53,11 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('2244d7e4-adb7-4ecb-9930-2d77e123ce4f')
def test_create_security_group_rule_with_invalid_id(self):
# Negative test: Creation of Security Group rule should FAIL
# with Parent group id which is not integer
"""Test creating security group rule with invalid parent group id
Negative test: Creation of security group rule should fail
with parent group id which is not integer.
"""
# Adding rules to the non int Security Group id
parent_group_id = data_utils.rand_name('non_int_id')
ip_protocol = 'tcp'
@ -61,7 +72,7 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('8bd56d02-3ffa-4d67-9933-b6b9a01d6089')
def test_create_security_group_rule_duplicate(self):
# Negative test: Create Security Group rule duplicate should fail
"""Test creating duplicate security group rule should fail"""
# Creating a Security Group to add rule to it
sg = self.create_security_group()
# Adding rules to the created Security Group
@ -85,8 +96,11 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('84c81249-9f6e-439c-9bbf-cbb0d2cddbdf')
def test_create_security_group_rule_with_invalid_ip_protocol(self):
# Negative test: Creation of Security Group rule should FAIL
# with invalid ip_protocol
"""Test creating security group rule with invalid ip protocol
Negative test: Creation of security group rule should fail
with invalid ip_protocol.
"""
# Creating a Security Group to add rule to it
sg = self.create_security_group()
# Adding rules to the created Security Group
@ -104,8 +118,11 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('12bbc875-1045-4f7a-be46-751277baedb9')
def test_create_security_group_rule_with_invalid_from_port(self):
# Negative test: Creation of Security Group rule should FAIL
# with invalid from_port
"""Test creating security group rule with invalid from_port
Negative test: Creation of security group rule should fail
with invalid from_port.
"""
# Creating a Security Group to add rule to it
sg = self.create_security_group()
# Adding rules to the created Security Group
@ -122,8 +139,11 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('ff88804d-144f-45d1-bf59-dd155838a43a')
def test_create_security_group_rule_with_invalid_to_port(self):
# Negative test: Creation of Security Group rule should FAIL
# with invalid to_port
"""Test creating security group rule with invalid to_port
Negative test: Creation of security group rule should fail
with invalid to_port.
"""
# Creating a Security Group to add rule to it
sg = self.create_security_group()
# Adding rules to the created Security Group
@ -140,8 +160,11 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('00296fa9-0576-496a-ae15-fbab843189e0')
def test_create_security_group_rule_with_invalid_port_range(self):
# Negative test: Creation of Security Group rule should FAIL
# with invalid port range.
"""Test creating security group rule with invalid port range
Negative test: Creation of security group rule should fail
with invalid port range.
"""
# Creating a Security Group to add rule to it.
sg = self.create_security_group()
# Adding a rule to the created Security Group
@ -158,8 +181,7 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('56fddcca-dbb8-4494-a0db-96e9f869527c')
def test_delete_security_group_rule_with_non_existent_id(self):
# Negative test: Deletion of Security Group rule should be FAIL
# with non existent id
"""Test deleting non existent security group rule should fail"""
non_existent_rule_id = self.generate_random_security_group_id()
self.assertRaises(lib_exc.NotFound,
self.rules_client.delete_security_group_rule,

View File

@ -21,6 +21,7 @@ from tempest.lib import exceptions as lib_exc
class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest):
"""Test security groups API with compute microversion less than 2.36"""
@classmethod
def setup_clients(cls):
@ -30,7 +31,10 @@ class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type='smoke')
@decorators.idempotent_id('eb2b087d-633d-4d0d-a7bd-9e6ba35b32de')
def test_security_groups_create_list_delete(self):
# Positive test:Should return the list of Security Groups
"""Test create/list/delete security groups
Positive test: Should return the list of security groups.
"""
# Create 3 Security Groups
security_group_list = []
for _ in range(3):
@ -60,9 +64,11 @@ class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest):
@decorators.idempotent_id('ecc0da4a-2117-48af-91af-993cca39a615')
def test_security_group_create_get_delete(self):
# Security Group should be created, fetched and deleted
# with char space between name along with
# leading and trailing spaces
"""Test create/get/delete security group
Security group should be created, fetched and deleted
with char space between name along with leading and trailing spaces.
"""
s_name = ' %s ' % data_utils.rand_name('securitygroup ')
securitygroup = self.create_security_group(name=s_name)
securitygroup_name = securitygroup['name']
@ -80,8 +86,11 @@ class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest):
@decorators.idempotent_id('fe4abc0d-83f5-4c50-ad11-57a1127297a2')
def test_server_security_groups(self):
# Checks that security groups may be added and linked to a server
# and not deleted if the server is active.
"""Test adding security groups to a server
Checks that security groups may be added and linked to a server
and not deleted if the server is active.
"""
# Create a couple security groups that we will use
# for the server resource this test creates
sg = self.create_security_group()
@ -121,7 +130,7 @@ class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest):
@decorators.idempotent_id('7d4e1d3c-3209-4d6d-b020-986304ebad1f')
def test_update_security_groups(self):
# Update security group name and description
"""Test updating security group name and description"""
# Create a security group
securitygroup = self.create_security_group()
securitygroup_id = securitygroup['id']
@ -139,6 +148,11 @@ class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest):
@decorators.idempotent_id('79517d60-535a-438f-af3d-e6feab1cbea7')
def test_list_security_groups_by_server(self):
"""Test listing security groups by server
Create security groups and add them to a server, then list security
groups by server, the added security groups should be in the list.
"""
# Create a couple security groups that we will use
# for the server resource this test creates
sg = self.create_security_group()

View File

@ -25,6 +25,11 @@ CONF = config.CONF
class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
"""Negative tests of security groups API
Negative tests of security groups API with compute microversion
less than 2.36.
"""
@classmethod
def setup_clients(cls):
@ -34,8 +39,7 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('673eaec1-9b3e-48ed-bdf1-2786c1b9661c')
def test_security_group_get_nonexistent_group(self):
# Negative test:Should not be able to GET the details
# of non-existent Security Group
"""Test getting non existent security group details should fail"""
non_exist_id = self.generate_random_security_group_id()
self.assertRaises(lib_exc.NotFound, self.client.show_security_group,
non_exist_id)
@ -45,8 +49,12 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('1759c3cb-b0fc-44b7-86ce-c99236be911d')
def test_security_group_create_with_invalid_group_name(self):
# Negative test: Security Group should not be created with group name
# as an empty string/with white spaces/chars more than 255
"""Test creating security group with invalid group name should fail
Negative test: Security group should not be created with group name
as an empty string, or group name with white spaces, or group name
with chars more than 255.
"""
s_description = data_utils.rand_name('description')
# Create Security Group with empty string as group name
self.assertRaises(lib_exc.BadRequest,
@ -67,9 +75,12 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('777b6f14-aca9-4758-9e84-38783cfa58bc')
def test_security_group_create_with_invalid_group_description(self):
# Negative test: Security Group should not be created with description
# longer than 255 chars. Empty description is allowed by the API
# reference, however.
"""Test creating security group with invalid group description
Negative test: Security group should not be created with description
longer than 255 chars. Empty description is allowed by the API
reference, however.
"""
s_name = data_utils.rand_name('securitygroup')
# Create Security Group with group description longer than 255 chars
s_description = 'description-'.ljust(260, '0')
@ -82,8 +93,7 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
"Neutron allows duplicate names for security groups")
@decorators.attr(type=['negative'])
def test_security_group_create_with_duplicate_name(self):
# Negative test:Security Group with duplicate name should not
# be created
"""Test creating security group with duplicate name should fail"""
s_name = data_utils.rand_name('securitygroup')
s_description = data_utils.rand_name('description')
self.create_security_group(name=s_name, description=s_description)
@ -95,7 +105,7 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('36a1629f-c6da-4a26-b8b8-55e7e5d5cd58')
def test_delete_the_default_security_group(self):
# Negative test:Deletion of the "default" Security Group should Fail
"""Test deleting "default" security group should fail"""
default_security_group_id = None
body = self.client.list_security_groups()['security_groups']
for i in range(len(body)):
@ -110,7 +120,7 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('6727c00b-214c-4f9e-9a52-017ac3e98411')
def test_delete_nonexistent_security_group(self):
# Negative test:Deletion of a non-existent Security Group should fail
"""Test deleting non existent security group should fail"""
non_exist_id = self.generate_random_security_group_id()
self.assertRaises(lib_exc.NotFound,
self.client.delete_security_group, non_exist_id)
@ -118,8 +128,7 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('1438f330-8fa4-4aeb-8a94-37c250106d7f')
def test_delete_security_group_without_passing_id(self):
# Negative test:Deletion of a Security Group with out passing ID
# should Fail
"""Test deleting security group passing empty group id should fail"""
self.assertRaises(lib_exc.NotFound,
self.client.delete_security_group, '')
@ -128,7 +137,7 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
"Neutron does not check the security group ID")
@decorators.attr(type=['negative'])
def test_update_security_group_with_invalid_sg_id(self):
# Update security_group with invalid sg_id should fail
"""Test updating security group with invalid group id should fail"""
s_name = data_utils.rand_name('sg')
s_description = data_utils.rand_name('description')
# Create a non int sg_id
@ -142,7 +151,7 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
"Neutron does not check the security group name")
@decorators.attr(type=['negative'])
def test_update_security_group_with_invalid_sg_name(self):
# Update security_group with invalid sg_name should fail
"""Test updating security group to invalid group name should fail"""
securitygroup = self.create_security_group()
securitygroup_id = securitygroup['id']
# Update Security Group with group name longer than 255 chars
@ -156,7 +165,7 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
"Neutron does not check the security group description")
@decorators.attr(type=['negative'])
def test_update_security_group_with_invalid_sg_des(self):
# Update security_group with invalid sg_des should fail
"""Test updating security group to invalid description should fail"""
securitygroup = self.create_security_group()
securitygroup_id = securitygroup['id']
# Update Security Group with group description longer than 255 chars
@ -168,7 +177,7 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
@decorators.idempotent_id('27edee9c-873d-4da6-a68a-3c256efebe8f')
def test_update_non_existent_security_group(self):
# Update a non-existent Security Group should Fail
"""Test updating a non existent security group should fail"""
non_exist_id = self.generate_random_security_group_id()
s_name = data_utils.rand_name('sg')
s_description = data_utils.rand_name('description')

View File

@ -27,10 +27,11 @@ LOG = logging.getLogger(__name__)
class ExtensionsTest(base.BaseV2ComputeTest):
"""Tests Compute Extensions API"""
@decorators.idempotent_id('3bb27738-b759-4e0d-a5fa-37d7a6df07d1')
def test_list_extensions(self):
# List of all extensions
"""Test listing compute extensions"""
if not CONF.compute_feature_enabled.api_extensions:
raise self.skipException('There are not any extensions configured')
extensions = self.extensions_client.list_extensions()['extensions']
@ -50,6 +51,6 @@ class ExtensionsTest(base.BaseV2ComputeTest):
@decorators.idempotent_id('05762f39-bdfa-4cdb-9b46-b78f8e78e2fd')
@utils.requires_ext(extension='os-consoles', service='compute')
def test_get_extension(self):
# get the specified extensions
"""Test getting specified compute extension details"""
extension = self.extensions_client.show_extension('os-consoles')
self.assertEqual('os-consoles', extension['extension']['alias'])

View File

@ -20,6 +20,7 @@ CONF = config.CONF
class ComputeNetworksTest(base.BaseV2ComputeTest):
"""Test compute networks API with compute microversion less than 2.36"""
max_microversion = '2.35'
@classmethod
@ -35,5 +36,6 @@ class ComputeNetworksTest(base.BaseV2ComputeTest):
@decorators.idempotent_id('3fe07175-312e-49a5-a623-5f52eeada4c2')
def test_list_networks(self):
"""Test listing networks using compute networks API"""
networks = self.client.list_networks()['networks']
self.assertNotEmpty(networks, "No networks found.")

View File

@ -18,6 +18,8 @@ from tempest.lib import decorators
class ComputeTenantNetworksTest(base.BaseV2ComputeTest):
"""Test compute tenant networks API with microversion less than 2.36"""
max_microversion = '2.35'
@classmethod
@ -34,8 +36,11 @@ class ComputeTenantNetworksTest(base.BaseV2ComputeTest):
@decorators.idempotent_id('edfea98e-bbe3-4c7a-9739-87b986baff26')
@utils.services('network')
def test_list_show_tenant_networks(self):
# Fetch all networks that are visible to the tenant: this may include
# shared and external networks
"""Test list/show tenant networks
Fetch all networks that are visible to the tenant: this may include
shared and external networks.
"""
tenant_networks = [
n['id'] for n in self.client.list_tenant_networks()['networks']
]