Merge "Adding description for testcases - volume part2"

This commit is contained in:
Zuul 2020-07-29 18:19:03 +00:00 committed by Gerrit Code Review
commit 2ff32b34b2
9 changed files with 44 additions and 9 deletions

View File

@ -23,12 +23,15 @@ CONF = config.CONF
class GroupsTest(base.BaseVolumeAdminTest): class GroupsTest(base.BaseVolumeAdminTest):
"""Tests of volume groups with microversion greater than 3.12"""
_api_version = 3 _api_version = 3
min_microversion = '3.13' min_microversion = '3.13'
max_microversion = 'latest' max_microversion = 'latest'
@decorators.idempotent_id('4b111d28-b73d-4908-9bd2-03dc2992e4d4') @decorators.idempotent_id('4b111d28-b73d-4908-9bd2-03dc2992e4d4')
def test_group_create_show_list_delete(self): def test_group_create_show_list_delete(self):
"""Test creating, showing, listing and deleting of volume group"""
# Create volume type # Create volume type
volume_type = self.create_volume_type() volume_type = self.create_volume_type()
@ -95,6 +98,7 @@ class GroupsTest(base.BaseVolumeAdminTest):
@decorators.idempotent_id('4a8a6fd2-8b3b-4641-8f54-6a6f99320006') @decorators.idempotent_id('4a8a6fd2-8b3b-4641-8f54-6a6f99320006')
def test_group_update(self): def test_group_update(self):
"""Test updating volume group"""
# Create volume type # Create volume type
volume_type = self.create_volume_type() volume_type = self.create_volume_type()
@ -150,12 +154,15 @@ class GroupsTest(base.BaseVolumeAdminTest):
class GroupsV314Test(base.BaseVolumeAdminTest): class GroupsV314Test(base.BaseVolumeAdminTest):
"""Tests of volume groups with microversion greater than 3.13"""
_api_version = 3 _api_version = 3
min_microversion = '3.14' min_microversion = '3.14'
max_microversion = 'latest' max_microversion = 'latest'
@decorators.idempotent_id('2424af8c-7851-4888-986a-794b10c3210e') @decorators.idempotent_id('2424af8c-7851-4888-986a-794b10c3210e')
def test_create_group_from_group(self): def test_create_group_from_group(self):
"""Test creating volume group from volume group"""
# Create volume type # Create volume type
volume_type = self.create_volume_type() volume_type = self.create_volume_type()
@ -185,12 +192,15 @@ class GroupsV314Test(base.BaseVolumeAdminTest):
class GroupsV320Test(base.BaseVolumeAdminTest): class GroupsV320Test(base.BaseVolumeAdminTest):
"""Tests of volume groups with microversion greater than 3.19"""
_api_version = 3 _api_version = 3
min_microversion = '3.20' min_microversion = '3.20'
max_microversion = 'latest' max_microversion = 'latest'
@decorators.idempotent_id('b20c696b-0cbc-49a5-8b3a-b1fb9338f45c') @decorators.idempotent_id('b20c696b-0cbc-49a5-8b3a-b1fb9338f45c')
def test_reset_group_status(self): def test_reset_group_status(self):
"""Test resetting volume group status to creating/available/error"""
# Create volume type # Create volume type
volume_type = self.create_volume_type() volume_type = self.create_volume_type()

View File

@ -48,6 +48,7 @@ class SnapshotManageAdminTest(base.BaseVolumeAdminTest):
@decorators.idempotent_id('0132f42d-0147-4b45-8501-cc504bbf7810') @decorators.idempotent_id('0132f42d-0147-4b45-8501-cc504bbf7810')
def test_unmanage_manage_snapshot(self): def test_unmanage_manage_snapshot(self):
"""Test unmanaging and managing volume snapshot"""
# Create a volume # Create a volume
volume = self.create_volume() volume = self.create_volume()

View File

