Merge "Pass resource_name_prefix from tests"

This commit is contained in:
Zuul 2023-12-11 12:40:47 +00:00 committed by Gerrit Code Review
commit ab3686d28d
149 changed files with 1416 additions and 585 deletions

View File

@ -51,7 +51,9 @@ class AgentsAdminTestJSON(base.BaseV2ComputeAdminTest):
# If you try to create an agent with the same hypervisor,
# os and architecture as an existing agent, Nova will return
# an HTTPConflict or HTTPServerError.
kwargs[rand_key] = data_utils.rand_name(kwargs[rand_key])
kwargs[rand_key] = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=kwargs[rand_key])
return kwargs
@decorators.idempotent_id('1fc6bdc8-0b6d-4cc7-9f30-9b04fabe5b90')

View File

@ -15,10 +15,13 @@
from tempest.api.compute import base
from tempest.common import tempest_fixtures as fixtures
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class AggregatesAdminNegativeTestJSON(base.BaseV2ComputeAdminTest):
"""Tests Aggregates API that require admin privileges"""
@ -40,7 +43,9 @@ class AggregatesAdminNegativeTestJSON(base.BaseV2ComputeAdminTest):
if v['status'] == 'enabled' and v['state'] == 'up']
def _create_test_aggregate(self):
aggregate_name = data_utils.rand_name(self.aggregate_name_prefix)
aggregate_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.aggregate_name_prefix)
aggregate = (self.client.create_aggregate(name=aggregate_name)
['aggregate'])
self.addCleanup(self.client.delete_aggregate, aggregate['id'])
@ -50,7 +55,9 @@ class AggregatesAdminNegativeTestJSON(base.BaseV2ComputeAdminTest):
@decorators.idempotent_id('86a1cb14-da37-4a70-b056-903fd56dfe29')
def test_aggregate_create_as_user(self):
"""Regular user is not allowed to create an aggregate"""
aggregate_name = data_utils.rand_name(self.aggregate_name_prefix)
aggregate_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.aggregate_name_prefix)
self.assertRaises(lib_exc.Forbidden,
self.aggregates_client.create_aggregate,
name=aggregate_name)
@ -125,7 +132,9 @@ class AggregatesAdminNegativeTestJSON(base.BaseV2ComputeAdminTest):
def test_aggregate_add_non_exist_host(self):
"""Adding a non-exist host to an aggregate should fail"""
while True:
non_exist_host = data_utils.rand_name('nonexist_host')
non_exist_host = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name='nonexist_host')
if non_exist_host not in self.hosts:
break
aggregate = self._create_test_aggregate()

View File

@ -51,7 +51,8 @@ class ServersWithSpecificFlavorTestJSON(base.BaseV2ComputeAdminTest):
def create_flavor_with_ephemeral(ephem_disk):
name = 'flavor_with_ephemeral_%s' % ephem_disk
flavor_name = data_utils.rand_name(name)
flavor_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name=name)
ram = flavor_base['ram']
vcpus = flavor_base['vcpus']

View File

@ -16,10 +16,13 @@
import uuid
from tempest.api.compute import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class FlavorsAdminTestJSON(base.BaseV2ComputeAdminTest):
"""Tests Flavors API Create and Delete that require admin privileges"""
@ -76,7 +79,9 @@ class FlavorsAdminTestJSON(base.BaseV2ComputeAdminTest):
This operation requires the user to have 'admin' role
"""
flavor_name = data_utils.rand_name(self.flavor_name_prefix)
flavor_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.flavor_name_prefix)
# Create the flavor
self.create_flavor(name=flavor_name,
@ -107,7 +112,9 @@ class FlavorsAdminTestJSON(base.BaseV2ComputeAdminTest):
self.assertEqual(flavor['OS-FLV-EXT-DATA:ephemeral'], 0)
self.assertEqual(flavor['os-flavor-access:is_public'], True)
flavor_name = data_utils.rand_name(self.flavor_name_prefix)
flavor_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.flavor_name_prefix)
new_flavor_id = data_utils.rand_int_id(start=1000)
# Create the flavor
@ -143,7 +150,9 @@ class FlavorsAdminTestJSON(base.BaseV2ComputeAdminTest):
tenant is not automatically added access list.
This operation requires the user to have 'admin' role
"""
flavor_name = data_utils.rand_name(self.flavor_name_prefix)
flavor_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.flavor_name_prefix)
# Create the flavor
self.create_flavor(name=flavor_name,
@ -178,7 +187,9 @@ class FlavorsAdminTestJSON(base.BaseV2ComputeAdminTest):
Try to List/Get flavor with another user
"""
flavor_name = data_utils.rand_name(self.flavor_name_prefix)
flavor_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.flavor_name_prefix)
# Create the flavor
self.create_flavor(name=flavor_name,
@ -192,8 +203,11 @@ class FlavorsAdminTestJSON(base.BaseV2ComputeAdminTest):
@decorators.idempotent_id('fb9cbde6-3a0e-41f2-a983-bdb0a823c44e')
def test_is_public_string_variations(self):
"""Test creating public and non public flavors"""
flavor_name_not_public = data_utils.rand_name(self.flavor_name_prefix)
flavor_name_public = data_utils.rand_name(self.flavor_name_prefix)
prefix = CONF.resource_name_prefix
flavor_name_not_public = data_utils.rand_name(
prefix=prefix, name=self.flavor_name_prefix)
flavor_name_public = data_utils.rand_name(
prefix=prefix, name=self.flavor_name_prefix)
# Create a non public flavor
self.create_flavor(name=flavor_name_not_public,

View File

@ -14,9 +14,12 @@
# under the License.
from tempest.api.compute import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class FlavorsExtraSpecsTestJSON(base.BaseV2ComputeAdminTest):
"""Tests Flavor Extra Spec API extension.
@ -28,7 +31,8 @@ class FlavorsExtraSpecsTestJSON(base.BaseV2ComputeAdminTest):
@classmethod
def resource_setup(cls):
super(FlavorsExtraSpecsTestJSON, cls).resource_setup()
flavor_name = data_utils.rand_name('test_flavor')
flavor_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='test_flavor')
ram = 512
vcpus = 1
disk = 10
@ -139,7 +143,9 @@ class FlavorMetadataValidation(base.BaseV2ComputeAdminTest):
@decorators.idempotent_id('d3114f03-b0f2-4dc7-be11-70c0abc178b3')
def test_flavor_update_with_custom_namespace(self):
"""Test flavor creation with a custom namespace, key and value"""
flavor_name = data_utils.rand_name(self.flavor_name_prefix)
flavor_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.flavor_name_prefix)
flavor_id = self.create_flavor(ram=self.ram,
vcpus=self.vcpus,
disk=self.disk,

View File

@ -15,10 +15,13 @@
# under the License.
from tempest.api.compute import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class FlavorsExtraSpecsNegativeTestJSON(base.BaseV2ComputeAdminTest):
"""Negative Tests Flavor Extra Spec API extension.
@ -30,7 +33,8 @@ class FlavorsExtraSpecsNegativeTestJSON(base.BaseV2ComputeAdminTest):
def resource_setup(cls):
super(FlavorsExtraSpecsNegativeTestJSON, cls).resource_setup()
flavor_name = data_utils.rand_name('test_flavor')
flavor_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='test_flavor')
ram = 512
vcpus = 1
disk = 10

View File

@ -14,9 +14,12 @@
# under the License.
from tempest.api.compute.keypairs import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class KeyPairsV210TestJSON(base.BaseKeypairTest):
"""Tests KeyPairs API with microversion higher than 2.9"""
@ -33,7 +36,8 @@ class KeyPairsV210TestJSON(base.BaseKeypairTest):
def _create_and_check_keypairs(self, user_id):
key_list = list()
for _ in range(2):
k_name = data_utils.rand_name('keypair')
k_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='keypair')
keypair = self.create_keypair(k_name,
keypair_type='ssh',
user_id=user_id,

View File

@ -214,7 +214,8 @@ class LiveMigrationTest(LiveMigrationTestBase):
self.assertEqual(volume_id1, volume_id2)
def _create_net_subnet(self, name, cidr):
net_name = data_utils.rand_name(name=name)
net_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name=name)
net = self.networks_client.create_network(name=net_name)['network']
self.addClassResourceCleanup(
self.networks_client.delete_network, net['id'])
@ -228,7 +229,8 @@ class LiveMigrationTest(LiveMigrationTestBase):
return net
def _create_port(self, network_id, name):
name = data_utils.rand_name(name=name)
name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name=name)
port = self.ports_client.create_port(name=name,
network_id=network_id)['port']
self.addClassResourceCleanup(test_utils.call_and_ignore_notfound_exc,
@ -244,7 +246,8 @@ class LiveMigrationTest(LiveMigrationTestBase):
subport = self._create_port(network_id=net['id'], name='subport')
trunk = self.trunks_client.create_trunk(
name=data_utils.rand_name('trunk'),
name=data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='trunk'),
port_id=parent['id'],
sub_ports=[{"segmentation_id": 42, "port_id": subport['id'],
"segmentation_type": "vlan"}]

View File

@ -43,7 +43,8 @@ class LiveMigrationNegativeTest(base.BaseV2ComputeAdminTest):
@decorators.idempotent_id('7fb7856e-ae92-44c9-861a-af62d7830bcb')
def test_invalid_host_for_migration(self):
"""Test migrating to an invalid host should not change the status"""
target_host = data_utils.rand_name('host')
target_host = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='host')
server = self.create_test_server(wait_until="ACTIVE")
self.assertRaises(lib_exc.BadRequest, self._migrate_server_to,

View File

@ -74,7 +74,9 @@ class MigrationsAdminTest(base.BaseV2ComputeAdminTest):
flavor = self.admin_flavors_client.show_flavor(
self.flavor_ref)['flavor']
flavor = self.admin_flavors_client.create_flavor(
name=data_utils.rand_name('test_resize_flavor_'),
name=data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name='test_resize_flavor_'),
ram=flavor['ram'],
disk=flavor['disk'],
vcpus=flavor['vcpus']

View File

@ -43,7 +43,9 @@ class QuotasAdminTestBase(base.BaseV2ComputeAdminTest):
def _get_updated_quotas(self):
# Verify that GET shows the updated quota set of project
project_name = data_utils.rand_name('cpu_quota_project')
project_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name='cpu_quota_project')
project_desc = project_name + '-desc'
project = identity.identity_utils(self.os_admin).create_project(
name=project_name, description=project_desc)
@ -59,7 +61,9 @@ class QuotasAdminTestBase(base.BaseV2ComputeAdminTest):
self.assertEqual(5120, quota_set['ram']['limit'])
# Verify that GET shows the updated quota set of user
user_name = data_utils.rand_name('cpu_quota_user')
user_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name='cpu_quota_user')
password = data_utils.rand_password()
email = user_name + '@testmail.tm'
user = identity.identity_utils(self.os_admin).create_user(
@ -157,7 +161,9 @@ class QuotasAdminTestJSON(QuotasAdminTestBase):
'Legacy quota update not available with unified limits')
def test_delete_quota(self):
"""Test admin can delete the compute quota set for a project"""
project_name = data_utils.rand_name('ram_quota_project')
project_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name='ram_quota_project')
project_desc = project_name + '-desc'
project = identity.identity_utils(self.os_admin).create_project(
name=project_name, description=project_desc)

View File

@ -133,8 +133,9 @@ class QuotasSecurityGroupAdminNegativeTest(QuotasAdminNegativeTestBase):
# when we reach limit maxSecurityGroupRules
self._update_quota('security_group_rules', 0)
s_name = data_utils.rand_name('securitygroup')
s_description = data_utils.rand_name('description')
prefix = CONF.resource_name_prefix
s_name = data_utils.rand_name(prefix=prefix, name='securitygroup')
s_description = data_utils.rand_name(prefix=prefix, name='description')
securitygroup = self.sg_client.create_security_group(
name=s_name, description=s_description)['security_group']
self.addCleanup(self.sg_client.delete_security_group,

View File

@ -15,9 +15,12 @@
from tempest.api.compute import base
from tempest.common import utils
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class SecurityGroupsTestAdminJSON(base.BaseV2ComputeAdminTest):
"""Test security groups API that requires admin privilege
@ -57,9 +60,11 @@ class SecurityGroupsTestAdminJSON(base.BaseV2ComputeAdminTest):
# List of all security groups created
security_group_list = []
# Create two security groups for a non-admin tenant
prefix = CONF.resource_name_prefix
for _ in range(2):
name = data_utils.rand_name('securitygroup')
description = data_utils.rand_name('description')
name = data_utils.rand_name(prefix=prefix, name='securitygroup')
description = data_utils.rand_name(
prefix=prefix, name='description')
securitygroup = self.client.create_security_group(
name=name, description=description)['security_group']
self.addCleanup(self._delete_security_group,
@ -69,8 +74,9 @@ class SecurityGroupsTestAdminJSON(base.BaseV2ComputeAdminTest):
client_tenant_id = securitygroup['tenant_id']
# Create two security groups for admin tenant
for _ in range(2):
name = data_utils.rand_name('securitygroup')
description = data_utils.rand_name('description')
name = data_utils.rand_name(prefix=prefix, name='securitygroup')
description = data_utils.rand_name(
prefix=prefix, name='description')
adm_securitygroup = self.adm_client.create_security_group(
name=name, description=description)['security_group']
self.addCleanup(self._delete_security_group,

View File

@ -37,11 +37,14 @@ class ServersAdminTestJSON(base.BaseV2ComputeAdminTest):
def resource_setup(cls):
super(ServersAdminTestJSON, cls).resource_setup()
cls.s1_name = data_utils.rand_name(cls.__name__ + '-server')
prefix = CONF.resource_name_prefix
cls.s1_name = data_utils.rand_name(prefix=prefix,
name=cls.__name__ + '-server')
server = cls.create_test_server(name=cls.s1_name)
cls.s1_id = server['id']
cls.s2_name = data_utils.rand_name(cls.__name__ + '-server')
cls.s2_name = data_utils.rand_name(prefix=prefix,
name=cls.__name__ + '-server')
server = cls.create_test_server(name=cls.s2_name,
wait_until='ACTIVE')
cls.s2_id = server['id']

View File

@ -223,7 +223,9 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest,
`compute.create_test_server` call.
"""
if 'name' not in kwargs:
kwargs['name'] = data_utils.rand_name(cls.__name__ + "-server")
kwargs['name'] = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=cls.__name__ + "-server")
request_version = api_version_request.APIVersionRequest(
cls.request_microversion)
@ -260,10 +262,13 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest,
@classmethod
def create_security_group(cls, name=None, description=None):
prefix = CONF.resource_name_prefix
if name is None:
name = data_utils.rand_name(cls.__name__ + "-securitygroup")
name = data_utils.rand_name(
prefix=prefix, name=cls.__name__ + "-securitygroup")
if description is None:
description = data_utils.rand_name('description')
description = data_utils.rand_name(
prefix=prefix, name='description')
body = cls.security_groups_client.create_security_group(
name=name, description=description)['security_group']
cls.addClassResourceCleanup(
@ -276,7 +281,9 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest,
@classmethod
def create_test_server_group(cls, name="", policy=None):
if not name:
name = data_utils.rand_name(cls.__name__ + "-Server-Group")
name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=cls.__name__ + "-Server-Group")
if cls.is_requested_microversion_compatible('2.63'):
policy = policy or ['affinity']
if not isinstance(policy, list):
@ -324,8 +331,11 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest,
If compute microversion >= 2.36, the returned image response will
be from the image service API rather than the compute image proxy API.
"""
name = kwargs.pop('name',
data_utils.rand_name(cls.__name__ + "-image"))
name = kwargs.pop(
'name',
data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=cls.__name__ + "-image"))
wait_until = kwargs.pop('wait_until', None)
wait_for_server = kwargs.pop('wait_for_server', True)
@ -501,7 +511,9 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest,
if 'size' not in kwargs:
kwargs['size'] = CONF.volume.volume_size
if 'display_name' not in kwargs:
vol_name = data_utils.rand_name(cls.__name__ + '-volume')
vol_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=cls.__name__ + '-volume')
kwargs['display_name'] = vol_name
if image_ref is not None:
kwargs['imageRef'] = image_ref
@ -595,7 +607,8 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest,
def create_volume_snapshot(self, volume_id, name=None, description=None,
metadata=None, force=False):
name = name or data_utils.rand_name(
self.__class__.__name__ + '-snapshot')
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-snapshot')
snapshot = self.snapshots_client.create_snapshot(
volume_id=volume_id,
force=force,
@ -652,7 +665,9 @@ class BaseV2ComputeAdminTest(BaseV2ComputeTest):
def create_flavor(self, ram, vcpus, disk, name=None,
is_public='True', **kwargs):
if name is None:
name = data_utils.rand_name(self.__class__.__name__ + "-flavor")
name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + "-flavor")
id = kwargs.pop('id', data_utils.rand_int_id(start=1000))
client = self.admin_flavors_client
flavor = client.create_flavor(

View File

@ -44,7 +44,8 @@ class FlavorsV2NegativeTest(base.BaseV2ComputeTest):
size = random.randint(1024, 4096)
image_file = io.BytesIO(data_utils.random_bytes(size))
params = {
'name': data_utils.rand_name('image'),
'name': data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='image'),
'container_format': CONF.image.container_formats[0],
'disk_format': CONF.image.disk_formats[0],
'min_ram': min_img_ram,

View File

@ -52,9 +52,12 @@ class ImagesMetadataTestJSON(base.BaseV2ComputeTest):
def resource_setup(cls):
super(ImagesMetadataTestJSON, cls).resource_setup()
cls.image_id = None
image_name_kwargs = {
'prefix': CONF.resource_name_prefix,
'name': 'image'
}
params = {
'name': data_utils.rand_name('image'),
'name': data_utils.rand_name(**image_name_kwargs),
'container_format': 'bare',
'disk_format': 'raw',
'visibility': 'private'

View File

@ -57,7 +57,8 @@ class ImagesTestJSON(base.BaseV2ComputeTest):
# in task_state image_snapshot
self.addCleanup(waiters.wait_for_server_status, self.servers_client,
server['id'], 'ACTIVE')
snapshot_name = data_utils.rand_name('test-snap')
snapshot_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='test-snap')
try:
image = self.create_image_from_server(server['id'],
name=snapshot_name,
@ -83,7 +84,8 @@ class ImagesTestJSON(base.BaseV2ComputeTest):
waiters.wait_for_server_status(self.servers_client,
server['id'], 'SHUTOFF')
self.addCleanup(self.servers_client.delete_server, server['id'])
snapshot_name = data_utils.rand_name('test-snap')
snapshot_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='test-snap')
image = self.create_image_from_server(server['id'],
name=snapshot_name,
wait_until='ACTIVE',
@ -102,7 +104,8 @@ class ImagesTestJSON(base.BaseV2ComputeTest):
server['id'], 'PAUSED')
self.addCleanup(self.servers_client.delete_server, server['id'])
snapshot_name = data_utils.rand_name('test-snap')
snapshot_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='test-snap')
image = self.create_image_from_server(server['id'],
name=snapshot_name,
wait_until='ACTIVE',
@ -121,7 +124,8 @@ class ImagesTestJSON(base.BaseV2ComputeTest):
server['id'], 'SUSPENDED')
self.addCleanup(self.servers_client.delete_server, server['id'])
snapshot_name = data_utils.rand_name('test-snap')
snapshot_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='test-snap')
image = self.create_image_from_server(server['id'],
name=snapshot_name,
wait_until='ACTIVE',
@ -136,7 +140,8 @@ class ImagesTestJSON(base.BaseV2ComputeTest):
self.addCleanup(self.servers_client.delete_server, server['id'])
# Snapshot it
snapshot_name = data_utils.rand_name('test-snap')
snapshot_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='test-snap')
image = self.create_image_from_server(server['id'],
name=snapshot_name,
wait_until='ACTIVE',

View File

@ -66,8 +66,12 @@ class ImagesNegativeTestJSON(ImagesNegativeTestBase):
"""Check server image should not be created with invalid server id"""
# Create a new image with invalid server id
meta = {'image_type': 'test'}
self.assertRaises(lib_exc.NotFound, self.create_image_from_server,
data_utils.rand_name('invalid'), metadata=meta)
self.assertRaises(
lib_exc.NotFound,
self.create_image_from_server,
data_utils.rand_name(prefix=CONF.resource_name_prefix,
name='invalid'),
metadata=meta)
@decorators.attr(type=['negative'])
@decorators.idempotent_id('ec176029-73dc-4037-8d72-2e4ff60cf538')
@ -76,7 +80,8 @@ class ImagesNegativeTestJSON(ImagesNegativeTestBase):
Return an error if server id passed is 35 characters or less
"""
snapshot_name = data_utils.rand_name('test-snap')
snapshot_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='test-snap')
test_uuid = ('a' * 35)
self.assertRaises(lib_exc.NotFound, self.client.create_image,
test_uuid, name=snapshot_name)
@ -88,7 +93,8 @@ class ImagesNegativeTestJSON(ImagesNegativeTestBase):
Return an error if sever id passed is 37 characters or more
"""
snapshot_name = data_utils.rand_name('test-snap')
snapshot_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='test-snap')
test_uuid = ('a' * 37)
self.assertRaises(lib_exc.NotFound, self.client.create_image,
test_uuid, name=snapshot_name)
@ -105,8 +111,10 @@ class ImagesDeleteNegativeTestJSON(ImagesNegativeTestBase):
@decorators.idempotent_id('381acb65-785a-4942-94ce-d8f8c84f1f0f')
def test_delete_image_with_invalid_image_id(self):
"""Check an image should not be deleted with invalid image id"""
self.assertRaises(lib_exc.NotFound, self.client.delete_image,
data_utils.rand_name('invalid'))
self.assertRaises(
lib_exc.NotFound, self.client.delete_image,
data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='invalid'))
@decorators.attr(type=['negative'])
@decorators.idempotent_id('137aef61-39f7-44a1-8ddf-0adf82511701')