@ -22,6 +22,8 @@ CONF = config.CONF
class UserMessagesTest(base.BaseVolumeAdminTest): class UserMessagesTest(base.BaseVolumeAdminTest):
"""Test volume messages with microversion greater than 3.2"""
_api_version = 3 _api_version = 3
min_microversion = '3.3' min_microversion = '3.3'
max_microversion = 'latest' max_microversion = 'latest'
@ -51,6 +53,7 @@ class UserMessagesTest(base.BaseVolumeAdminTest):
@decorators.idempotent_id('50f29e6e-f363-42e1-8ad1-f67ae7fd4d5a') @decorators.idempotent_id('50f29e6e-f363-42e1-8ad1-f67ae7fd4d5a')
def test_list_show_messages(self): def test_list_show_messages(self):
"""Test listing and showing volume messages"""
message_id = self._create_user_message() message_id = self._create_user_message()
self.addCleanup(self.messages_client.delete_message, message_id) self.addCleanup(self.messages_client.delete_message, message_id)
@ -62,6 +65,7 @@ class UserMessagesTest(base.BaseVolumeAdminTest):
@decorators.idempotent_id('c6eb6901-cdcc-490f-b735-4fe251842aed') @decorators.idempotent_id('c6eb6901-cdcc-490f-b735-4fe251842aed')
def test_delete_message(self): def test_delete_message(self):
"""Test deleting volume messages"""
message_id = self._create_user_message() message_id = self._create_user_message()
self.messages_client.delete_message(message_id) self.messages_client.delete_message(message_id)
self.messages_client.wait_for_resource_deletion(message_id) self.messages_client.wait_for_resource_deletion(message_id)

View File