View File

@ -66,7 +66,8 @@ class ImagesOneServerTestJSON(base.BaseV2ComputeTest):
MIN_RAM = 'min_ram'
# Create a new image
name = data_utils.rand_name('image')
name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='image')
meta = {'image_type': 'test'}
image = self.create_image_from_server(self.server_id, name=name,
metadata=meta,
@ -104,6 +105,8 @@ class ImagesOneServerTestJSON(base.BaseV2ComputeTest):
# We use a string with 3 byte utf-8 character due to nova/glance which
# will return 400(Bad Request) if we attempt to send a name which has
# 4 byte utf-8 character.
utf8_name = data_utils.rand_name(b'\xe2\x82\xa1'.decode('utf-8'))
utf8_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=b'\xe2\x82\xa1'.decode('utf-8'))
self.create_image_from_server(self.server_id, name=utf8_name,
wait_until='ACTIVE')

View File

@ -56,8 +56,12 @@ class ListImageFiltersTestJSON(base.BaseV2ComputeTest):
super(ListImageFiltersTestJSON, cls).resource_setup()
def _create_image():
image_name_kwargs = {
'prefix': CONF.resource_name_prefix,
'name': cls.__name__ + '-image'
}
params = {
'name': data_utils.rand_name(cls.__name__ + '-image'),
'name': data_utils.rand_name(**image_name_kwargs),
'container_format': 'bare',
'disk_format': 'raw',
'visibility': 'private'

View File

@ -14,8 +14,11 @@
# under the License.
from tempest.api.compute import base
from tempest import config
from tempest.lib.common.utils import data_utils
CONF = config.CONF
class BaseKeypairTest(base.BaseV2ComputeTest):
"""Base test case class for all keypair API tests."""
@ -32,7 +35,8 @@ class BaseKeypairTest(base.BaseV2ComputeTest):
client = self.keypairs_client
if keypair_name is None:
keypair_name = data_utils.rand_name(
self.__class__.__name__ + '-keypair')
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-keypair')
kwargs = {'name': keypair_name}
delete_params = {}
if pub_key:

View File

@ -14,9 +14,12 @@
# under the License.
from tempest.api.compute.keypairs import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class KeyPairsV2TestJSON(base.BaseKeypairTest):
"""Test keypairs API with compute microversion less than 2.2"""
@ -54,7 +57,8 @@ class KeyPairsV2TestJSON(base.BaseKeypairTest):
@decorators.idempotent_id('6c1d3123-4519-4742-9194-622cb1714b7d')
def test_keypair_create_delete(self):
"""Test create/delete keypair"""
k_name = data_utils.rand_name('keypair')
k_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='keypair')
keypair = self.create_keypair(k_name)
key_name = keypair['name']
self.assertEqual(key_name, k_name,
@ -64,7 +68,8 @@ class KeyPairsV2TestJSON(base.BaseKeypairTest):
@decorators.idempotent_id('a4233d5d-52d8-47cc-9a25-e1864527e3df')
def test_get_keypair_detail(self):
"""Test getting keypair detail by keypair name"""
k_name = data_utils.rand_name('keypair')
k_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='keypair')
self.create_keypair(k_name)
keypair_detail = self.keypairs_client.show_keypair(k_name)['keypair']
self.assertEqual(keypair_detail['name'], k_name,
@ -74,7 +79,8 @@ class KeyPairsV2TestJSON(base.BaseKeypairTest):
@decorators.idempotent_id('39c90c6a-304a-49dd-95ec-2366129def05')
def test_keypair_create_with_pub_key(self):
"""Test creating keypair with a given public key"""
k_name = data_utils.rand_name('keypair')
k_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='keypair')
pub_key = ("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCs"
"Ne3/1ILNCqFyfYWDeTKLD6jEXC2OQHLmietMWW+/vd"
"aZq7KZEwO0jhglaFjU1mpqq4Gz5RX156sCTNM9vRbw"

View File

@ -15,10 +15,13 @@
# under the License.
from tempest.api.compute.keypairs import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class KeyPairsNegativeTestJSON(base.BaseKeypairTest):
"""Negative tests of keypairs API"""
@ -35,7 +38,9 @@ class KeyPairsNegativeTestJSON(base.BaseKeypairTest):
@decorators.idempotent_id('7cc32e47-4c42-489d-9623-c5e2cb5a2fa5')
def test_keypair_delete_nonexistent_key(self):
"""Test non-existent key deletion should throw a proper error"""
k_name = data_utils.rand_name("keypair-non-existent")
k_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name="keypair-non-existent")
self.assertRaises(lib_exc.NotFound,
self.keypairs_client.delete_keypair,
k_name)
@ -60,7 +65,8 @@ class KeyPairsNegativeTestJSON(base.BaseKeypairTest):
@decorators.idempotent_id('0359a7f1-f002-4682-8073-0c91e4011b7c')
def test_create_keypair_with_duplicate_name(self):
"""Test keypairs with duplicate names should not be created"""
k_name = data_utils.rand_name('keypair')
k_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='keypair')
self.keypairs_client.create_keypair(name=k_name)
# Now try the same keyname to create another key
self.assertRaises(lib_exc.Conflict, self.create_keypair,

View File

@ -13,9 +13,12 @@
# under the License.
from tempest.api.compute.keypairs import test_keypairs
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class KeyPairsV22TestJSON(test_keypairs.KeyPairsV2TestJSON):
"""Test keypairs API with compute microversion greater than 2.1"""
@ -29,7 +32,8 @@ class KeyPairsV22TestJSON(test_keypairs.KeyPairsV2TestJSON):
self.assertEqual(keypair_type, keypair['type'])
def _test_keypairs_create_list_show(self, keypair_type=None):
k_name = data_utils.rand_name('keypair')
k_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='keypair')
keypair = self.create_keypair(k_name, keypair_type=keypair_type)
# Verify whether 'type' is present in keypair create response of
# version 2.2 and it is with default value 'ssh'.

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.compute.security_groups import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
"""Negative tests of security group rules API
@ -59,7 +62,8 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
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')
parent_group_id = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='non_int_id')
ip_protocol = 'tcp'
from_port = 22
to_port = 22
@ -105,7 +109,8 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
sg = self.create_security_group()
# Adding rules to the created Security Group
parent_group_id = sg['id']
ip_protocol = data_utils.rand_name('999')
ip_protocol = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='999')
from_port = 22
to_port = 22

View File

@ -15,10 +15,13 @@
from tempest.api.compute.security_groups import base
from tempest.common import waiters
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest):
"""Test security groups API with compute microversion less than 2.36"""
@ -69,7 +72,8 @@ class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest):
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 ')
s_name = ' %s ' % data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='securitygroup ')
securitygroup = self.create_security_group(name=s_name)
securitygroup_name = securitygroup['name']
self.assertEqual(securitygroup_name, s_name,
@ -133,8 +137,9 @@ class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest):
securitygroup = self.create_security_group()
securitygroup_id = securitygroup['id']
# Update the name and description
s_new_name = data_utils.rand_name('sg-hth')
s_new_des = data_utils.rand_name('description-hth')
prefix = CONF.resource_name_prefix
s_new_name = data_utils.rand_name(prefix=prefix, name='sg-hth')
s_new_des = data_utils.rand_name(prefix=prefix, name='description-hth')
self.client.update_security_group(securitygroup_id,
name=s_new_name,
description=s_new_des)

View File

@ -55,7 +55,8 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
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')
s_description = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='description')
# Create Security Group with empty string as group name
self.assertRaises(lib_exc.BadRequest,
self.client.create_security_group,
@ -81,7 +82,8 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
longer than 255 chars. Empty description is allowed by the API
reference, however.
"""
s_name = data_utils.rand_name('securitygroup')
s_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='securitygroup')
# Create Security Group with group description longer than 255 chars
s_description = 'description-'.ljust(260, '0')
self.assertRaises(lib_exc.BadRequest,
@ -94,8 +96,10 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
def test_security_group_create_with_duplicate_name(self):
"""Test creating security group with duplicate name should fail"""
s_name = data_utils.rand_name('securitygroup')
s_description = data_utils.rand_name('description')
s_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='securitygroup')
s_description = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='description')
self.create_security_group(name=s_name, description=s_description)
# Now try the Security Group with the same 'Name'
self.assertRaises(lib_exc.BadRequest,
@ -138,10 +142,13 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
@decorators.attr(type=['negative'])
def test_update_security_group_with_invalid_sg_id(self):
"""Test updating security group with invalid group id should fail"""
s_name = data_utils.rand_name('sg')
s_description = data_utils.rand_name('description')
s_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='sg')
s_description = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='description')
# Create a non int sg_id
sg_id_invalid = data_utils.rand_name('sg')
sg_id_invalid = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='sg')
self.assertRaises(lib_exc.BadRequest,
self.client.update_security_group, sg_id_invalid,
name=s_name, description=s_description)
@ -179,8 +186,10 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest):
def test_update_non_existent_security_group(self):
"""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')
s_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='sg')
s_description = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='description')
self.assertRaises(lib_exc.NotFound,
self.client.update_security_group,
non_exist_id, name=s_name,

View File

@ -161,7 +161,9 @@ class AttachInterfacesTestJSON(AttachInterfacesTestBase):
network_id = ifs[0]['net_id']
port = self.ports_client.create_port(
network_id=network_id,
name=data_utils.rand_name(self.__class__.__name__))
name=data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__))
port_id = port['port']['id']
self.addCleanup(self.ports_client.delete_port, port_id)
iface = self.interfaces_client.create_interface(
@ -324,7 +326,9 @@ class AttachInterfacesTestJSON(AttachInterfacesTestBase):
port = self.ports_client.create_port(
network_id=network_id,
name=data_utils.rand_name(self.__class__.__name__))
name=data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__))
port_id = port['port']['id']
self.addCleanup(self.ports_client.delete_port, port_id)

View File

@ -53,7 +53,9 @@ class ServersTestJSON(base.BaseV2ComputeTest):
cls.meta = {'hello': 'world'}
cls.accessIPv4 = '1.1.1.1'
cls.accessIPv6 = '0000:0000:0000:0000:0000:babe:220.12.22.2'
cls.name = data_utils.rand_name(cls.__name__ + '-server')
cls.name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=cls.__name__ + '-server')
cls.password = data_utils.rand_password()
disk_config = cls.disk_config
server_initial = cls.create_test_server(

View File

@ -67,7 +67,9 @@ class ServersTestMultiNic(base.BaseV2ComputeTest):
cls.subnets_client = cls.os_primary.subnets_client
def _create_net_subnet_ret_net_from_cidr(self, cidr):
name_net = data_utils.rand_name(self.__class__.__name__)
name_net = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__)
net = self.networks_client.create_network(name=name_net)
self.addCleanup(self.networks_client.delete_network,
net['network']['id'])

View File

@ -172,11 +172,15 @@ class TaggedBootDevicesTest(DeviceTaggingBase):
# Create networks
net1 = self.networks_client.create_network(
name=data_utils.rand_name('device-tagging-net1'))['network']
name=data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name='device-tagging-net1'))['network']
self.addCleanup(self.networks_client.delete_network, net1['id'])
net2 = self.networks_client.create_network(
name=data_utils.rand_name('device-tagging-net2'))['network']
name=data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name='device-tagging-net2'))['network']
self.addCleanup(self.networks_client.delete_network, net2['id'])
# Create subnets
@ -195,13 +199,17 @@ class TaggedBootDevicesTest(DeviceTaggingBase):
# Create ports
self.port1 = self.ports_client.create_port(
network_id=net1['id'],
name=data_utils.rand_name(self.__class__.__name__),
name=data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__),
fixed_ips=[{'subnet_id': subnet1['id']}])['port']
self.addCleanup(self.ports_client.delete_port, self.port1['id'])
self.port2 = self.ports_client.create_port(
network_id=net1['id'],
name=data_utils.rand_name(self.__class__.__name__),
name=data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__),
fixed_ips=[{'subnet_id': subnet1['id']}])['port']
self.addCleanup(self.ports_client.delete_port, self.port2['id'])
@ -215,7 +223,9 @@ class TaggedBootDevicesTest(DeviceTaggingBase):
wait_until='SSHABLE',
validation_resources=validation_resources,
config_drive=config_drive_enabled,
name=data_utils.rand_name('device-tagging-server'),
name=data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name='device-tagging-server'),
networks=[
# Validation network for ssh
{
@ -378,7 +388,8 @@ class TaggedAttachmentsTest(DeviceTaggingBase):
# Create network
net = self.networks_client.create_network(
name=data_utils.rand_name(
'tagged-attachments-test-net'))['network']
prefix=CONF.resource_name_prefix,
name='tagged-attachments-test-net'))['network']
self.addCleanup(self.networks_client.delete_network, net['id'])
# Create subnet
@ -400,7 +411,9 @@ class TaggedAttachmentsTest(DeviceTaggingBase):
validatable=True,
validation_resources=validation_resources,
config_drive=config_drive_enabled,
name=data_utils.rand_name('device-tagging-server'),
name=data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name='device-tagging-server'),
networks=[{'uuid': self.get_tenant_network()['id']}],
wait_until='SSHABLE')
self.addCleanup(self.delete_server, server['id'])

View File

@ -48,17 +48,23 @@ class ListServerFiltersTestJSON(base.BaseV2ComputeTest):
else:
cls.fixed_network_name = None
network_kwargs = fixed_network.set_networks_kwarg(network)
cls.s1_name = data_utils.rand_name(cls.__name__ + '-instance')
cls.s1_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=cls.__name__ + '-instance')
cls.s1 = cls.create_test_server(name=cls.s1_name, **network_kwargs)
cls.s2_name = data_utils.rand_name(cls.__name__ + '-instance')
cls.s2_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=cls.__name__ + '-instance')
# If image_ref_alt is "" or None then we still want to boot a server
# but we rely on `testtools.skipUnless` decorator to actually skip
# the irrelevant tests.
cls.s2 = cls.create_test_server(
name=cls.s2_name, image_id=cls.image_ref_alt or cls.image_ref)
cls.s3_name = data_utils.rand_name(cls.__name__ + '-instance')
cls.s3_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=cls.__name__ + '-instance')
cls.s3 = cls.create_test_server(name=cls.s3_name,
flavor=cls.flavor_ref_alt,
wait_until='ACTIVE')

View File

@ -133,7 +133,9 @@ class ServerActionsBase(base.BaseV2ComputeTest):
['addresses'])
# The server should be rebuilt using the provided image and data
meta = {'rebuild': 'server'}
new_name = data_utils.rand_name(self.__class__.__name__ + '-server')
new_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-server')
password = 'rebuildPassw0rd'
rebuilt_server = self.client.rebuild_server(
server_id,
@ -575,7 +577,8 @@ class ServerActionsTestOtherB(ServerActionsBase):
raise lib_exc.InvalidConfiguration(
'api_v2 must be True in [image-feature-enabled].')
backup1 = data_utils.rand_name('backup-1')
backup1 = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='backup-1')
resp = self.client.create_backup(self.server_id,
backup_type='daily',
rotation=2,
@ -603,7 +606,8 @@ class ServerActionsTestOtherB(ServerActionsBase):
waiters.wait_for_image_status(glance_client,
image1_id, 'active')
backup2 = data_utils.rand_name('backup-2')
backup2 = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='backup-2')
waiters.wait_for_server_status(self.client, self.server_id, 'ACTIVE')
resp = self.client.create_backup(self.server_id,
backup_type='daily',
@ -639,7 +643,8 @@ class ServerActionsTestOtherB(ServerActionsBase):
# create the third one, due to the rotation is 2,
# the first one will be deleted
backup3 = data_utils.rand_name('backup-3')
backup3 = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='backup-3')
waiters.wait_for_server_status(self.client, self.server_id, 'ACTIVE')
resp = self.client.create_backup(self.server_id,
backup_type='daily',
@ -796,7 +801,8 @@ class ServersAaction247Test(base.BaseV2ComputeTest):
def test_create_backup(self):
server = self.create_test_server(wait_until='ACTIVE')
backup1 = data_utils.rand_name('backup-1')
backup1 = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='backup-1')
# Just check create_back to verify the schema with 2.47
self.servers_client.create_backup(server['id'],
backup_type='daily',
@ -859,7 +865,9 @@ class ServerActionsV293TestJSON(base.BaseV2ComputeTest):
# The server should be rebuilt using the provided image and data
meta = {'rebuild': 'server'}
new_name = data_utils.rand_name(self.__class__.__name__ + '-server')
new_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-server')
password = 'rebuildPassw0rd'
rebuilt_server = self.servers_client.rebuild_server(
server['id'],

View File

@ -17,9 +17,12 @@ import testtools
from tempest.api.compute import base
from tempest.common import compute
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class ServerGroupTestJSON(base.BaseV2ComputeTest):
"""These tests check for the server-group APIs.
@ -80,7 +83,8 @@ class ServerGroupTestJSON(base.BaseV2ComputeTest):
def _create_delete_server_group(self, policy):
# Create and Delete the server-group with given policy
name = data_utils.rand_name('server-group')
name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='server-group')
server_group = self._create_server_group(name, policy)
self._delete_server_group(server_group)
@ -99,7 +103,8 @@ class ServerGroupTestJSON(base.BaseV2ComputeTest):
def test_create_delete_multiple_server_groups_with_same_name_policy(self):
"""Test Create/Delete the server-groups with same name and policy"""
server_groups = []
server_group_name = data_utils.rand_name('server-group')
server_group_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='server-group')
for _ in range(0, 2):
server_groups.append(self._create_server_group(server_group_name,
self.policy))

View File

@ -14,9 +14,12 @@
# under the License.
from tempest.api.compute import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class ServerTagsTestJSON(base.BaseV2ComputeTest):
"""Test server tags with compute microversion greater than 2.25"""
@ -51,7 +54,8 @@ class ServerTagsTestJSON(base.BaseV2ComputeTest):
self.assertEmpty(fetched_tags)
# Add server tag to the server.
assigned_tag = data_utils.rand_name('tag')
assigned_tag = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='tag')
self._update_server_tags(self.server['id'], assigned_tag)
# Check that added tag exists.
@ -67,11 +71,16 @@ class ServerTagsTestJSON(base.BaseV2ComputeTest):
def test_update_all_tags(self):
"""Test updating all server tags"""
# Add server tags to the server.
tags = [data_utils.rand_name('tag'), data_utils.rand_name('tag')]
kwargs = {
'prefix': CONF.resource_name_prefix,
'name': 'tag'
}
tags = [data_utils.rand_name(**kwargs), data_utils.rand_name(**kwargs)]
self._update_server_tags(self.server['id'], tags)
# Replace tags with new tags and check that they are present.
new_tags = [data_utils.rand_name('tag'), data_utils.rand_name('tag')]
new_tags = [data_utils.rand_name(**kwargs),
data_utils.rand_name(**kwargs)]
replaced_tags = self.client.update_all_tags(
self.server['id'], new_tags)['tags']
self.assertCountEqual(new_tags, replaced_tags)
@ -83,9 +92,13 @@ class ServerTagsTestJSON(base.BaseV2ComputeTest):
@decorators.idempotent_id('a63b2a74-e918-4b7c-bcab-10c855f3a57e')
def test_delete_all_tags(self):
"""Test deleting all server tags"""
kwargs = {
'prefix': CONF.resource_name_prefix,
'name': 'tag'
}
# Add server tags to the server.
assigned_tags = [data_utils.rand_name('tag'),
data_utils.rand_name('tag')]
assigned_tags = [data_utils.rand_name(**kwargs),
data_utils.rand_name(**kwargs)]
self._update_server_tags(self.server['id'], assigned_tags)
# Delete tags from the server and check that they were deleted.
@ -97,7 +110,8 @@ class ServerTagsTestJSON(base.BaseV2ComputeTest):
def test_check_tag_existence(self):
"""Test checking server tag existence"""
# Add server tag to the server.
assigned_tag = data_utils.rand_name('tag')
assigned_tag = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='tag')
self._update_server_tags(self.server['id'], assigned_tag)
# Check that added tag exists. Throws a 404 if not found, else a 204,

View File