@ -18,9 +18,11 @@ from tempest.lib import decorators
class VolumeHostsAdminTestsJSON(base.BaseVolumeAdminTest): class VolumeHostsAdminTestsJSON(base.BaseVolumeAdminTest):
"""Test fetching volume hosts info by admin users"""
@decorators.idempotent_id('d5f3efa2-6684-4190-9ced-1c2f526352ad') @decorators.idempotent_id('d5f3efa2-6684-4190-9ced-1c2f526352ad')
def test_list_hosts(self): def test_list_hosts(self):
"""Test listing volume hosts"""
hosts = self.admin_hosts_client.list_hosts()['hosts'] hosts = self.admin_hosts_client.list_hosts()['hosts']
self.assertGreaterEqual(len(hosts), 2, self.assertGreaterEqual(len(hosts), 2,
"The count of volume hosts is < 2, " "The count of volume hosts is < 2, "
@ -28,6 +30,7 @@ class VolumeHostsAdminTestsJSON(base.BaseVolumeAdminTest):
@decorators.idempotent_id('21168d57-b373-4b71-a3ac-f2c88f0c5d31') @decorators.idempotent_id('21168d57-b373-4b71-a3ac-f2c88f0c5d31')
def test_show_host(self): def test_show_host(self):
"""Test getting volume host details"""
hosts = self.admin_hosts_client.list_hosts()['hosts'] hosts = self.admin_hosts_client.list_hosts()['hosts']
self.assertGreaterEqual(len(hosts), 2, self.assertGreaterEqual(len(hosts), 2,
"The count of volume hosts is < 2, " "The count of volume hosts is < 2, "

View File

@ -24,6 +24,7 @@ CONF = config.CONF
class VolumeManageAdminTest(base.BaseVolumeAdminTest): class VolumeManageAdminTest(base.BaseVolumeAdminTest):
"""Test volume manage by admin users"""
@classmethod @classmethod
def skip_checks(cls): def skip_checks(cls):
@ -39,6 +40,7 @@ class VolumeManageAdminTest(base.BaseVolumeAdminTest):
@decorators.idempotent_id('70076c71-0ce1-4208-a8ff-36a66e65cc1e') @decorators.idempotent_id('70076c71-0ce1-4208-a8ff-36a66e65cc1e')
def test_unmanage_manage_volume(self): def test_unmanage_manage_volume(self):
"""Test unmanaging and managing volume"""
# Create original volume # Create original volume
org_vol_id = self.create_volume()['id'] org_vol_id = self.create_volume()['id']
org_vol_info = self.admin_volume_client.show_volume( org_vol_info = self.admin_volume_client.show_volume(

View File

@ -21,6 +21,8 @@ CONF = config.CONF
class VolumePoolsAdminTestsJSON(base.BaseVolumeAdminTest): class VolumePoolsAdminTestsJSON(base.BaseVolumeAdminTest):
"""Test getting volume pools by admin users"""
def _assert_pools(self, with_detail=False): def _assert_pools(self, with_detail=False):
cinder_pools = self.admin_scheduler_stats_client.list_pools( cinder_pools = self.admin_scheduler_stats_client.list_pools(
detail=with_detail)['pools'] detail=with_detail)['pools']
@ -33,8 +35,10 @@ class VolumePoolsAdminTestsJSON(base.BaseVolumeAdminTest):
@decorators.idempotent_id('0248a46c-e226-4933-be10-ad6fca8227e7') @decorators.idempotent_id('0248a46c-e226-4933-be10-ad6fca8227e7')
def test_get_pools_without_details(self): def test_get_pools_without_details(self):
"""Test getting volume pools without detail"""
self._assert_pools() self._assert_pools()
@decorators.idempotent_id('d4bb61f7-762d-4437-b8a4-5785759a0ced') @decorators.idempotent_id('d4bb61f7-762d-4437-b8a4-5785759a0ced')
def test_get_pools_with_details(self): def test_get_pools_with_details(self):
"""Test getting volume pools with detail"""
self._assert_pools(with_detail=True) self._assert_pools(with_detail=True)

View File

@ -24,6 +24,7 @@ QUOTA_KEYS = ['gigabytes', 'snapshots', 'volumes', 'backups',
class VolumeQuotasNegativeTestJSON(base.BaseVolumeAdminTest): class VolumeQuotasNegativeTestJSON(base.BaseVolumeAdminTest):
"""Negative tests of volume quotas"""
@classmethod @classmethod
def setup_credentials(cls): def setup_credentials(cls):
@ -52,6 +53,7 @@ class VolumeQuotasNegativeTestJSON(base.BaseVolumeAdminTest):
@decorators.attr(type='negative') @decorators.attr(type='negative')
@decorators.idempotent_id('bf544854-d62a-47f2-a681-90f7a47d86b6') @decorators.idempotent_id('bf544854-d62a-47f2-a681-90f7a47d86b6')
def test_quota_volumes(self): def test_quota_volumes(self):
"""Creating more volume than allowed quota will fail"""
self.admin_quotas_client.update_quota_set(self.demo_tenant_id, self.admin_quotas_client.update_quota_set(self.demo_tenant_id,
volumes=1, gigabytes=-1) volumes=1, gigabytes=-1)
self.assertRaises(lib_exc.OverLimit, self.assertRaises(lib_exc.OverLimit,
@ -61,6 +63,7 @@ class VolumeQuotasNegativeTestJSON(base.BaseVolumeAdminTest):
@decorators.attr(type='negative') @decorators.attr(type='negative')
@decorators.idempotent_id('2dc27eee-8659-4298-b900-169d71a91374') @decorators.idempotent_id('2dc27eee-8659-4298-b900-169d71a91374')
def test_quota_volume_gigabytes(self): def test_quota_volume_gigabytes(self):
"""Creating volume with size larger than allowed quota will fail"""
self.admin_quotas_client.update_quota_set( self.admin_quotas_client.update_quota_set(
self.demo_tenant_id, gigabytes=CONF.volume.volume_size, volumes=-1) self.demo_tenant_id, gigabytes=CONF.volume.volume_size, volumes=-1)
self.assertRaises(lib_exc.OverLimit, self.assertRaises(lib_exc.OverLimit,
@ -70,6 +73,7 @@ class VolumeQuotasNegativeTestJSON(base.BaseVolumeAdminTest):
@decorators.attr(type=['negative']) @decorators.attr(type=['negative'])
@decorators.idempotent_id('d321dc21-d8c6-401f-95fe-49f4845f1a6d') @decorators.idempotent_id('d321dc21-d8c6-401f-95fe-49f4845f1a6d')
def test_volume_extend_gigabytes_quota_deviation(self): def test_volume_extend_gigabytes_quota_deviation(self):
"""Extending volume with size larger than allowed quota will fail"""
self.admin_quotas_client.update_quota_set( self.admin_quotas_client.update_quota_set(
self.demo_tenant_id, gigabytes=CONF.volume.volume_size) self.demo_tenant_id, gigabytes=CONF.volume.volume_size)
self.assertRaises(lib_exc.OverLimit, self.assertRaises(lib_exc.OverLimit,

View File

@ -20,11 +20,12 @@ from tempest.lib import exceptions as lib_exc
class VolumeTypesNegativeTest(base.BaseVolumeAdminTest): class VolumeTypesNegativeTest(base.BaseVolumeAdminTest):
"""Negative tests of volume type"""
@decorators.attr(type=['negative']) @decorators.attr(type=['negative'])
@decorators.idempotent_id('878b4e57-faa2-4659-b0d1-ce740a06ae81') @decorators.idempotent_id('878b4e57-faa2-4659-b0d1-ce740a06ae81')
def test_create_with_empty_name(self): def test_create_with_empty_name(self):
# Should not be able to create volume type with an empty name. """Test creating volume type with an empty name will fail"""
self.assertRaises( self.assertRaises(
lib_exc.BadRequest, lib_exc.BadRequest,
self.admin_volume_types_client.create_volume_type, name='') self.admin_volume_types_client.create_volume_type, name='')
@ -32,7 +33,7 @@ class VolumeTypesNegativeTest(base.BaseVolumeAdminTest):
@decorators.attr(type=['negative']) @decorators.attr(type=['negative'])
@decorators.idempotent_id('994610d6-0476-4018-a644-a2602ef5d4aa') @decorators.idempotent_id('994610d6-0476-4018-a644-a2602ef5d4aa')
def test_get_nonexistent_type_id(self): def test_get_nonexistent_type_id(self):
# Should not be able to get volume type with nonexistent type id. """Test getting volume type with nonexistent type id will fail"""
self.assertRaises(lib_exc.NotFound, self.assertRaises(lib_exc.NotFound,
self.admin_volume_types_client.show_volume_type, self.admin_volume_types_client.show_volume_type,
data_utils.rand_uuid()) data_utils.rand_uuid())
@ -40,7 +41,7 @@ class VolumeTypesNegativeTest(base.BaseVolumeAdminTest):
@decorators.attr(type=['negative']) @decorators.attr(type=['negative'])
@decorators.idempotent_id('6b3926d2-7d73-4896-bc3d-e42dfd11a9f6') @decorators.idempotent_id('6b3926d2-7d73-4896-bc3d-e42dfd11a9f6')
def test_delete_nonexistent_type_id(self): def test_delete_nonexistent_type_id(self):
# Should not be able to delete volume type with nonexistent type id. """Test deleting volume type with nonexistent type id will fail"""
self.assertRaises(lib_exc.NotFound, self.assertRaises(lib_exc.NotFound,
self.admin_volume_types_client.delete_volume_type, self.admin_volume_types_client.delete_volume_type,
data_utils.rand_uuid()) data_utils.rand_uuid())
@ -48,7 +49,7 @@ class VolumeTypesNegativeTest(base.BaseVolumeAdminTest):
@decorators.attr(type=['negative']) @decorators.attr(type=['negative'])
@decorators.idempotent_id('8c09f849-f225-4d78-ba87-bffd9a5e0c6f') @decorators.idempotent_id('8c09f849-f225-4d78-ba87-bffd9a5e0c6f')
def test_create_volume_with_private_volume_type(self): def test_create_volume_with_private_volume_type(self):
# Should not be able to create volume with private volume type. """Test creating volume with private volume type will fail"""
params = {'os-volume-type-access:is_public': False} params = {'os-volume-type-access:is_public': False}
volume_type = self.create_volume_type(**params) volume_type = self.create_volume_type(**params)
self.assertRaises(lib_exc.NotFound, self.assertRaises(lib_exc.NotFound,

View File

@ -23,6 +23,8 @@ CONF = config.CONF
class VolumesActionsTest(base.BaseVolumeAdminTest): class VolumesActionsTest(base.BaseVolumeAdminTest):
"""Test volume actions"""
create_default_network = True create_default_network = True
def _create_reset_and_force_delete_temp_volume(self, status=None): def _create_reset_and_force_delete_temp_volume(self, status=None):
@ -38,7 +40,10 @@ class VolumesActionsTest(base.BaseVolumeAdminTest):
@decorators.idempotent_id('d063f96e-a2e0-4f34-8b8a-395c42de1845') @decorators.idempotent_id('d063f96e-a2e0-4f34-8b8a-395c42de1845')
def test_volume_reset_status(self): def test_volume_reset_status(self):
# test volume reset status : available->error->available->maintenance """Test resetting volume status
Reset volume status to available->error->available->maintenance
"""
volume = self.create_volume() volume = self.create_volume()
self.addCleanup(waiters.wait_for_volume_resource_status, self.addCleanup(waiters.wait_for_volume_resource_status,
self.volumes_client, volume['id'], 'available') self.volumes_client, volume['id'], 'available')
@ -52,27 +57,28 @@ class VolumesActionsTest(base.BaseVolumeAdminTest):
@decorators.idempotent_id('21737d5a-92f2-46d7-b009-a0cc0ee7a570') @decorators.idempotent_id('21737d5a-92f2-46d7-b009-a0cc0ee7a570')
def test_volume_force_delete_when_volume_is_creating(self): def test_volume_force_delete_when_volume_is_creating(self):
# test force delete when status of volume is creating """Test force deleting volume when its status is creating"""
self._create_reset_and_force_delete_temp_volume('creating') self._create_reset_and_force_delete_temp_volume('creating')
@decorators.idempotent_id('db8d607a-aa2e-4beb-b51d-d4005c232011') @decorators.idempotent_id('db8d607a-aa2e-4beb-b51d-d4005c232011')
def test_volume_force_delete_when_volume_is_attaching(self): def test_volume_force_delete_when_volume_is_attaching(self):
# test force delete when status of volume is attaching """Test force deleting volume when its status is attaching"""
self._create_reset_and_force_delete_temp_volume('attaching') self._create_reset_and_force_delete_temp_volume('attaching')
@decorators.idempotent_id('3e33a8a8-afd4-4d64-a86b-c27a185c5a4a') @decorators.idempotent_id('3e33a8a8-afd4-4d64-a86b-c27a185c5a4a')
def test_volume_force_delete_when_volume_is_error(self): def test_volume_force_delete_when_volume_is_error(self):
# test force delete when status of volume is error """Test force deleting volume when its status is error"""
self._create_reset_and_force_delete_temp_volume('error') self._create_reset_and_force_delete_temp_volume('error')
@decorators.idempotent_id('b957cabd-1486-4e21-90cf-a9ed3c39dfb2') @decorators.idempotent_id('b957cabd-1486-4e21-90cf-a9ed3c39dfb2')
def test_volume_force_delete_when_volume_is_maintenance(self): def test_volume_force_delete_when_volume_is_maintenance(self):
# test force delete when status of volume is maintenance """Test force deleting volume when its status is maintenance"""
self._create_reset_and_force_delete_temp_volume('maintenance') self._create_reset_and_force_delete_temp_volume('maintenance')
@decorators.idempotent_id('d38285d9-929d-478f-96a5-00e66a115b81') @decorators.idempotent_id('d38285d9-929d-478f-96a5-00e66a115b81')
@utils.services('compute') @utils.services('compute')
def test_force_detach_volume(self): def test_force_detach_volume(self):
"""Test force detaching volume when its status is error"""
# Create a server and a volume # Create a server and a volume
server_id = self.create_server()['id'] server_id = self.create_server()['id']
volume_id = self.create_volume()['id'] volume_id = self.create_volume()['id']