@ -60,7 +60,8 @@ class ServersTestJSON(base.BaseV2ComputeTest):
"""Test creating a server with already existing name is allowed"""
# TODO(sdague): clear out try, we do cleanup one layer up
server_name = data_utils.rand_name(
self.__class__.__name__ + '-server')
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-server')
server = self.create_test_server(name=server_name,
wait_until='ACTIVE')
id1 = server['id']
@ -79,7 +80,8 @@ class ServersTestJSON(base.BaseV2ComputeTest):
@decorators.idempotent_id('f9e15296-d7f9-4e62-b53f-a04e89160833')
def test_create_specify_keypair(self):
"""Test creating server with keypair"""
key_name = data_utils.rand_name('key')
key_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='key')
self.keypairs_client.create_keypair(name=key_name)
self.addCleanup(self.keypairs_client.delete_keypair, key_name)
self.keypairs_client.list_keypairs()
@ -91,7 +93,8 @@ class ServersTestJSON(base.BaseV2ComputeTest):
def _update_server_name(self, server_id, status, prefix_name='server'):
# The server name should be changed to the provided value
new_name = data_utils.rand_name(prefix_name)
new_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name=prefix_name)
# Update the server with a new name
self.client.update_server(server_id,
@ -159,7 +162,9 @@ class ServersTestJSON(base.BaseV2ComputeTest):
will return 400(Bad Request) if we attempt to send a name which has
4 byte utf-8 character.
"""
utf8_name = data_utils.rand_name(b'\xe2\x82\xa1'.decode('utf-8'))
utf8_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=b'\xe2\x82\xa1'.decode('utf-8'))
self.create_test_server(name=utf8_name, wait_until='ACTIVE')

View File

@ -15,6 +15,7 @@
from tempest.api.compute import base
from tempest.common import waiters
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
@ -30,6 +31,8 @@ from tempest.lib import decorators
# their integration tests, you can add tests to cover those schema
# in this file.
CONF = config.CONF
class ServerShowV254Test(base.BaseV2ComputeTest):
"""Test servers API schema for compute microversion greater than 2.53"""
@ -41,7 +44,8 @@ class ServerShowV254Test(base.BaseV2ComputeTest):
"""Test rebuilding server with microversion greater than 2.53"""
server = self.create_test_server(wait_until='ACTIVE')
keypair_name = data_utils.rand_name(
self.__class__.__name__ + '-keypair')
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-keypair')
kwargs = {'name': keypair_name}
self.keypairs_client.create_keypair(**kwargs)
self.addCleanup(self.keypairs_client.delete_keypair,

View File

@ -267,7 +267,8 @@ class ServersNegativeTestJSON(base.BaseV2ComputeTest):
def test_create_with_non_existent_keypair(self):
"""Creating a server with non-existent keypair should fail"""
# Pass a non-existent keypair while creating a server
key_name = data_utils.rand_name('key')
key_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='key')
self.assertRaises(lib_exc.BadRequest,
self.create_test_server,
key_name=key_name)
@ -288,7 +289,8 @@ class ServersNegativeTestJSON(base.BaseV2ComputeTest):
"""Updating name of a non-existent server should fail"""
nonexistent_server = data_utils.rand_uuid()
new_name = data_utils.rand_name(
self.__class__.__name__ + '-server') + '_updated'
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-server') + '_updated'
self.assertRaises(lib_exc.NotFound, self.client.update_server,
nonexistent_server, name=new_name)

View File

@ -53,7 +53,9 @@ class VolumesSnapshotsTestJSON(base.BaseV2ComputeTest):
volume = self.create_volume()
self.addCleanup(self.delete_volume, volume['id'])
s_name = data_utils.rand_name(self.__class__.__name__ + '-Snapshot')
s_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-Snapshot')
# Create snapshot
snapshot = self.snapshots_client.create_snapshot(
volume_id=volume['id'],

View File

@ -47,7 +47,9 @@ class VolumesGetTestJSON(base.BaseV2ComputeTest):
@decorators.idempotent_id('f10f25eb-9775-4d9d-9cbe-1cf54dae9d5f')
def test_volume_create_get_delete(self):
"""Test create/get/delete volume"""
v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
v_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-Volume')
metadata = {'Type': 'work'}
# Create volume
volume = self.create_volume(size=CONF.volume.volume_size,

View File

@ -64,7 +64,9 @@ class VolumesNegativeTest(base.BaseV2ComputeTest):
@decorators.idempotent_id('5125ae14-152b-40a7-b3c5-eae15e9022ef')
def test_create_volume_with_invalid_size(self):
"""Test creating volume with invalid size should fail"""
v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
v_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-Volume')
metadata = {'Type': 'work'}
self.assertRaises(lib_exc.BadRequest, self.client.create_volume,
size='#$%', display_name=v_name, metadata=metadata)
@ -73,7 +75,9 @@ class VolumesNegativeTest(base.BaseV2ComputeTest):
@decorators.idempotent_id('131cb3a1-75cc-4d40-b4c3-1317f64719b0')
def test_create_volume_without_passing_size(self):
"""Test creating volume without specifying size should fail"""
v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
v_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-Volume')
metadata = {'Type': 'work'}
self.assertRaises(lib_exc.BadRequest, self.client.create_volume,
size='', display_name=v_name, metadata=metadata)
@ -82,7 +86,9 @@ class VolumesNegativeTest(base.BaseV2ComputeTest):
@decorators.idempotent_id('8cce995e-0a83-479a-b94d-e1e40b8a09d1')
def test_create_volume_with_size_zero(self):
"""Test creating volume with size=0 should fail"""
v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
v_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-Volume')
metadata = {'Type': 'work'}
self.assertRaises(lib_exc.BadRequest, self.client.create_volume,
size='0', display_name=v_name, metadata=metadata)
@ -97,9 +103,11 @@ class VolumesNegativeTest(base.BaseV2ComputeTest):
@decorators.idempotent_id('62972737-124b-4513-b6cf-2f019f178494')
def test_delete_invalid_volume_id(self):
"""Test deleting volume with an invalid volume id should fail"""
self.assertRaises(lib_exc.NotFound,
self.client.delete_volume,
data_utils.rand_name('invalid'))
self.assertRaises(
lib_exc.NotFound,
self.client.delete_volume,
data_utils.rand_name(prefix=CONF.resource_name_prefix,
name='invalid'))
@decorators.attr(type=['negative'])
@decorators.idempotent_id('0d1417c5-4ae8-4c2c-adc5-5f0b864253e5')

View File

@ -14,9 +14,12 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class EndPointsTestJSON(base.BaseIdentityV2AdminTest):
"""Test keystone v2 endpoints"""
@ -24,9 +27,12 @@ class EndPointsTestJSON(base.BaseIdentityV2AdminTest):
@classmethod
def resource_setup(cls):
super(EndPointsTestJSON, cls).resource_setup()
s_name = data_utils.rand_name('service')
s_type = data_utils.rand_name('type')
s_description = data_utils.rand_name('description')
s_name = data_utils.rand_name(
name='service', prefix=CONF.resource_name_prefix)
s_type = data_utils.rand_name(
name='type', prefix=CONF.resource_name_prefix)
s_description = data_utils.rand_name(
name='description', prefix=CONF.resource_name_prefix)
service_data = cls.services_client.create_service(
name=s_name, type=s_type,
description=s_description)['OS-KSADM:service']
@ -36,7 +42,8 @@ class EndPointsTestJSON(base.BaseIdentityV2AdminTest):
# Create endpoints so as to use for LIST and GET test cases
cls.setup_endpoints = list()
for _ in range(2):
region = data_utils.rand_name('region')
region = data_utils.rand_name(
name='region', prefix=CONF.resource_name_prefix)
url = data_utils.rand_url()
endpoint = cls.endpoints_client.create_endpoint(
service_id=cls.service_id,
@ -65,7 +72,8 @@ class EndPointsTestJSON(base.BaseIdentityV2AdminTest):
@decorators.idempotent_id('9974530a-aa28-4362-8403-f06db02b26c1')
def test_create_list_delete_endpoint(self):
"""Test creating, listing and deleting a keystone endpoint"""
region = data_utils.rand_name('region')
region = data_utils.rand_name(
name='region', prefix=CONF.resource_name_prefix)
url = data_utils.rand_url()
endpoint = self.endpoints_client.create_endpoint(
service_id=self.service_id,

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
CONF = config.CONF
class RolesTestJSON(base.BaseIdentityV2AdminTest):
@ -26,7 +29,8 @@ class RolesTestJSON(base.BaseIdentityV2AdminTest):
super(RolesTestJSON, cls).resource_setup()
cls.roles = list()
for _ in range(5):
role_name = data_utils.rand_name(name='role')
role_name = data_utils.rand_name(
name='role', prefix=CONF.resource_name_prefix)
role = cls.roles_client.create_role(name=role_name)['role']
cls.addClassResourceCleanup(
test_utils.call_and_ignore_notfound_exc,
@ -57,7 +61,8 @@ class RolesTestJSON(base.BaseIdentityV2AdminTest):
@decorators.idempotent_id('c62d909d-6c21-48c0-ae40-0a0760e6db5e')
def test_role_create_delete(self):
"""Role should be created, verified, and deleted."""
role_name = data_utils.rand_name(name='role-test')
role_name = data_utils.rand_name(
name='role-test', prefix=CONF.resource_name_prefix)
body = self.roles_client.create_role(name=role_name)['role']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.roles_client.delete_role, body['id'])

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class RolesNegativeTestJSON(base.BaseIdentityV2AdminTest):
"""Negative tests of keystone roles via v2 API"""
@ -55,7 +58,8 @@ class RolesNegativeTestJSON(base.BaseIdentityV2AdminTest):
@decorators.idempotent_id('585c8998-a8a4-4641-a5dd-abef7a8ced00')
def test_create_role_by_unauthorized_user(self):
"""Test non-admin user should not be able to create role via v2 API"""
role_name = data_utils.rand_name(name='role')
role_name = data_utils.rand_name(
name='role', prefix=CONF.resource_name_prefix)
self.assertRaises(lib_exc.Forbidden,
self.non_admin_roles_client.create_role,
name=role_name)
@ -66,7 +70,8 @@ class RolesNegativeTestJSON(base.BaseIdentityV2AdminTest):
"""Test creating role without a valid token via v2 API should fail"""
token = self.client.auth_provider.get_token()
self.client.delete_token(token)
role_name = data_utils.rand_name(name='role')
role_name = data_utils.rand_name(
name='role', prefix=CONF.resource_name_prefix)
self.assertRaises(lib_exc.Unauthorized,
self.roles_client.create_role, name=role_name)
self.client.auth_provider.clear_auth()
@ -75,7 +80,8 @@ class RolesNegativeTestJSON(base.BaseIdentityV2AdminTest):
@decorators.idempotent_id('c0cde2c8-81c1-4bb0-8fe2-cf615a3547a8')
def test_role_create_duplicate(self):
"""Test role names should be unique via v2 API"""
role_name = data_utils.rand_name(name='role-dup')
role_name = data_utils.rand_name(
name='role-dup', prefix=CONF.resource_name_prefix)
body = self.roles_client.create_role(name=role_name)['role']
role1_id = body.get('id')
self.addCleanup(self.roles_client.delete_role, role1_id)
@ -86,7 +92,8 @@ class RolesNegativeTestJSON(base.BaseIdentityV2AdminTest):
@decorators.idempotent_id('15347635-b5b1-4a87-a280-deb2bd6d865e')
def test_delete_role_by_unauthorized_user(self):
"""Test non-admin user should not be able to delete role via v2 API"""
role_name = data_utils.rand_name(name='role')
role_name = data_utils.rand_name(
name='role', prefix=CONF.resource_name_prefix)
body = self.roles_client.create_role(name=role_name)['role']
self.addCleanup(self.roles_client.delete_role, body['id'])
role_id = body.get('id')
@ -97,7 +104,8 @@ class RolesNegativeTestJSON(base.BaseIdentityV2AdminTest):
@decorators.idempotent_id('44b60b20-70de-4dac-beaf-a3fc2650a16b')
def test_delete_role_request_without_token(self):
"""Test deleting role without a valid token via v2 API should fail"""
role_name = data_utils.rand_name(name='role')
role_name = data_utils.rand_name(
name='role', prefix=CONF.resource_name_prefix)
body = self.roles_client.create_role(name=role_name)['role']
self.addCleanup(self.roles_client.delete_role, body['id'])
role_id = body.get('id')

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class ServicesTestJSON(base.BaseIdentityV2AdminTest):
"""Test identity services via v2 API"""
@ -34,9 +37,12 @@ class ServicesTestJSON(base.BaseIdentityV2AdminTest):
"""Test verifies the identity service create/get/delete via v2 API"""
# GET Service
# Creating a Service
name = data_utils.rand_name('service')
s_type = data_utils.rand_name('type')
description = data_utils.rand_name('description')
name = data_utils.rand_name(
name='service', prefix=CONF.resource_name_prefix)
s_type = data_utils.rand_name(
name='type', prefix=CONF.resource_name_prefix)
description = data_utils.rand_name(
name='description', prefix=CONF.resource_name_prefix)
service_data = self.services_client.create_service(
name=name, type=s_type,
description=description)['OS-KSADM:service']
@ -70,8 +76,10 @@ class ServicesTestJSON(base.BaseIdentityV2AdminTest):
Create a service only with name and type.
"""
name = data_utils.rand_name('service')
s_type = data_utils.rand_name('type')
name = data_utils.rand_name(
name='service', prefix=CONF.resource_name_prefix)
s_type = data_utils.rand_name(
name='type', prefix=CONF.resource_name_prefix)
service = self.services_client.create_service(
name=name, type=s_type)['OS-KSADM:service']
self.assertIn('id', service)
@ -87,9 +95,12 @@ class ServicesTestJSON(base.BaseIdentityV2AdminTest):
"""Test Create/List/Verify/Delete of identity service via v2 API"""
services = []
for _ in range(3):
name = data_utils.rand_name('service')
s_type = data_utils.rand_name('type')
description = data_utils.rand_name('description')
name = data_utils.rand_name(
name='service', prefix=CONF.resource_name_prefix)
s_type = data_utils.rand_name(
name='type', prefix=CONF.resource_name_prefix)
description = data_utils.rand_name(
name='description', prefix=CONF.resource_name_prefix)
service = self.services_client.create_service(
name=name, type=s_type,

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class TenantsNegativeTestJSON(base.BaseIdentityV2AdminTest):
"""Negative tests of keystone tenants via v2 API"""
@ -77,7 +80,8 @@ class TenantsNegativeTestJSON(base.BaseIdentityV2AdminTest):
@decorators.idempotent_id('af16f44b-a849-46cb-9f13-a751c388f739')
def test_tenant_create_duplicate(self):
"""Test tenant names should be unique via v2 API"""
tenant_name = data_utils.rand_name(name='tenant')
tenant_name = data_utils.rand_name(
name='tenant', prefix=CONF.resource_name_prefix)
self.setup_test_tenant(name=tenant_name)
self.assertRaises(lib_exc.Conflict, self.tenants_client.create_tenant,
name=tenant_name)
@ -89,7 +93,8 @@ class TenantsNegativeTestJSON(base.BaseIdentityV2AdminTest):
Non-admin user should not be authorized to create a tenant via v2 API.
"""
tenant_name = data_utils.rand_name(name='tenant')
tenant_name = data_utils.rand_name(
name='tenant', prefix=CONF.resource_name_prefix)
self.assertRaises(lib_exc.Forbidden,
self.non_admin_tenants_client.create_tenant,
name=tenant_name)
@ -98,7 +103,8 @@ class TenantsNegativeTestJSON(base.BaseIdentityV2AdminTest):
@decorators.idempotent_id('a3ee9d7e-6920-4dd5-9321-d4b2b7f0a638')
def test_create_tenant_request_without_token(self):
"""Test creating tenant without a token via v2 API is not allowed"""
tenant_name = data_utils.rand_name(name='tenant')
tenant_name = data_utils.rand_name(
name='tenant', prefix=CONF.resource_name_prefix)
token = self.client.auth_provider.get_token()
self.client.delete_token(token)
self.assertRaises(lib_exc.Unauthorized,

View File

@ -14,9 +14,12 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class TenantsTestJSON(base.BaseIdentityV2AdminTest):
"""Test identity tenants via v2 API"""
@ -46,7 +49,8 @@ class TenantsTestJSON(base.BaseIdentityV2AdminTest):
@decorators.idempotent_id('d25e9f24-1310-4d29-b61b-d91299c21d6d')
def test_tenant_create_with_description(self):
"""Test creating tenant with a description via v2 API"""
tenant_desc = data_utils.rand_name(name='desc')
tenant_desc = data_utils.rand_name(
name='desc', prefix=CONF.resource_name_prefix)
tenant = self.setup_test_tenant(description=tenant_desc)
tenant_id = tenant['id']
desc1 = tenant['description']
@ -83,12 +87,14 @@ class TenantsTestJSON(base.BaseIdentityV2AdminTest):
@decorators.idempotent_id('781f2266-d128-47f3-8bdb-f70970add238')
def test_tenant_update_name(self):
"""Test updating name attribute of a tenant via v2 API"""
t_name1 = data_utils.rand_name(name='tenant')
t_name1 = data_utils.rand_name(
name='tenant', prefix=CONF.resource_name_prefix)
tenant = self.setup_test_tenant(name=t_name1)
t_id = tenant['id']
resp1_name = tenant['name']
t_name2 = data_utils.rand_name(name='tenant2')
t_name2 = data_utils.rand_name(
name='tenant2', prefix=CONF.resource_name_prefix)
body = self.tenants_client.update_tenant(t_id, name=t_name2)['tenant']
resp2_name = body['name']
self.assertNotEqual(resp1_name, resp2_name)
@ -105,12 +111,14 @@ class TenantsTestJSON(base.BaseIdentityV2AdminTest):
@decorators.idempotent_id('859fcfe1-3a03-41ef-86f9-b19a47d1cd87')
def test_tenant_update_desc(self):
"""Test updating description attribute of a tenant via v2 API"""
t_desc = data_utils.rand_name(name='desc')
t_desc = data_utils.rand_name(
name='desc', prefix=CONF.resource_name_prefix)
tenant = self.setup_test_tenant(description=t_desc)
t_id = tenant['id']
resp1_desc = tenant['description']
t_desc2 = data_utils.rand_name(name='desc2')
t_desc2 = data_utils.rand_name(
name='desc2', prefix=CONF.resource_name_prefix)
body = self.tenants_client.update_tenant(t_id, description=t_desc2)
updated_tenant = body['tenant']
resp2_desc = updated_tenant['description']

View File

@ -29,7 +29,8 @@ class TokensTestJSON(base.BaseIdentityV2AdminTest):
def test_create_check_get_delete_token(self):
"""Test getting create/check/get/delete token for user via v2 API"""
# get a token by username and password
user_name = data_utils.rand_name(name='user')
user_name = data_utils.rand_name(
name='user', prefix=CONF.resource_name_prefix)
user_password = data_utils.rand_password()
# first:create a tenant
tenant = self.setup_test_tenant()
@ -67,7 +68,8 @@ class TokensTestJSON(base.BaseIdentityV2AdminTest):
"""
# Create a user.
user_name = data_utils.rand_name(name='user')
user_name = data_utils.rand_name(
name='user', prefix=CONF.resource_name_prefix)
user_password = data_utils.rand_password()
tenant_id = None # No default tenant so will get unscoped token.
user = self.create_test_user(name=user_name,
@ -76,10 +78,12 @@ class TokensTestJSON(base.BaseIdentityV2AdminTest):
email='')
# Create a couple tenants.
tenant1_name = data_utils.rand_name(name='tenant')
tenant1_name = data_utils.rand_name(
name='tenant', prefix=CONF.resource_name_prefix)
tenant1 = self.setup_test_tenant(name=tenant1_name)
tenant2_name = data_utils.rand_name(name='tenant')
tenant2_name = data_utils.rand_name(
name='tenant', prefix=CONF.resource_name_prefix)
tenant2 = self.setup_test_tenant(name=tenant2_name)
# Create a role

View File

@ -18,9 +18,12 @@ import time
from testtools import matchers
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class UsersTestJSON(base.BaseIdentityV2AdminTest):
"""Test keystone users via v2 API"""
@ -28,7 +31,8 @@ class UsersTestJSON(base.BaseIdentityV2AdminTest):
@classmethod
def resource_setup(cls):
super(UsersTestJSON, cls).resource_setup()
cls.alt_user = data_utils.rand_name('test_user')
cls.alt_user = data_utils.rand_name(
name='test_user', prefix=CONF.resource_name_prefix)
cls.alt_email = cls.alt_user + '@testmail.tm'
@decorators.attr(type='smoke')
@ -43,7 +47,8 @@ class UsersTestJSON(base.BaseIdentityV2AdminTest):
def test_create_user_with_enabled(self):
"""Test creating a user with enabled : False via v2 API"""
tenant = self.setup_test_tenant()
name = data_utils.rand_name('test_user')
name = data_utils.rand_name(
name='test_user', prefix=CONF.resource_name_prefix)
user = self.create_test_user(name=name,
tenantId=tenant['id'],
email=self.alt_email,
@ -59,7 +64,8 @@ class UsersTestJSON(base.BaseIdentityV2AdminTest):
user = self.create_test_user(tenantId=tenant['id'])
# Updating user details with new values
u_name2 = data_utils.rand_name('user2')
u_name2 = data_utils.rand_name(
name='user2', prefix=CONF.resource_name_prefix)
u_email2 = u_name2 + '@testmail.tm'
update_user = self.users_client.update_user(user['id'], name=u_name2,
email=u_email2,

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class UsersNegativeTestJSON(base.BaseIdentityV2AdminTest):
"""Negative tests of identity users via v2 API"""
@ -25,7 +28,8 @@ class UsersNegativeTestJSON(base.BaseIdentityV2AdminTest):
@classmethod
def resource_setup(cls):
super(UsersNegativeTestJSON, cls).resource_setup()
cls.alt_user = data_utils.rand_name('test_user')
cls.alt_user = data_utils.rand_name(
'test_user', prefix=CONF.resource_name_prefix)
cls.alt_password = data_utils.rand_password()
cls.alt_email = cls.alt_user + '@testmail.tm'
@ -106,7 +110,8 @@ class UsersNegativeTestJSON(base.BaseIdentityV2AdminTest):
def test_create_user_with_enabled_non_bool(self):
"""Creating a user with invalid enabled para via v2 API should fail"""
tenant = self.setup_test_tenant()
name = data_utils.rand_name('test_user')
name = data_utils.rand_name(
'test_user', prefix=CONF.resource_name_prefix)
self.assertRaises(lib_exc.BadRequest, self.users_client.create_user,
name=name, password=self.alt_password,
tenantId=tenant['id'],
@ -116,7 +121,8 @@ class UsersNegativeTestJSON(base.BaseIdentityV2AdminTest):
@decorators.idempotent_id('3d07e294-27a0-4144-b780-a2a1bf6fee19')
def test_update_user_for_non_existent_user(self):
"""Updating a non-existent user via v2 API should fail"""
user_name = data_utils.rand_name('user')
user_name = data_utils.rand_name(
'user', prefix=CONF.resource_name_prefix)
non_existent_id = data_utils.rand_uuid()
self.assertRaises(lib_exc.NotFound, self.users_client.update_user,
non_existent_id, name=user_name)

View File

@ -15,9 +15,12 @@
from oslo_serialization import jsonutils as json
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class CredentialsTestJSON(base.BaseIdentityV3AdminTest):
"""Test keystone credentials"""
@ -35,8 +38,11 @@ class CredentialsTestJSON(base.BaseIdentityV3AdminTest):
['access', 'secret']]
for _ in range(2):
project = cls.projects_client.create_project(
data_utils.rand_name('project'),
description=data_utils.rand_name('project-desc'))['project']
data_utils.rand_name(
name='project', prefix=CONF.resource_name_prefix),
description=data_utils.rand_name(
name='project-desc',
prefix=CONF.resource_name_prefix))['project']
cls.addClassResourceCleanup(
cls.projects_client.delete_project, project['id'])
cls.projects.append(project['id'])
@ -50,8 +56,10 @@ class CredentialsTestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('7cd59bf9-bda4-4c72-9467-d21cab278355')
def test_credentials_create_get_update_delete(self):
"""Test creating, getting, updating, deleting of credentials"""
prefix = CONF.resource_name_prefix
blob = '{"access": "%s", "secret": "%s"}' % (
data_utils.rand_name('Access'), data_utils.rand_name('Secret'))
data_utils.rand_name(name='Access', prefix=prefix),
data_utils.rand_name(name='Secret', prefix=prefix))
cred = self.creds_client.create_credential(
user_id=self.user_body['id'], project_id=self.projects[0],
blob=blob, type='ec2')['credential']
@ -61,8 +69,8 @@ class CredentialsTestJSON(base.BaseIdentityV3AdminTest):
for value2 in self.creds_list[1]:
self.assertIn(value2, cred['blob'])
new_keys = [data_utils.rand_name('NewAccess'),
data_utils.rand_name('NewSecret')]
new_keys = [data_utils.rand_name(name='NewAccess', prefix=prefix),
data_utils.rand_name(name='NewSecret', prefix=prefix)]
blob = '{"access": "%s", "secret": "%s"}' % (new_keys[0], new_keys[1])
update_body = self.creds_client.update_credential(
cred['id'], blob=blob, project_id=self.projects[1],
@ -88,10 +96,12 @@ class CredentialsTestJSON(base.BaseIdentityV3AdminTest):
"""Test listing credentials"""
created_cred_ids = list()
fetched_cred_ids = list()
prefix = CONF.resource_name_prefix
for _ in range(2):
blob = '{"access": "%s", "secret": "%s"}' % (
data_utils.rand_name('Access'), data_utils.rand_name('Secret'))
data_utils.rand_name(name='Access', prefix=prefix),
data_utils.rand_name(name='Secret', prefix=prefix))
cred = self.creds_client.create_credential(
user_id=self.user_body['id'], project_id=self.projects[0],
blob=blob, type='ec2')['credential']

View File

@ -42,7 +42,8 @@ class TestDefaultProjectId(base.BaseIdentityV3AdminTest):
def test_default_project_id(self):
"""Creating a token without project will default to user's project"""
# create a domain
dom_name = data_utils.rand_name('dom')
dom_name = data_utils.rand_name(
name='dom', prefix=CONF.resource_name_prefix)
domain_body = self.domains_client.create_domain(
name=dom_name)['domain']
dom_id = domain_body['id']
@ -57,7 +58,8 @@ class TestDefaultProjectId(base.BaseIdentityV3AdminTest):
# create a user in the domain, with the previous project as his
# default project
user_name = data_utils.rand_name('user')
user_name = data_utils.rand_name(
name='user', prefix=CONF.resource_name_prefix)
user_pass = data_utils.rand_password()
user_body = self.users_client.create_user(
name=user_name,

View File

@ -14,11 +14,14 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class DomainConfigurationTestJSON(base.BaseIdentityV3AdminTest):
"""Test domain configuration"""
@ -150,7 +153,8 @@ class DomainConfigurationTestJSON(base.BaseIdentityV3AdminTest):
domain, _ = self._create_domain_and_config(self.custom_config)
# Check that updating configuration groups work.
new_driver = data_utils.rand_name('driver')
new_driver = data_utils.rand_name(
name='driver', prefix=CONF.resource_name_prefix)
new_limit = data_utils.rand_int_id(0, 100)
new_group_config = {'identity': {'driver': new_driver,
'list_limit': new_limit}}
@ -162,7 +166,8 @@ class DomainConfigurationTestJSON(base.BaseIdentityV3AdminTest):
self.assertEqual(new_limit, updated_config['identity']['list_limit'])
# Check that updating individual configuration group options work.
new_driver = data_utils.rand_name('driver')
new_driver = data_utils.rand_name(
name='driver', prefix=CONF.resource_name_prefix)
updated_config = self.client.update_domain_group_option_config(
domain['id'], 'identity', 'driver', driver=new_driver)['config']

View File

@ -76,9 +76,10 @@ class DomainsTestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('f2f5b44a-82e8-4dad-8084-0661ea3b18cf')
def test_create_update_delete_domain(self):
"""Test creating, updating and deleting domain"""
prefix = CONF.resource_name_prefix
# Create domain
d_name = data_utils.rand_name('domain')
d_desc = data_utils.rand_name('domain-desc')
d_name = data_utils.rand_name(name='domain', prefix=prefix)
d_desc = data_utils.rand_name(name='domain-desc', prefix=prefix)
domain = self.domains_client.create_domain(
name=d_name, description=d_desc)['domain']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@ -92,8 +93,8 @@ class DomainsTestJSON(base.BaseIdentityV3AdminTest):
self.assertEqual(d_desc, domain['description'])
self.assertEqual(True, domain['enabled'])
# Update domain
new_desc = data_utils.rand_name('new-desc')
new_name = data_utils.rand_name('new-name')
new_desc = data_utils.rand_name(name='new-desc', prefix=prefix)
new_name = data_utils.rand_name(name='new-name', prefix=prefix)
updated_domain = self.domains_client.update_domain(
domain['id'], name=new_name, description=new_desc,
enabled=False)['domain']
@ -139,8 +140,10 @@ class DomainsTestJSON(base.BaseIdentityV3AdminTest):
def test_create_domain_with_disabled_status(self):
"""Test creating domain with disabled status"""
# Create domain with enabled status as false
d_name = data_utils.rand_name('domain')
d_desc = data_utils.rand_name('domain-desc')
d_name = data_utils.rand_name(
name='domain', prefix=CONF.resource_name_prefix)
d_desc = data_utils.rand_name(
name='domain-desc', prefix=CONF.resource_name_prefix)
domain = self.domains_client.create_domain(
name=d_name, description=d_desc, enabled=False)['domain']
self.addCleanup(self.domains_client.delete_domain, domain['id'])
@ -152,7 +155,8 @@ class DomainsTestJSON(base.BaseIdentityV3AdminTest):
def test_create_domain_without_description(self):
"""Test creating domain without description"""
# Create domain only with name
d_name = data_utils.rand_name('domain')
d_name = data_utils.rand_name(
name='domain', prefix=CONF.resource_name_prefix)
domain = self.domains_client.create_domain(name=d_name)['domain']
self.addCleanup(self.delete_domain, domain['id'])
expected_data = {'name': d_name, 'enabled': True}

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class DomainsNegativeTestJSON(base.BaseIdentityV3AdminTest):
"""Negative tests of identity domains"""
@ -73,7 +76,8 @@ class DomainsNegativeTestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('e6f9e4a2-4f36-4be8-bdbc-4e199ae29427')
def test_domain_create_duplicate(self):
"""Test creating domain with duplicate name should fail"""
domain_name = data_utils.rand_name('domain-dup')
domain_name = data_utils.rand_name(
name='domain-dup', prefix=CONF.resource_name_prefix)
domain = self.domains_client.create_domain(name=domain_name)['domain']
domain_id = domain['id']
self.addCleanup(self.delete_domain, domain_id)

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
CONF = config.CONF
class EndPointGroupsTest(base.BaseIdentityV3AdminTest):
"""Test endpoint groups"""
@ -42,8 +45,10 @@ class EndPointGroupsTest(base.BaseIdentityV3AdminTest):
cls.addClassResourceCleanup(
cls.services_client.delete_service, service_id)
name = data_utils.rand_name('service_group')
description = data_utils.rand_name('description')
name = data_utils.rand_name(
name='service_group', prefix=CONF.resource_name_prefix)
description = data_utils.rand_name(
name='description', prefix=CONF.resource_name_prefix)
filters = {'service_id': service_id}
endpoint_group = cls.client.create_endpoint_group(
@ -57,9 +62,10 @@ class EndPointGroupsTest(base.BaseIdentityV3AdminTest):
@classmethod
def _create_service(cls):
s_name = data_utils.rand_name('service')
s_type = data_utils.rand_name('type')
s_description = data_utils.rand_name('description')
prefix = CONF.resource_name_prefix
s_name = data_utils.rand_name(name='service', prefix=prefix)
s_type = data_utils.rand_name(name='type', prefix=prefix)
s_description = data_utils.rand_name(name='description', prefix=prefix)
service_data = (
cls.services_client.create_service(name=s_name,
type=s_type,
@ -73,8 +79,10 @@ class EndPointGroupsTest(base.BaseIdentityV3AdminTest):
"""Test create/list/show/check/delete of endpoint group"""
service_id = self._create_service()
self.addCleanup(self.services_client.delete_service, service_id)
name = data_utils.rand_name('service_group')
description = data_utils.rand_name('description')
name = data_utils.rand_name(
name='service_group', prefix=CONF.resource_name_prefix)
description = data_utils.rand_name(
name='description', prefix=CONF.resource_name_prefix)
filters = {'service_id': service_id}
endpoint_group = self.client.create_endpoint_group(
@ -135,8 +143,10 @@ class EndPointGroupsTest(base.BaseIdentityV3AdminTest):
# with new values
service1_id = self._create_service()
self.addCleanup(self.services_client.delete_service, service1_id)
name = data_utils.rand_name('service_group')
description = data_utils.rand_name('description')
name = data_utils.rand_name(
name='service_group', prefix=CONF.resource_name_prefix)
description = data_utils.rand_name(
name='description', prefix=CONF.resource_name_prefix)
filters = {'service_id': service1_id}
endpoint_group = self.client.create_endpoint_group(
@ -149,8 +159,10 @@ class EndPointGroupsTest(base.BaseIdentityV3AdminTest):
# Creating new attr values to update endpoint group
service2_id = self._create_service()
self.addCleanup(self.services_client.delete_service, service2_id)
name2 = data_utils.rand_name('service_group2')
description2 = data_utils.rand_name('description2')
name2 = data_utils.rand_name(
name='service_group2', prefix=CONF.resource_name_prefix)
description2 = data_utils.rand_name(
name='description2', prefix=CONF.resource_name_prefix)
filters = {'service_id': service2_id}
# Updating endpoint group with new attr values

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
CONF = config.CONF
class EndPointsTestJSON(base.BaseIdentityV3AdminTest):
"""Test keystone endpoints"""
@ -46,7 +49,8 @@ class EndPointsTestJSON(base.BaseIdentityV3AdminTest):
cls.addClassResourceCleanup(
cls.services_client.delete_service, service['id'])
region_name = data_utils.rand_name('region')
region_name = data_utils.rand_name(
'region', prefix=CONF.resource_name_prefix)
url = data_utils.rand_url()
endpoint = cls.client.create_endpoint(
service_id=cls.service_ids[i], interface=interfaces[i],
@ -60,12 +64,14 @@ class EndPointsTestJSON(base.BaseIdentityV3AdminTest):
@classmethod
def _create_service(cls, s_name=None, s_type=None, s_description=None):
prefix = CONF.resource_name_prefix
if s_name is None:
s_name = data_utils.rand_name('service')
s_name = data_utils.rand_name(name='service', prefix=prefix)
if s_type is None:
s_type = data_utils.rand_name('type')
s_type = data_utils.rand_name(name='type', prefix=prefix)
if s_description is None:
s_description = data_utils.rand_name('description')
s_description = data_utils.rand_name(
name='description', prefix=prefix)
service_data = (
cls.services_client.create_service(name=s_name, type=s_type,
description=s_description))
@ -115,7 +121,8 @@ class EndPointsTestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('0e2446d2-c1fd-461b-a729-b9e73e3e3b37')
def test_create_list_show_delete_endpoint(self):
"""Test creating, listing, showing and deleting keystone endpoint"""
region_name = data_utils.rand_name('region')
region_name = data_utils.rand_name(
name='region', prefix=CONF.resource_name_prefix)
url = data_utils.rand_url()
interface = 'public'
endpoint = self.client.create_endpoint(service_id=self.service_ids[0],
@ -162,16 +169,17 @@ class EndPointsTestJSON(base.BaseIdentityV3AdminTest):
# endpoint_for_update is deleted, otherwise we will get a 404 error
# when deleting endpoint_for_update if endpoint's service is deleted.
prefix = CONF.resource_name_prefix
# Creating service for updating endpoint with new service ID
s_name = data_utils.rand_name('service')
s_type = data_utils.rand_name('type')
s_description = data_utils.rand_name('description')
s_name = data_utils.rand_name(name='service', prefix=prefix)
s_type = data_utils.rand_name(name='type', prefix=prefix)
s_description = data_utils.rand_name(name='description', prefix=prefix)
service2 = self._create_service(s_name=s_name, s_type=s_type,
s_description=s_description)
self.addCleanup(self.services_client.delete_service, service2['id'])
# Creating an endpoint so as to check update endpoint with new values
region1_name = data_utils.rand_name('region')
region1_name = data_utils.rand_name(name='region', prefix=prefix)
url1 = data_utils.rand_url()
interface1 = 'public'
endpoint_for_update = (
@ -183,7 +191,7 @@ class EndPointsTestJSON(base.BaseIdentityV3AdminTest):
self.addCleanup(self.regions_client.delete_region, region1['id'])
# Updating endpoint with new values
region2_name = data_utils.rand_name('region')
region2_name = data_utils.rand_name(name='region', prefix=prefix)
url2 = data_utils.rand_url()
interface2 = 'internal'
endpoint = self.client.update_endpoint(endpoint_for_update['id'],

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class EndpointsNegativeTestJSON(base.BaseIdentityV3AdminTest):
"""Negative tests of endpoint"""
@ -34,10 +37,11 @@ class EndpointsNegativeTestJSON(base.BaseIdentityV3AdminTest):
@classmethod
def resource_setup(cls):
prefix = CONF.resource_name_prefix
super(EndpointsNegativeTestJSON, cls).resource_setup()
s_name = data_utils.rand_name('service')
s_type = data_utils.rand_name('type')
s_description = data_utils.rand_name('description')
s_name = data_utils.rand_name(name='service', prefix=prefix)
s_type = data_utils.rand_name(name='type', prefix=prefix)
s_description = data_utils.rand_name(name='description', prefix=prefix)
service_data = (
cls.services_client.create_service(name=s_name, type=s_type,
description=s_description)
@ -56,7 +60,8 @@ class EndpointsNegativeTestJSON(base.BaseIdentityV3AdminTest):
"""
interface = 'public'
url = data_utils.rand_url()
region = data_utils.rand_name('region')
region = data_utils.rand_name(
name='region', prefix=CONF.resource_name_prefix)
self.assertRaises(lib_exc.BadRequest, self.client.create_endpoint,
service_id=self.service_id, interface=interface,
url=url, region=region, enabled='False')
@ -70,7 +75,8 @@ class EndpointsNegativeTestJSON(base.BaseIdentityV3AdminTest):
"""
interface = 'public'
url = data_utils.rand_url()
region = data_utils.rand_name('region')
region = data_utils.rand_name(
name='region', prefix=CONF.resource_name_prefix)
self.assertRaises(lib_exc.BadRequest, self.client.create_endpoint,
service_id=self.service_id, interface=interface,
url=url, region=region, enabled='True')
@ -78,7 +84,8 @@ class EndpointsNegativeTestJSON(base.BaseIdentityV3AdminTest):
def _assert_update_raises_bad_request(self, enabled):
# Create an endpoint
region1_name = data_utils.rand_name('region')
region1_name = data_utils.rand_name(
name='region', prefix=CONF.resource_name_prefix)
url1 = data_utils.rand_url()
interface1 = 'public'
endpoint_for_update = (

View File

@ -38,9 +38,10 @@ class GroupsV3TestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('2e80343b-6c81-4ac3-88c7-452f3e9d5129')
def test_group_create_update_get(self):
"""Test creating, updating and getting keystone group"""
prefix = CONF.resource_name_prefix
# Verify group creation works.
name = data_utils.rand_name('Group')
description = data_utils.rand_name('Description')
name = data_utils.rand_name(name='Group', prefix=prefix)
description = data_utils.rand_name(name='Description', prefix=prefix)
group = self.setup_test_group(name=name, domain_id=self.domain['id'],
description=description)
self.assertEqual(group['name'], name)
@ -48,8 +49,10 @@ class GroupsV3TestJSON(base.BaseIdentityV3AdminTest):
self.assertEqual(self.domain['id'], group['domain_id'])
# Verify updating name and description works.
first_name_update = data_utils.rand_name('UpdateGroup')
first_desc_update = data_utils.rand_name('UpdateDescription')
first_name_update = data_utils.rand_name(
name='UpdateGroup', prefix=prefix)
first_desc_update = data_utils.rand_name(
name='UpdateDescription', prefix=prefix)
updated_group = self.groups_client.update_group(
group['id'], name=first_name_update,
description=first_desc_update)['group']
@ -65,7 +68,7 @@ class GroupsV3TestJSON(base.BaseIdentityV3AdminTest):
# Verify that updating a single field for a group (name) leaves the
# other fields (description, domain_id) unchanged.
second_name_update = data_utils.rand_name(
self.__class__.__name__ + 'UpdateGroup')
self.__class__.__name__ + 'UpdateGroup', prefix=prefix)
updated_group = self.groups_client.update_group(
group['id'], name=second_name_update)['group']
self.assertEqual(second_name_update, updated_group['name'])

View File

@ -37,20 +37,21 @@ class InheritsV3TestJSON(base.BaseIdentityV3AdminTest):
@classmethod
def resource_setup(cls):
super(InheritsV3TestJSON, cls).resource_setup()
u_name = data_utils.rand_name('user-')
prefix = CONF.resource_name_prefix
u_name = data_utils.rand_name(name='user-', prefix=prefix)
u_desc = '%s description' % u_name
u_email = '%s@testmail.tm' % u_name
u_password = data_utils.rand_password()
cls.domain = cls.create_domain()
cls.project = cls.projects_client.create_project(
data_utils.rand_name('project-'),
description=data_utils.rand_name('project-desc-'),
data_utils.rand_name(name='project-', prefix=prefix),
description=data_utils.rand_name('project-desc-', prefix=prefix),
domain_id=cls.domain['id'])['project']
cls.addClassResourceCleanup(cls.projects_client.delete_project,
cls.project['id'])
cls.group = cls.groups_client.create_group(
name=data_utils.rand_name('group-'), project_id=cls.project['id'],
domain_id=cls.domain['id'])['group']
name=data_utils.rand_name(name='group-', prefix=prefix),
project_id=cls.project['id'], domain_id=cls.domain['id'])['group']
cls.addClassResourceCleanup(cls.groups_client.delete_group,
cls.group['id'])
if not CONF.identity_feature_enabled.immutable_user_source:

View File

@ -45,20 +45,21 @@ class ListProjectsTestJSON(BaseListProjectsTestJSON):
@classmethod
def resource_setup(cls):
super(ListProjectsTestJSON, cls).resource_setup()
prefix = CONF.resource_name_prefix
domain_id = cls.os_admin.credentials.domain_id
# Create project with domain
p1_name = data_utils.rand_name(cls.__name__)
p1_name = data_utils.rand_name(cls.__name__, prefix=prefix)
cls.p1 = cls.projects_client.create_project(
p1_name, enabled=False, domain_id=domain_id)['project']
cls.addClassResourceCleanup(cls.projects_client.delete_project,
cls.p1['id'])
# Create default project
p2_name = data_utils.rand_name(cls.__name__)
p2_name = data_utils.rand_name(cls.__name__, prefix=prefix)
cls.p2 = cls.projects_client.create_project(p2_name)['project']
cls.addClassResourceCleanup(cls.projects_client.delete_project,
cls.p2['id'])
# Create a new project (p3) using p2 as parent project
p3_name = data_utils.rand_name(cls.__name__)
p3_name = data_utils.rand_name(cls.__name__, prefix=prefix)
cls.p3 = cls.projects_client.create_project(
p3_name, parent_id=cls.p2['id'])['project']
cls.addClassResourceCleanup(cls.projects_client.delete_project,
@ -99,7 +100,8 @@ class ListProjectsStaticTestJSON(BaseListProjectsTestJSON):
cls.p1 = cls.projects_client.show_project(
cls.os_primary.credentials.project_id)['project']
# Create a test project
p2_name = data_utils.rand_name(cls.__name__)
p2_name = data_utils.rand_name(
cls.__name__, prefix=CONF.resource_name_prefix)
p2_domain_id = CONF.identity.default_domain_id
cls.p2 = cls.projects_client.create_project(
p2_name, domain_id=p2_domain_id)['project']

View File

@ -45,14 +45,15 @@ class UsersV3TestJSON(base.BaseIdentityV3AdminTest):
@classmethod
def resource_setup(cls):
super(UsersV3TestJSON, cls).resource_setup()
alt_user = data_utils.rand_name('test_user')
prefix = CONF.resource_name_prefix
alt_user = data_utils.rand_name(name='test_user', prefix=prefix)
alt_password = data_utils.rand_password()
cls.alt_email = alt_user + '@testmail.tm'
# Create a domain
cls.domain = cls.create_domain()
# Create user with Domain
cls.users = list()
u1_name = data_utils.rand_name('test_user')
u1_name = data_utils.rand_name(name='test_user', prefix=prefix)
cls.domain_enabled_user = cls.users_client.create_user(
name=u1_name, password=alt_password,
email=cls.alt_email, domain_id=cls.domain['id'])['user']
@ -60,7 +61,7 @@ class UsersV3TestJSON(base.BaseIdentityV3AdminTest):
cls.domain_enabled_user['id'])
cls.users.append(cls.domain_enabled_user)
# Create default not enabled user
u2_name = data_utils.rand_name('test_user')
u2_name = data_utils.rand_name(name='test_user', prefix=prefix)
cls.non_domain_enabled_user = cls.users_client.create_user(
name=u2_name, password=alt_password,
email=cls.alt_email, enabled=False)['user']

View File

@ -14,11 +14,14 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
from tempest.lib import exceptions
CONF = config.CONF
class OAUTHConsumersV3Test(base.BaseIdentityV3AdminTest):
# NOTE: force_tenant_isolation is true in the base class by default but
@ -28,7 +31,8 @@ class OAUTHConsumersV3Test(base.BaseIdentityV3AdminTest):
def _create_consumer(self):
"""Creates a consumer with a random description."""
description = data_utils.rand_name('test_create_consumer')
description = data_utils.rand_name(
name='test_create_consumer', prefix=CONF.resource_name_prefix)
consumer = self.oauth_consumers_client.create_consumer(
description)['consumer']
# cleans up created consumers after tests
@ -70,7 +74,8 @@ class OAUTHConsumersV3Test(base.BaseIdentityV3AdminTest):
# create a new consumer to update
consumer = self._create_consumer()
# create new description
new_description = data_utils.rand_name('test_update_consumer')
new_description = data_utils.rand_name(
name='test_update_consumer', prefix=CONF.resource_name_prefix)
# update consumer
self.oauth_consumers_client.update_consumer(consumer['id'],
new_description)

View File

@ -14,9 +14,12 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class PoliciesTestJSON(base.BaseIdentityV3AdminTest):
"""Test keystone policies"""
@ -30,8 +33,10 @@ class PoliciesTestJSON(base.BaseIdentityV3AdminTest):
policy_ids = list()
fetched_ids = list()
for _ in range(3):
blob = data_utils.rand_name('BlobName')
policy_type = data_utils.rand_name('PolicyType')
blob = data_utils.rand_name(
name='BlobName', prefix=CONF.resource_name_prefix)
policy_type = data_utils.rand_name(
name='PolicyType', prefix=CONF.resource_name_prefix)
policy = self.policies_client.create_policy(
blob=blob, type=policy_type)['policy']
# Delete the Policy at the end of this method
@ -48,8 +53,9 @@ class PoliciesTestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('e544703a-2f03-4cf2-9b0f-350782fdb0d3')
def test_create_update_delete_policy(self):
"""Test to update keystone policy"""
blob = data_utils.rand_name('BlobName')
policy_type = data_utils.rand_name('PolicyType')
prefix = CONF.resource_name_prefix
blob = data_utils.rand_name(name='BlobName', prefix=prefix)
policy_type = data_utils.rand_name(name='PolicyType', prefix=prefix)
policy = self.policies_client.create_policy(blob=blob,
type=policy_type)['policy']
self.addCleanup(self._delete_policy, policy['id'])
@ -59,7 +65,7 @@ class PoliciesTestJSON(base.BaseIdentityV3AdminTest):
self.assertEqual(blob, policy['blob'])
self.assertEqual(policy_type, policy['type'])
# Update policy
update_type = data_utils.rand_name('UpdatedPolicyType')
update_type = data_utils.rand_name('UpdatedPolicyType', prefix=prefix)
data = self.policies_client.update_policy(
policy['id'], type=update_type)['policy']
self.assertIn('type', data)

View File

@ -40,7 +40,7 @@ class IdentityV3ProjectTagsTest(base.BaseIdentityV3AdminTest):
project = self.setup_test_project()
# Create a tag for testing.
tag = data_utils.rand_name('tag')
tag = data_utils.rand_name('tag', prefix=CONF.resource_name_prefix)
# NOTE(felipemonteiro): The response body for create is empty.
self.project_tags_client.update_project_tag(project['id'], tag)
@ -49,7 +49,8 @@ class IdentityV3ProjectTagsTest(base.BaseIdentityV3AdminTest):
project['id'], tag)
# Verify that updating the project tags works.
tags_to_update = [data_utils.rand_name('tag') for _ in range(3)]
tags_to_update = [data_utils.rand_name(
'tag', prefix=CONF.resource_name_prefix) for _ in range(3)]
updated_tags = self.project_tags_client.update_all_project_tags(
project['id'], tags_to_update)['tags']
self.assertEqual(sorted(tags_to_update), sorted(updated_tags))

View File

@ -33,7 +33,8 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('0ecf465c-0dc4-4532-ab53-91ffeb74d12d')
def test_project_create_with_description(self):
"""Test creating project with a description"""
project_desc = data_utils.rand_name('desc')
project_desc = data_utils.rand_name(
name='desc', prefix=CONF.resource_name_prefix)
project = self.setup_test_project(description=project_desc)
project_id = project['id']
desc1 = project['description']
@ -48,7 +49,8 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
def test_project_create_with_domain(self):
"""Test creating project with a domain"""
domain = self.setup_test_domain()
project_name = data_utils.rand_name('project')
project_name = data_utils.rand_name(
name='project', prefix=CONF.resource_name_prefix)
project = self.setup_test_project(
name=project_name, domain_id=domain['id'])
project_id = project['id']
@ -64,7 +66,8 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
domain = self.setup_test_domain()
domain_id = domain['id']
root_project_name = data_utils.rand_name('root_project')
root_project_name = data_utils.rand_name(
name='root_project', prefix=CONF.resource_name_prefix)
root_project = self.setup_test_project(
name=root_project_name, domain_id=domain_id)
@ -76,7 +79,8 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
self.assertEqual(domain_id, parent_id)
# Create a project using root_project_id as parent_id
project_name = data_utils.rand_name('project')
project_name = data_utils.rand_name(
name='project', prefix=CONF.resource_name_prefix)
project = self.setup_test_project(
name=project_name, domain_id=domain_id, parent_id=root_project_id)
parent_id = project['parent_id']
@ -127,12 +131,14 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('f608f368-048c-496b-ad63-d286c26dab6b')
def test_project_update_name(self):
"""Test updating name attribute of a project"""
p_name1 = data_utils.rand_name('project')
p_name1 = data_utils.rand_name(
name='project', prefix=CONF.resource_name_prefix)
project = self.setup_test_project(name=p_name1)
resp1_name = project['name']
p_name2 = data_utils.rand_name('project2')
p_name2 = data_utils.rand_name(
name='project2', prefix=CONF.resource_name_prefix)
body = self.projects_client.update_project(project['id'],
name=p_name2)['project']
resp2_name = body['name']
@ -148,11 +154,13 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('f138b715-255e-4a7d-871d-351e1ef2e153')
def test_project_update_desc(self):
"""Test updating description attribute of a project"""
p_desc = data_utils.rand_name('desc')
p_desc = data_utils.rand_name(
name='desc', prefix=CONF.resource_name_prefix)
project = self.setup_test_project(description=p_desc)
resp1_desc = project['description']
p_desc2 = data_utils.rand_name('desc2')
p_desc2 = data_utils.rand_name(
name='desc2', prefix=CONF.resource_name_prefix)
body = self.projects_client.update_project(
project['id'], description=p_desc2)['project']
resp2_desc = body['description']
@ -197,7 +205,8 @@ class ProjectsTestJSON(base.BaseIdentityV3AdminTest):
project = self.setup_test_project()
# Create a User
u_name = data_utils.rand_name('user')
u_name = data_utils.rand_name(
name='user', prefix=CONF.resource_name_prefix)
u_desc = u_name + 'description'
u_email = u_name + '@testmail.tm'
u_password = data_utils.rand_password()

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class ProjectsNegativeTestJSON(base.BaseIdentityV3AdminTest):
"""Negative tests of projects"""
@ -54,7 +57,8 @@ class ProjectsNegativeStaticTestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('874c3e84-d174-4348-a16b-8c01f599561b')
def test_project_create_duplicate(self):
"""Project names should be unique"""
project_name = data_utils.rand_name('project-dup')
project_name = data_utils.rand_name(
name='project-dup', prefix=CONF.resource_name_prefix)
self.setup_test_project(name=project_name)
self.assertRaises(lib_exc.Conflict,
@ -64,7 +68,8 @@ class ProjectsNegativeStaticTestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('8fba9de2-3e1f-4e77-812a-60cb68f8df13')
def test_create_project_by_unauthorized_user(self):
"""Non-admin user should not be authorized to create a project"""
project_name = data_utils.rand_name('project')
project_name = data_utils.rand_name(
name='project', prefix=CONF.resource_name_prefix)
self.assertRaises(
lib_exc.Forbidden, self.non_admin_projects_client.create_project,
project_name)

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
CONF = config.CONF
class RegionsTestJSON(base.BaseIdentityV3AdminTest):
"""Test regions"""
@ -37,7 +40,8 @@ class RegionsTestJSON(base.BaseIdentityV3AdminTest):
super(RegionsTestJSON, cls).resource_setup()
cls.setup_regions = list()
for _ in range(2):
r_description = data_utils.rand_name('description')
r_description = data_utils.rand_name(
name='description', prefix=CONF.resource_name_prefix)
region = cls.client.create_region(
description=r_description)['region']
cls.addClassResourceCleanup(
@ -48,7 +52,8 @@ class RegionsTestJSON(base.BaseIdentityV3AdminTest):
def test_create_update_get_delete_region(self):
"""Test creating, updating, getting and updating region"""
# Create region
r_description = data_utils.rand_name('description')
r_description = data_utils.rand_name(
name='description', prefix=CONF.resource_name_prefix)
region = self.client.create_region(
description=r_description,
parent_region_id=self.setup_regions[0]['id'])['region']
@ -62,7 +67,8 @@ class RegionsTestJSON(base.BaseIdentityV3AdminTest):
self.assertEqual(self.setup_regions[0]['id'],
region['parent_region_id'])
# Update region with new description and parent ID
r_alt_description = data_utils.rand_name('description')
r_alt_description = data_utils.rand_name(
name='description', prefix=CONF.resource_name_prefix)
region = self.client.update_region(
region['id'],
description=r_alt_description,
@ -86,7 +92,8 @@ class RegionsTestJSON(base.BaseIdentityV3AdminTest):
def test_create_region_with_specific_id(self):
"""Test creating region with specific id"""
r_region_id = data_utils.rand_uuid()
r_description = data_utils.rand_name('description')
r_description = data_utils.rand_name(
name='description', prefix=CONF.resource_name_prefix)
region = self.client.create_region(
region_id=r_region_id, description=r_description)['region']
self.addCleanup(self.client.delete_region, region['id'])
@ -109,7 +116,8 @@ class RegionsTestJSON(base.BaseIdentityV3AdminTest):
def test_list_regions_filter_by_parent_region_id(self):
"""Test listing regions filtered by parent region id"""
# Add a sub-region to one of the existing test regions
r_description = data_utils.rand_name('description')
r_description = data_utils.rand_name(
name='description', prefix=CONF.resource_name_prefix)
region = self.client.create_region(
description=r_description,
parent_region_id=self.setup_regions[0]['id'])['region']

View File

@ -35,31 +35,34 @@ class RolesV3TestJSON(base.BaseIdentityV3AdminTest):
@classmethod
def resource_setup(cls):
super(RolesV3TestJSON, cls).resource_setup()
prefix = CONF.resource_name_prefix
cls.roles = list()
for _ in range(3):
role_name = data_utils.rand_name(name='role')
role_name = data_utils.rand_name(name='role', prefix=prefix)
role = cls.roles_client.create_role(name=role_name)['role']
cls.addClassResourceCleanup(cls.roles_client.delete_role,
role['id'])
cls.roles.append(role)
u_name = data_utils.rand_name('user')
u_name = data_utils.rand_name(name='user', prefix=prefix)
u_desc = '%s description' % u_name
u_email = '%s@testmail.tm' % u_name
cls.u_password = data_utils.rand_password()
cls.domain = cls.create_domain()
cls.project = cls.projects_client.create_project(
data_utils.rand_name('project'),
description=data_utils.rand_name('project-desc'),
data_utils.rand_name(name='project', prefix=prefix),
description=data_utils.rand_name(
name='project-desc', prefix=prefix),
domain_id=cls.domain['id'])['project']
cls.addClassResourceCleanup(cls.projects_client.delete_project,
cls.project['id'])
cls.group_body = cls.groups_client.create_group(
name=data_utils.rand_name('Group'), project_id=cls.project['id'],
name=data_utils.rand_name(name='Group', prefix=prefix),
project_id=cls.project['id'],
domain_id=cls.domain['id'])['group']
cls.addClassResourceCleanup(cls.groups_client.delete_group,
cls.group_body['id'])
cls.role = cls.roles_client.create_role(
name=data_utils.rand_name('Role'))['role']
name=data_utils.rand_name(name='Role', prefix=prefix))['role']
cls.addClassResourceCleanup(cls.roles_client.delete_role,
cls.role['id'])
if not CONF.identity_feature_enabled.immutable_user_source:
@ -78,13 +81,15 @@ class RolesV3TestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('18afc6c0-46cf-4911-824e-9989cc056c3a')
def test_role_create_update_show_list(self):
"""Test creating, updating, showing and listing a role"""
r_name = data_utils.rand_name('Role')
r_name = data_utils.rand_name(
name='Role', prefix=CONF.resource_name_prefix)
role = self.roles_client.create_role(name=r_name)['role']
self.addCleanup(self.roles_client.delete_role, role['id'])
self.assertIn('name', role)
self.assertEqual(role['name'], r_name)
new_name = data_utils.rand_name('NewRole')
new_name = data_utils.rand_name(
name='NewRole', prefix=CONF.resource_name_prefix)
updated_role = self.roles_client.update_role(role['id'],
name=new_name)['role']
self.assertIn('name', updated_role)
@ -371,7 +376,8 @@ class RolesV3TestJSON(base.BaseIdentityV3AdminTest):
def test_domain_roles_create_delete(self):
"""Test creating, listing and deleting domain roles"""
domain_role = self.roles_client.create_role(
name=data_utils.rand_name('domain_role'),
name=data_utils.rand_name(
name='domain_role', prefix=CONF.resource_name_prefix),
domain_id=self.domain['id'])['role']
self.addCleanup(
test_utils.call_and_ignore_notfound_exc,

View File

@ -14,10 +14,13 @@
# under the License.
from tempest.api.identity import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class ServicesTestJSON(base.BaseIdentityV3AdminTest):
"""Test keystone services"""
@ -33,10 +36,11 @@ class ServicesTestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('5193aad5-bcb7-411d-85b0-b3b61b96ef06')
def test_create_update_get_service(self):
"""Test creating, updating and getting of keystone service"""
prefix = CONF.resource_name_prefix
# Creating a Service
name = data_utils.rand_name('service')
serv_type = data_utils.rand_name('type')
desc = data_utils.rand_name('description')
name = data_utils.rand_name(name='service', prefix=prefix)
serv_type = data_utils.rand_name(name='type', prefix=prefix)
desc = data_utils.rand_name(name='description', prefix=prefix)
create_service = self.services_client.create_service(
type=serv_type, name=name, description=desc)['service']
self.addCleanup(self._del_service, create_service['id'])
@ -49,7 +53,7 @@ class ServicesTestJSON(base.BaseIdentityV3AdminTest):
# Update description
s_id = create_service['id']
resp1_desc = create_service['description']
s_desc2 = data_utils.rand_name('desc2')
s_desc2 = data_utils.rand_name(name='desc2', prefix=prefix)
update_service = self.services_client.update_service(
s_id, description=s_desc2)['service']
resp2_desc = update_service['description']
@ -66,8 +70,10 @@ class ServicesTestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('d1dcb1a1-2b6b-4da8-bbb8-5532ef6e8269')
def test_create_service_without_description(self):
"""Create a keystone service only with name and type"""
name = data_utils.rand_name('service')
serv_type = data_utils.rand_name('type')
name = data_utils.rand_name(
name='service', prefix=CONF.resource_name_prefix)
serv_type = data_utils.rand_name(
name='type', prefix=CONF.resource_name_prefix)
service = self.services_client.create_service(
type=serv_type, name=name)['service']
self.addCleanup(self.services_client.delete_service, service['id'])
@ -80,8 +86,12 @@ class ServicesTestJSON(base.BaseIdentityV3AdminTest):
service_ids = list()
service_types = list()
for _ in range(3):
name = data_utils.rand_name(self.__class__.__name__ + '-Service')
serv_type = data_utils.rand_name(self.__class__.__name__ + '-Type')
name = data_utils.rand_name(
self.__class__.__name__ + '-Service',
prefix=CONF.resource_name_prefix)
serv_type = data_utils.rand_name(
self.__class__.__name__ + '-Type',
prefix=CONF.resource_name_prefix)
create_service = self.services_client.create_service(
type=serv_type, name=name)['service']
self.addCleanup(self.services_client.delete_service,

View File

@ -42,11 +42,13 @@ class TokensV3TestJSON(base.BaseIdentityV3AdminTest):
domain_id=CONF.identity.default_domain_id)
# Create a couple projects
project1_name = data_utils.rand_name(name=self.__class__.__name__)
project1_name = data_utils.rand_name(
name=self.__class__.__name__, prefix=CONF.resource_name_prefix)
project1 = self.setup_test_project(
name=project1_name, domain_id=CONF.identity.default_domain_id)
project2_name = data_utils.rand_name(name=self.__class__.__name__)
project2_name = data_utils.rand_name(
name=self.__class__.__name__, prefix=CONF.resource_name_prefix)
project2 = self.setup_test_project(
name=project2_name, domain_id=CONF.identity.default_domain_id)
self.addCleanup(self.projects_client.delete_project, project2['id'])

View File

@ -53,9 +53,10 @@ class TrustsV3TestJSON(base.BaseIdentityV3AdminTest):
super(TrustsV3TestJSON, self).tearDown()
def create_trustor_and_roles(self):
prefix = CONF.resource_name_prefix
# create a project that trusts will be granted on
trustor_project_name = data_utils.rand_name(
name=self.__class__.__name__)
name=self.__class__.__name__, prefix=prefix)
project = self.projects_client.create_project(
trustor_project_name,
domain_id=CONF.identity.default_domain_id)['project']
@ -64,7 +65,7 @@ class TrustsV3TestJSON(base.BaseIdentityV3AdminTest):
self.assertIsNotNone(self.trustor_project_id)
# Create a trustor User
trustor_username = data_utils.rand_name('user')
trustor_username = data_utils.rand_name(name='user', prefix=prefix)
u_desc = trustor_username + 'description'
u_email = trustor_username + '@testmail.xx'
trustor_password = data_utils.rand_password()
@ -79,8 +80,10 @@ class TrustsV3TestJSON(base.BaseIdentityV3AdminTest):
self.trustor_user_id = user['id']
# And two roles, one we'll delegate and one we won't
self.delegated_role = data_utils.rand_name('DelegatedRole')
self.not_delegated_role = data_utils.rand_name('NotDelegatedRole')
self.delegated_role = data_utils.rand_name(
name='DelegatedRole', prefix=prefix)
self.not_delegated_role = data_utils.rand_name(
name='NotDelegatedRole', prefix=prefix)
role = self.roles_client.create_role(name=self.delegated_role)['role']
self.addCleanup(self.roles_client.delete_role, role['id'])

View File

@ -40,8 +40,9 @@ class UsersV3TestJSON(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('b537d090-afb9-4519-b95d-270b0708e87e')
def test_user_update(self):
"""Test case to check if updating of user attributes is successful"""
prefix = CONF.resource_name_prefix
# Creating first user
u_name = data_utils.rand_name('user')
u_name = data_utils.rand_name(name='user', prefix=prefix)
u_desc = u_name + 'description'
u_email = u_name + '@testmail.tm'
u_password = data_utils.rand_password()
@ -55,7 +56,7 @@ class UsersV3TestJSON(base.BaseIdentityV3AdminTest):
project = self.setup_test_project()
# Updating user details with new values
update_kwargs = {'name': data_utils.rand_name('user2'),
update_kwargs = {'name': data_utils.rand_name('user2', prefix=prefix),
'description': data_utils.rand_name('desc2'),
'project_id': project['id'],
'email': 'user2@testmail.tm',
@ -75,7 +76,8 @@ class UsersV3TestJSON(base.BaseIdentityV3AdminTest):
def test_update_user_password(self):
"""Test updating user password"""
# Creating User to check password updation
u_name = data_utils.rand_name('user')
u_name = data_utils.rand_name(
name='user', prefix=CONF.resource_name_prefix)
original_password = data_utils.rand_password()
user = self.users_client.create_user(
name=u_name, password=original_password)['user']
@ -105,7 +107,8 @@ class UsersV3TestJSON(base.BaseIdentityV3AdminTest):
fetched_project_ids = list()
u_project = self.setup_test_project()
# Create a user.
u_name = data_utils.rand_name('user')
u_name = data_utils.rand_name(
name='user', prefix=CONF.resource_name_prefix)
u_desc = u_name + 'description'
u_email = u_name + '@testmail.tm'
u_password = data_utils.rand_password()

View File

@ -29,7 +29,8 @@ class UsersNegativeTest(base.BaseIdentityV3AdminTest):
@decorators.idempotent_id('e75f006c-89cc-477b-874d-588e4eab4b17')
def test_create_user_for_non_existent_domain(self):
"""Attempt to create a user in a non-existent domain should fail"""
u_name = data_utils.rand_name('user')
u_name = data_utils.rand_name(
name='user', prefix=CONF.resource_name_prefix)
u_email = u_name + '@testmail.tm'
u_password = data_utils.rand_password()
self.assertRaises(lib_exc.NotFound, self.users_client.create_user,

View File

@ -71,7 +71,8 @@ class BaseIdentityTest(tempest.test.BaseTestCase):
if kwargs.get('password', None) is None:
kwargs['password'] = data_utils.rand_password()
if 'name' not in kwargs:
kwargs['name'] = data_utils.rand_name('test_user')
kwargs['name'] = data_utils.rand_name(
name='test_user', prefix=CONF.resource_name_prefix)
if 'email' not in kwargs:
kwargs['email'] = kwargs['name'] + '@testmail.tm'
@ -84,7 +85,8 @@ class BaseIdentityTest(tempest.test.BaseTestCase):
def setup_test_role(self, name=None, domain_id=None):
"""Set up a test role."""
params = {'name': name or data_utils.rand_name('test_role')}
params = {'name': name or data_utils.rand_name(
name='test_role', prefix=CONF.resource_name_prefix)}
if domain_id:
params['domain_id'] = domain_id
@ -161,9 +163,12 @@ class BaseIdentityV2AdminTest(BaseIdentityV2Test):
def setup_test_tenant(self, **kwargs):
"""Set up a test tenant."""
if 'name' not in kwargs:
kwargs['name'] = data_utils.rand_name('test_tenant')
kwargs['name'] = data_utils.rand_name(
name='test_tenant',
prefix=CONF.resource_name_prefix)
if 'description' not in kwargs:
kwargs['description'] = data_utils.rand_name('desc')
kwargs['description'] = data_utils.rand_name(
name='desc', prefix=CONF.resource_name_prefix)
tenant = self.projects_client.create_tenant(**kwargs)['tenant']
# Delete the tenant at the end of the test
self.addCleanup(
@ -249,9 +254,11 @@ class BaseIdentityV3AdminTest(BaseIdentityV3Test):
def create_domain(cls, **kwargs):
"""Create a domain."""
if 'name' not in kwargs:
kwargs['name'] = data_utils.rand_name('test_domain')
kwargs['name'] = data_utils.rand_name(
name='test_domain', prefix=CONF.resource_name_prefix)
if 'description' not in kwargs:
kwargs['description'] = data_utils.rand_name('desc')
kwargs['description'] = data_utils.rand_name(
name='desc', prefix=CONF.resource_name_prefix)
domain = cls.domains_client.create_domain(**kwargs)['domain']
cls.addClassResourceCleanup(test_utils.call_and_ignore_notfound_exc,
cls.delete_domain, domain['id'])
@ -274,9 +281,11 @@ class BaseIdentityV3AdminTest(BaseIdentityV3Test):
def setup_test_project(self, **kwargs):
"""Set up a test project."""
if 'name' not in kwargs:
kwargs['name'] = data_utils.rand_name('test_project')
kwargs['name'] = data_utils.rand_name(
name='test_project', prefix=CONF.resource_name_prefix)
if 'description' not in kwargs:
kwargs['description'] = data_utils.rand_name('test_description')
kwargs['description'] = data_utils.rand_name(
name='test_description', prefix=CONF.resource_name_prefix)
project = self.projects_client.create_project(**kwargs)['project']
# Delete the project at the end of the test
self.addCleanup(
@ -297,10 +306,12 @@ class BaseIdentityV3AdminTest(BaseIdentityV3Test):
"""Set up a test group."""
if 'name' not in kwargs:
kwargs['name'] = data_utils.rand_name(
self.__class__.__name__ + '_test_project')
self.__class__.__name__ + '_test_project',
prefix=CONF.resource_name_prefix)
if 'description' not in kwargs:
kwargs['description'] = data_utils.rand_name(
self.__class__.__name__ + '_test_description')
self.__class__.__name__ + '_test_description',
prefix=CONF.resource_name_prefix)
group = self.groups_client.create_group(**kwargs)['group']
self.addCleanup(
test_utils.call_and_ignore_notfound_exc,
@ -324,7 +335,8 @@ class BaseApplicationCredentialsV3Test(BaseIdentityV3Test):
cls.project_id = cls.os_primary.credentials.project_id
def create_application_credential(self, name=None, **kwargs):
name = name or data_utils.rand_name('application_credential')
name = name or data_utils.rand_name(
name='application_credential', prefix=CONF.resource_name_prefix)
application_credential = (
self.non_admin_app_creds_client.create_application_credential(
self.user_id, name=name, **kwargs))['application_credential']

View File

@ -48,7 +48,9 @@ class AccessRulesV3Test(base.BaseIdentityV3Test):
cls.ac = cls.non_admin_app_creds_client
cls.app_cred = cls.ac.create_application_credential(
cls.user_id,
name=data_utils.rand_name('application_credential'),
name=data_utils.rand_name(
name='application_credential',
prefix=CONF.resource_name_prefix),
access_rules=access_rules
)['application_credential']
cls.addClassResourceCleanup(
@ -77,7 +79,9 @@ class AccessRulesV3Test(base.BaseIdentityV3Test):
]
app_cred = self.ac.create_application_credential(
self.user_id,
name=data_utils.rand_name('application_credential'),
name=data_utils.rand_name(
name='application_credential',
prefix=CONF.resource_name_prefix),
access_rules=access_rules
)['application_credential']
self.addCleanup(

View File

@ -51,7 +51,9 @@ class BaseImageTest(tempest.test.BaseTestCase):
"""Wrapper that returns a test image."""
if 'name' not in kwargs:
name = data_utils.rand_name(cls.__name__ + "-image")
name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=cls.__name__ + "-image")
kwargs['name'] = name
image = cls.client.create_image(**kwargs)
@ -83,7 +85,8 @@ class BaseV2ImageTest(BaseImageTest):
description='Tempest', protected=False,
**kwargs):
if not namespace_name:
namespace_name = data_utils.rand_name('test-ns')
namespace_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='test-ns')
kwargs.setdefault('display_name', namespace_name)
namespace = self.namespaces_client.create_namespace(
namespace=namespace_name, visibility=visibility,
@ -200,7 +203,9 @@ class BaseV2MemberImageTest(BaseV2ImageTest):
return image_ids
def _create_image(self):
name = data_utils.rand_name(self.__class__.__name__ + '-image')
name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-image')
image = self.client.create_image(name=name,
container_format='bare',
disk_format='raw')

View File

@ -57,7 +57,9 @@ class ImageCachingTest(base.BaseV2ImageTest):
def image_create_and_upload(self, upload=True, **kwargs):
"""Wrapper that returns a test image."""
if 'name' not in kwargs:
name = data_utils.rand_name(self.__name__ + "-image")
name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__name__ + "-image")
kwargs['name'] = name
params = dict(kwargs)

View File

@ -61,7 +61,8 @@ class ImageTaskCreate(base.BaseV2ImageAdminTest):
i = 0
tasks = list()
while i < len(disk_format):
image_name = data_utils.rand_name("task_image")
image_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name="task_image")
image_property = {"container_format": "bare",
"disk_format": disk_format[0],
"visibility": "public",
@ -126,8 +127,12 @@ class ImageTaskCreate(base.BaseV2ImageAdminTest):
@decorators.idempotent_id("ad6450c6-7060-4ee7-a2d1-41c2604b446c")
@decorators.attr(type=['negative'])
def test_task_create_fake_image_location(self):
kwargs = {
'prefix': CONF.resource_name_prefix,
'name': 'dummy-img-file'
}
http_fake_url = ''.join(
["http://", data_utils.rand_name('dummy-img-file'), ".qcow2"])
["http://", data_utils.rand_name(**kwargs), ".qcow2"])
task = self._prepare_image_tasks_param(
image_from_format=['qcow2'],
disk_format=['qcow2'],

View File

@ -63,7 +63,9 @@ class BasicOperationsImagesAdminTest(base.BaseV2ImageAdminTest):
@decorators.idempotent_id('f6ab4aa0-035e-4664-9f2d-c57c6df50605')
def test_list_public_image(self):
"""Test create image as admin and list public image as none admin"""
name = data_utils.rand_name(self.__class__.__name__ + '-Image')
name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-Image')
image = self.admin_client.create_image(
name=name,
container_format='bare',
@ -107,7 +109,8 @@ class ImportCopyImagesTest(base.BaseV2ImageAdminTest):
raise self.skipException('Either copy-image import method or '
'multistore is not available')
uuid = data_utils.rand_uuid()
image_name = data_utils.rand_name('copy-image')
image_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='copy-image')
container_format = CONF.image.container_formats[0]
disk_format = CONF.image.disk_formats[0]
image = self.create_image(name=image_name,

View File

@ -11,16 +11,21 @@
# under the License.
from tempest.api.image import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
CONF = config.CONF
class MetadataNamespaceObjectsTest(base.BaseV2ImageAdminTest):
"""Test the Metadata definition namespace objects basic functionality"""
def _create_namespace_object(self, namespace):
object_name = data_utils.rand_name(self.__class__.__name__ + '-object')
object_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name=self.__class__.__name__ + '-object')
namespace_object = self.namespace_objects_client.\
create_namespace_object(namespace['namespace'], name=object_name)
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@ -36,7 +41,8 @@ class MetadataNamespaceObjectsTest(base.BaseV2ImageAdminTest):
# Create a namespace object
body = self._create_namespace_object(namespace)
# Update a namespace object
up_object_name = data_utils.rand_name('update-object')
up_object_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='update-object')
body = self.namespace_objects_client.update_namespace_object(
namespace['namespace'], body['name'],
name=up_object_name)

View File

@ -11,9 +11,12 @@
# under the License.
from tempest.api.image import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class MetadataNamespacePropertiesTest(base.BaseV2ImageAdminTest):
"""Test the Metadata definition namespace property basic functionality"""
@ -31,7 +34,8 @@ class MetadataNamespacePropertiesTest(base.BaseV2ImageAdminTest):
body = self.resource_types_client.create_resource_type_association(
namespace['namespace'], name=resource_name)
# Create a property
property_title = data_utils.rand_name('property')
property_title = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='property')
body = self.namespace_properties_client.create_namespace_property(
namespace=namespace['namespace'], title=property_title,
name=resource_name, type="string", enum=enum)
@ -41,7 +45,9 @@ class MetadataNamespacePropertiesTest(base.BaseV2ImageAdminTest):
namespace['namespace'], resource_name)
self.assertEqual(resource_name, body['name'])
# Update namespace property
update_property_title = data_utils.rand_name('update-property')
update_property_title = data_utils.rand_name(
prefix=CONF.resource_name_prefix,
name='update-property')
body = self.namespace_properties_client.update_namespace_properties(
namespace['namespace'], resource_name,
title=update_property_title, type="string",

View File

@ -11,10 +11,13 @@
# under the License.
from tempest.api.image import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
CONF = config.CONF
class MetadataNamespaceTagsTest(base.BaseV2ImageAdminTest):
"""Test the Metadata definition namespace tags basic functionality"""
@ -68,7 +71,8 @@ class MetadataNamespaceTagsTest(base.BaseV2ImageAdminTest):
namespace = self.create_namespace()
self._create_namespace_tags(namespace)
# Create a tag
tag_name = data_utils.rand_name('tag_name')
tag_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='tag_name')
self.namespace_tags_client.create_namespace_tag(
namespace=namespace['namespace'], tag_name=tag_name)
@ -76,7 +80,8 @@ class MetadataNamespaceTagsTest(base.BaseV2ImageAdminTest):
namespace['namespace'], tag_name)
self.assertEqual(tag_name, body['name'])
# Update tag definition
update_tag_definition = data_utils.rand_name('update-tag')
update_tag_definition = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='update-tag')
body = self.namespace_tags_client.update_namespace_tag(
namespace['namespace'], tag_name=tag_name,
name=update_tag_definition)

View File

@ -14,11 +14,14 @@
# under the License.
from tempest.api.image import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class MetadataNamespacesTest(base.BaseV2ImageAdminTest):
"""Test the Metadata definition Namespaces basic functionality"""
@ -30,7 +33,8 @@ class MetadataNamespacesTest(base.BaseV2ImageAdminTest):
body = self.resource_types_client.list_resource_types()
resource_name = body['resource_types'][0]['name']
name = [{'name': resource_name}]
namespace_name = data_utils.rand_name('namespace')
namespace_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='namespace')
# create the metadef namespace
body = self.namespaces_client.create_namespace(
namespace=namespace_name,

View File

@ -53,7 +53,8 @@ class ImportImagesTest(base.BaseV2ImageTest):
def _create_image(self, disk_format=None, container_format=None):
# Create image
uuid = '00000000-1111-2222-3333-444455556666'
image_name = data_utils.rand_name('image')
image_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='image')
container_format = container_format or CONF.image.container_formats[0]
disk_format = disk_format or CONF.image.disk_formats[0]
image = self.create_image(name=image_name,
@ -345,7 +346,8 @@ class MultiStoresImportImagesTest(base.BaseV2ImageTest):
def _create_and_stage_image(self, all_stores=False):
"""Create Image & stage image file for glance-direct import method."""
image_name = data_utils.rand_name('test-image')
image_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='test-image')
container_format = CONF.image.container_formats[0]
disk_format = CONF.image.disk_formats[0]
image = self.create_image(name=image_name,
@ -416,7 +418,8 @@ class BasicOperationsImagesTest(base.BaseV2ImageTest):
"""
uuid = '00000000-1111-2222-3333-444455556666'
image_name = data_utils.rand_name('image')
image_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='image')
container_format = CONF.image.container_formats[0]
disk_format = CONF.image.disk_formats[0]
image = self.create_image(name=image_name,
@ -464,7 +467,8 @@ class BasicOperationsImagesTest(base.BaseV2ImageTest):
def test_delete_image(self):
"""Test deleting an image by image_id"""
# Create image
image_name = data_utils.rand_name('image')
image_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='image')
container_format = CONF.image.container_formats[0]
disk_format = CONF.image.disk_formats[0]
image = self.create_image(name=image_name,
@ -485,7 +489,8 @@ class BasicOperationsImagesTest(base.BaseV2ImageTest):
def test_update_image(self):
"""Test updating an image by image_id"""
# Create image
image_name = data_utils.rand_name('image')
image_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='image')
container_format = CONF.image.container_formats[0]
disk_format = CONF.image.disk_formats[0]
image = self.create_image(name=image_name,
@ -495,7 +500,8 @@ class BasicOperationsImagesTest(base.BaseV2ImageTest):
self.assertEqual('queued', image['status'])
# Update Image
new_image_name = data_utils.rand_name('new-image')
new_image_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='new-image')
self.client.update_image(image['id'], [
dict(replace='/name', value=new_image_name)])
@ -509,7 +515,8 @@ class BasicOperationsImagesTest(base.BaseV2ImageTest):
def test_deactivate_reactivate_image(self):
"""Test deactivating and reactivating an image"""
# Create image
image_name = data_utils.rand_name('image')
image_name = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='image')
image = self.create_image(name=image_name,
container_format='bare',
disk_format='raw',
@ -568,7 +575,9 @@ class ListUserImagesTest(base.BaseV2ImageTest):
"""
size = random.randint(1024, 4096)
image_file = io.BytesIO(data_utils.random_bytes(size))
tags = [data_utils.rand_name('tag'), data_utils.rand_name('tag')]
prefix = CONF.resource_name_prefix
tags = [data_utils.rand_name(prefix=prefix, name='tag'),
data_utils.rand_name(prefix=prefix, name='tag')]
image = cls.create_image(container_format=container_format,
disk_format=disk_format,
visibility='private',

View File

@ -13,9 +13,12 @@
# under the License.
from tempest.api.image import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
CONF = config.CONF
class ImagesTagsTest(base.BaseV2ImageTest):
"""Test image tags"""
@ -26,7 +29,8 @@ class ImagesTagsTest(base.BaseV2ImageTest):
image = self.create_image(container_format='bare',
disk_format='raw',
visibility='private')
tag = data_utils.rand_name('tag')
tag = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='tag')
self.addCleanup(self.client.delete_image, image['id'])
# Creating image tag and verify it.

View File

@ -13,10 +13,13 @@
# under the License.
from tempest.api.image import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
class ImagesTagsNegativeTest(base.BaseV2ImageTest):
"""Negative tests of image tags"""
@ -25,7 +28,8 @@ class ImagesTagsNegativeTest(base.BaseV2ImageTest):
@decorators.idempotent_id('8cd30f82-6f9a-4c6e-8034-c1b51fba43d9')
def test_update_tags_for_non_existing_image(self):
"""Update image tag with non existing image"""
tag = data_utils.rand_name('tag')
tag = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='tag')
non_exist_image = data_utils.rand_uuid()
self.assertRaises(lib_exc.NotFound, self.client.add_image_tag,
non_exist_image, tag)
@ -38,7 +42,8 @@ class ImagesTagsNegativeTest(base.BaseV2ImageTest):
disk_format='raw',
visibility='private'
)
tag = data_utils.rand_name('non-exist-tag')
tag = data_utils.rand_name(
prefix=CONF.resource_name_prefix, name='non-exist-tag')
self.addCleanup(self.client.delete_image, image['id'])
self.assertRaises(lib_exc.NotFound, self.client.delete_image_tag,
image['id'], tag)

View File

@ -31,7 +31,8 @@ class ExternalNetworksTestJSON(base.BaseAdminNetworkTest):
cls.network = cls.create_network()
def _create_network(self, external=True):
post_body = {'name': data_utils.rand_name('network-')}
post_body = {'name': data_utils.rand_name(
name='network-', prefix=CONF.resource_name_prefix)}
if external:
post_body['router:external'] = external
body = self.admin_networks_client.create_network(**post_body)

View File

@ -54,6 +54,8 @@ class ExternalNetworksAdminNegativeTestJSON(base.BaseAdminNetworkTest):
# create a port which will internally create an instance-ip
self.assertRaises(lib_exc.Conflict,
self.admin_ports_client.create_port,
name=data_utils.rand_name(self.__class__.__name__),
name=data_utils.rand_name(
self.__class__.__name__,
prefix=CONF.resource_name_prefix),
network_id=CONF.network.public_network_id,
fixed_ips=fixed_ips)

View File

@ -14,10 +14,13 @@
from tempest.api.network import base
from tempest.common import utils
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
CONF = config.CONF
class MeteringTestJSON(base.BaseAdminNetworkTest):
"""Tests the following operations in the Neutron API:
@ -37,7 +40,8 @@ class MeteringTestJSON(base.BaseAdminNetworkTest):
def resource_setup(cls):
super(MeteringTestJSON, cls).resource_setup()
description = "metering label created by tempest"
name = data_utils.rand_name("metering-label")
name = data_utils.rand_name(
name="metering-label", prefix=CONF.resource_name_prefix)
cls.metering_label = cls.create_metering_label(name, description)
remote_ip_prefix = ("10.0.0.0/24" if cls._ip_version == 4
else "fd02::/64")
@ -101,7 +105,8 @@ class MeteringTestJSON(base.BaseAdminNetworkTest):
def test_create_delete_metering_label_with_filters(self):
"""Verifies creating and deleting metering label with filters"""
# Creates a label
name = data_utils.rand_name('metering-label-')
name = data_utils.rand_name(
name='metering-label-', prefix=CONF.resource_name_prefix)
description = "label created by tempest"
body = self.admin_metering_labels_client.create_metering_label(
name=name, description=description)

View File

@ -45,7 +45,9 @@ class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest):
"""Test creating port with extended attribute"""
post_body = {"network_id": self.network['id'],
"binding:host_id": self.host_id,
"name": data_utils.rand_name(self.__class__.__name__)}
"name": data_utils.rand_name(
self.__class__.__name__,
prefix=CONF.resource_name_prefix)}
body = self.admin_ports_client.create_port(**post_body)
port = body['port']
self.addCleanup(self.admin_ports_client.wait_for_resource_deletion,
@ -62,7 +64,9 @@ class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest):
def test_update_port_binding_ext_attr(self):
"""Test updating port's extended attribute"""
post_body = {"network_id": self.network['id'],
"name": data_utils.rand_name(self.__class__.__name__)}
"name": data_utils.rand_name(
self.__class__.__name__,
prefix=CONF.resource_name_prefix)}
body = self.admin_ports_client.create_port(**post_body)
port = body['port']
self.addCleanup(self.admin_ports_client.wait_for_resource_deletion,
@ -83,7 +87,9 @@ class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest):
"""Test updating and listing port's extended attribute"""
# Create a new port
post_body = {"network_id": self.network['id'],
"name": data_utils.rand_name(self.__class__.__name__)}
"name": data_utils.rand_name(
self.__class__.__name__,
prefix=CONF.resource_name_prefix)}
body = self.admin_ports_client.create_port(**post_body)
port = body['port']
self.addCleanup(self.admin_ports_client.wait_for_resource_deletion,
@ -113,7 +119,8 @@ class PortsAdminExtendedAttrsTestJSON(base.BaseAdminNetworkTest):
def test_show_port_binding_ext_attr(self):
"""Test showing port's extended attribute"""
body = self.admin_ports_client.create_port(
name=data_utils.rand_name(self.__class__.__name__),
name=data_utils.rand_name(
self.__class__.__name__, prefix=CONF.resource_name_prefix),
network_id=self.network['id'])
port = body['port']
self.addCleanup(self.admin_ports_client.wait_for_resource_deletion,

View File

@ -54,16 +54,17 @@ class RoutersAdminTest(base.BaseAdminNetworkTest):
@decorators.idempotent_id('e54dd3a3-4352-4921-b09d-44369ae17397')
def test_create_router_setting_project_id(self):
prefix = CONF.resource_name_prefix
"""Test creating router from admin user setting project_id."""
project = data_utils.rand_name('test_tenant_')
description = data_utils.rand_name('desc_')
project = data_utils.rand_name(name='test_tenant_', prefix=prefix)
description = data_utils.rand_name(name='desc_', prefix=prefix)
project = identity.identity_utils(self.os_admin).create_project(
name=project, description=description)
project_id = project['id']
self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
project_id)
name = data_utils.rand_name('router-')
name = data_utils.rand_name(name='router-', prefix=prefix)
create_body = self.admin_routers_client.create_router(
name=name, project_id=project_id)
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@ -89,7 +90,8 @@ class RoutersAdminTest(base.BaseAdminNetworkTest):
'The public_network_id option must be specified.')
def test_create_router_with_snat_explicit(self):
"""Test creating router with specified enable_snat value"""
name = data_utils.rand_name('snat-router')
name = data_utils.rand_name(
'snat-router', prefix=CONF.resource_name_prefix)
# Create a router enabling snat attributes
enable_snat_states = [False, True]
for enable_snat in enable_snat_states:
@ -226,7 +228,8 @@ class RoutersAdminTest(base.BaseAdminNetworkTest):
"""Test creating router setting gateway with fixed ip"""
# At first create an external network and then use that
# to create address and delete
network_name = data_utils.rand_name(self.__class__.__name__)
network_name = data_utils.rand_name(
self.__class__.__name__, prefix=CONF.resource_name_prefix)
network_1 = self.admin_networks_client.create_network(
name=network_name, **{'router:external': True})['network']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@ -237,7 +240,8 @@ class RoutersAdminTest(base.BaseAdminNetworkTest):
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.admin_subnets_client.delete_subnet, subnet['id'])
port = self.admin_ports_client.create_port(
name=data_utils.rand_name(self.__class__.__name__),
name=data_utils.rand_name(
self.__class__.__name__, prefix=CONF.resource_name_prefix),
network_id=network_1['id'])['port']
self.admin_ports_client.delete_port(port_id=port['id'])
fixed_ip = {

View File

@ -17,10 +17,13 @@ import testtools
from tempest.api.network import base
from tempest.common import utils
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
CONF = config.CONF
class RoutersTestDVR(base.BaseAdminNetworkTest):
@ -41,7 +44,8 @@ class RoutersTestDVR(base.BaseAdminNetworkTest):
@classmethod
def resource_setup(cls):
super(RoutersTestDVR, cls).resource_setup()
name = data_utils.rand_name('pretest-check')
name = data_utils.rand_name(
name='pretest-check', prefix=CONF.resource_name_prefix)
router = cls.admin_routers_client.create_router(name=name)
cls.admin_routers_client.delete_router(router['router']['id'])
if 'distributed' not in router['router']:
@ -60,7 +64,8 @@ class RoutersTestDVR(base.BaseAdminNetworkTest):
The router is created and the "distributed" attribute is
set to True
"""
name = data_utils.rand_name('router')
name = data_utils.rand_name(
name='router', prefix=CONF.resource_name_prefix)
router = self.admin_routers_client.create_router(name=name,
distributed=True)
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@ -81,7 +86,8 @@ class RoutersTestDVR(base.BaseAdminNetworkTest):
set to False, thus making it a "Centralized Virtual Router"
as opposed to a "Distributed Virtual Router"
"""
name = data_utils.rand_name('router')
name = data_utils.rand_name(
name='router', prefix=CONF.resource_name_prefix)
router = self.admin_routers_client.create_router(name=name,
distributed=False)
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@ -105,7 +111,8 @@ class RoutersTestDVR(base.BaseAdminNetworkTest):
set to False. Once the router is updated, the distributed
attribute will be set to True
"""
name = data_utils.rand_name('router')
name = data_utils.rand_name(
name='router', prefix=CONF.resource_name_prefix)
project_id = self.routers_client.project_id
# router needs to be in admin state down in order to be upgraded to DVR
# l3ha routers are not upgradable to dvr, make it explicitly non ha

View File

@ -45,7 +45,8 @@ class RoutersAdminNegativeTest(base.BaseAdminNetworkTest):
"""Test creating router with gateway set to used ip should fail"""
# At first create a address from public_network_id
port = self.admin_ports_client.create_port(
name=data_utils.rand_name(self.__class__.__name__),
name=data_utils.rand_name(
self.__class__.__name__, prefix=CONF.resource_name_prefix),
network_id=CONF.network.public_network_id)['port']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.admin_ports_client.delete_port,

View File

@ -104,7 +104,7 @@ class BaseNetworkTest(tempest.test.BaseTestCase):
def create_network(cls, network_name=None, **kwargs):
"""Wrapper utility that returns a test network."""
network_name = network_name or data_utils.rand_name(
cls.__name__ + '-test-network')
cls.__name__ + '-test-network', prefix=CONF.resource_name_prefix)
body = cls.networks_client.create_network(name=network_name, **kwargs)
network = body['network']
@ -161,7 +161,8 @@ class BaseNetworkTest(tempest.test.BaseTestCase):
@classmethod
def create_port(cls, network, **kwargs):
if 'name' not in kwargs:
kwargs['name'] = data_utils.rand_name(cls.__name__)
kwargs['name'] = data_utils.rand_name(
cls.__name__, prefix=CONF.resource_name_prefix)
"""Wrapper utility that returns a test port."""
body = cls.ports_client.create_port(network_id=network['id'],
**kwargs)
@ -182,7 +183,7 @@ class BaseNetworkTest(tempest.test.BaseTestCase):
external_network_id=None, enable_snat=None,
**kwargs):
router_name = router_name or data_utils.rand_name(
cls.__name__ + "-router")
cls.__name__ + "-router", prefix=CONF.resource_name_prefix)
ext_gw_info = {}
if external_network_id:

View File

@ -14,15 +14,19 @@
# under the License.
from tempest.api.network import base
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
CONF = config.CONF
class BaseSecGroupTest(base.BaseNetworkTest):
def _create_security_group(self):
# Create a security group
name = data_utils.rand_name('secgroup-')
name = data_utils.rand_name(
name='secgroup-', prefix=CONF.resource_name_prefix)
group_create_body = (
self.security_groups_client.create_security_group(name=name))
self.addCleanup(test_utils.call_and_ignore_notfound_exc,

View File

@ -15,10 +15,13 @@
from tempest.api.network import base
from tempest.common import utils
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
CONF = config.CONF
class AllowedAddressPairTestJSON(base.BaseNetworkTest):
"""Tests the Neutron Allowed Address Pair API extension
@ -60,7 +63,8 @@ class AllowedAddressPairTestJSON(base.BaseNetworkTest):
'mac_address': self.mac_address}]
body = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__),
name=data_utils.rand_name(
self.__class__.__name__, prefix=CONF.resource_name_prefix),
allowed_address_pairs=allowed_address_pairs)
port_id = body['port']['id']
self.addCleanup(self.ports_client.wait_for_resource_deletion,
@ -80,7 +84,8 @@ class AllowedAddressPairTestJSON(base.BaseNetworkTest):
# Create a port without allowed address pair
body = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__))
name=data_utils.rand_name(
self.__class__.__name__, prefix=CONF.resource_name_prefix))
port_id = body['port']['id']
self.addCleanup(self.ports_client.wait_for_resource_deletion,
port_id)
@ -126,7 +131,8 @@ class AllowedAddressPairTestJSON(base.BaseNetworkTest):
"""Update allowed address pair port with multiple ip and mac"""
resp = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__))
name=data_utils.rand_name(
self.__class__.__name__, prefix=CONF.resource_name_prefix))
newportid = resp['port']['id']
self.addCleanup(self.ports_client.wait_for_resource_deletion,
newportid)

View File

@ -15,10 +15,13 @@
from tempest.api.network import base
from tempest.common import utils
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
from tempest.lib import decorators
CONF = config.CONF
class ExtraDHCPOptionsTestJSON(base.BaseNetworkTest):
"""Tests the following operations with the Extra DHCP Options:
@ -61,7 +64,8 @@ class ExtraDHCPOptionsTestJSON(base.BaseNetworkTest):
"""Test creating a port with Extra DHCP Options and list those"""
body = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__),
name=data_utils.rand_name(
self.__class__.__name__, prefix=CONF.resource_name_prefix),
extra_dhcp_opts=self.extra_dhcp_opts)
port_id = body['port']['id']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@ -77,7 +81,8 @@ class ExtraDHCPOptionsTestJSON(base.BaseNetworkTest):
@decorators.idempotent_id('9a6aebf4-86ee-4f47-b07a-7f7232c55607')
def test_update_show_port_with_extra_dhcp_options(self):
"""Test updating port with extra DHCP options and show that port"""
name = data_utils.rand_name('new-port-name')
name = data_utils.rand_name(
name='new-port-name', prefix=CONF.resource_name_prefix)
self.ports_client.update_port(
self.port['id'],
name=name,

View File

@ -153,7 +153,8 @@ class FloatingIPTestJSON(base.BaseNetworkTest):
# Create a port
port = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__))
name=data_utils.rand_name(
self.__class__.__name__, prefix=CONF.resource_name_prefix))
created_port = port['port']
floating_ip = self.floating_ips_client.update_floatingip(
created_floating_ip['id'],
@ -183,7 +184,8 @@ class FloatingIPTestJSON(base.BaseNetworkTest):
self.floating_ips_client.delete_floatingip,
created_floating_ip['id'])
self.assertEqual(created_floating_ip['router_id'], self.router['id'])
network_name = data_utils.rand_name(self.__class__.__name__)
network_name = data_utils.rand_name(
self.__class__.__name__, prefix=CONF.resource_name_prefix)
network2 = self.networks_client.create_network(
name=network_name)['network']
self.addCleanup(
@ -258,7 +260,8 @@ class FloatingIPTestJSON(base.BaseNetworkTest):
# Create port
body = self.ports_client.create_port(
network_id=self.network['id'],
name=data_utils.rand_name(self.__class__.__name__),
name=data_utils.rand_name(
self.__class__.__name__, prefix=CONF.resource_name_prefix),
fixed_ips=fixed_ips)
port = body['port']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,

Some files were not shown because too many files have changed in this diff Show More