[3/11] Refactor test_volume file
Due to the situation, that we've already had more that 7000 lines of code in this file and it contains different test cases, it is reasonably to divide it into smaller files. This patch includes test cases that are connected with volume manage test cases. Change-Id: I3cb76c107bc9a33ab37b78221d5c293db2f8ed43
This commit is contained in:
parent
c72c570786
commit
2ed2b2a2cb
|
@ -4743,124 +4743,6 @@ class VolumeTestCase(base.BaseVolumeTestCase):
|
|||
self.context,
|
||||
snap)
|
||||
|
||||
@mock.patch('cinder.volume.drivers.lvm.LVMVolumeDriver.'
|
||||
'manage_existing')
|
||||
@mock.patch('cinder.volume.drivers.lvm.LVMVolumeDriver.'
|
||||
'manage_existing_get_size')
|
||||
@mock.patch('cinder.volume.utils.notify_about_volume_usage')
|
||||
def test_manage_volume_with_notify(self, mock_notify, mock_size,
|
||||
mock_manage):
|
||||
elevated = context.get_admin_context()
|
||||
vol_type = db.volume_type_create(
|
||||
elevated, {'name': 'type1', 'extra_specs': {}})
|
||||
# create source volume
|
||||
volume_params = {'volume_type_id': vol_type.id, 'status': 'managing'}
|
||||
test_vol = tests_utils.create_volume(self.context, **volume_params)
|
||||
mock_size.return_value = 1
|
||||
mock_manage.return_value = None
|
||||
|
||||
self.volume.manage_existing(self.context, test_vol, 'volume_ref')
|
||||
mock_notify.assert_called_with(self.context, test_vol,
|
||||
'manage_existing.end',
|
||||
host=test_vol.host)
|
||||
|
||||
@mock.patch('cinder.volume.drivers.lvm.LVMVolumeDriver.'
|
||||
'manage_existing_get_size')
|
||||
@mock.patch('cinder.volume.flows.manager.manage_existing.'
|
||||
'ManageExistingTask.execute')
|
||||
def test_manage_volume_raise_driver_exception(self, mock_execute,
|
||||
mock_driver_get_size):
|
||||
elevated = context.get_admin_context()
|
||||
project_id = self.context.project_id
|
||||
db.volume_type_create(elevated, {'name': 'type1', 'extra_specs': {}})
|
||||
vol_type = db.volume_type_get_by_name(elevated, 'type1')
|
||||
# create source volume
|
||||
self.volume_params['volume_type_id'] = vol_type['id']
|
||||
self.volume_params['status'] = 'managing'
|
||||
test_vol = tests_utils.create_volume(self.context,
|
||||
**self.volume_params)
|
||||
mock_execute.side_effect = exception.VolumeBackendAPIException(
|
||||
data="volume driver got exception")
|
||||
mock_driver_get_size.return_value = 1
|
||||
# Set quota usage
|
||||
reserve_opts = {'volumes': 1, 'gigabytes': 1}
|
||||
reservations = QUOTAS.reserve(self.context, project_id=project_id,
|
||||
**reserve_opts)
|
||||
QUOTAS.commit(self.context, reservations)
|
||||
usage = db.quota_usage_get(self.context, project_id, 'volumes')
|
||||
volumes_in_use = usage.in_use
|
||||
usage = db.quota_usage_get(self.context, project_id, 'gigabytes')
|
||||
gigabytes_in_use = usage.in_use
|
||||
|
||||
self.assertRaises(exception.VolumeBackendAPIException,
|
||||
self.volume.manage_existing,
|
||||
self.context, test_vol,
|
||||
'volume_ref')
|
||||
# check volume status
|
||||
volume = objects.Volume.get_by_id(context.get_admin_context(),
|
||||
test_vol.id)
|
||||
self.assertEqual('error_managing', volume.status)
|
||||
# Delete this volume with 'error_managing_deleting' status in c-vol.
|
||||
test_vol.status = 'error_managing_deleting'
|
||||
test_vol.save()
|
||||
self.volume.delete_volume(self.context, test_vol)
|
||||
ctxt = context.get_admin_context(read_deleted='yes')
|
||||
volume = objects.Volume.get_by_id(ctxt, test_vol.id)
|
||||
self.assertEqual('deleted', volume.status)
|
||||
# Get in_use number after deleting error_managing volume
|
||||
usage = db.quota_usage_get(self.context, project_id, 'volumes')
|
||||
volumes_in_use_new = usage.in_use
|
||||
self.assertEqual(volumes_in_use, volumes_in_use_new)
|
||||
usage = db.quota_usage_get(self.context, project_id, 'gigabytes')
|
||||
gigabytes_in_use_new = usage.in_use
|
||||
self.assertEqual(gigabytes_in_use, gigabytes_in_use_new)
|
||||
|
||||
@mock.patch('cinder.volume.drivers.lvm.LVMVolumeDriver.'
|
||||
'manage_existing_get_size')
|
||||
def test_manage_volume_raise_driver_size_exception(self,
|
||||
mock_driver_get_size):
|
||||
elevated = context.get_admin_context()
|
||||
project_id = self.context.project_id
|
||||
db.volume_type_create(elevated, {'name': 'type1', 'extra_specs': {}})
|
||||
# create source volume
|
||||
test_vol = tests_utils.create_volume(self.context,
|
||||
**self.volume_params)
|
||||
mock_driver_get_size.side_effect = exception.VolumeBackendAPIException(
|
||||
data="volume driver got exception")
|
||||
|
||||
# Set quota usage
|
||||
reserve_opts = {'volumes': 1, 'gigabytes': 1}
|
||||
reservations = QUOTAS.reserve(self.context, project_id=project_id,
|
||||
**reserve_opts)
|
||||
QUOTAS.commit(self.context, reservations)
|
||||
usage = db.quota_usage_get(self.context, project_id, 'volumes')
|
||||
volumes_in_use = usage.in_use
|
||||
usage = db.quota_usage_get(self.context, project_id, 'gigabytes')
|
||||
gigabytes_in_use = usage.in_use
|
||||
|
||||
self.assertRaises(exception.VolumeBackendAPIException,
|
||||
self.volume.manage_existing,
|
||||
self.context, test_vol,
|
||||
'volume_ref')
|
||||
# check volume status
|
||||
volume = objects.Volume.get_by_id(context.get_admin_context(),
|
||||
test_vol.id)
|
||||
self.assertEqual('error_managing', volume.status)
|
||||
# Delete this volume with 'error_managing_deleting' status in c-vol.
|
||||
test_vol.status = 'error_managing_deleting'
|
||||
test_vol.save()
|
||||
self.volume.delete_volume(self.context, test_vol)
|
||||
ctxt = context.get_admin_context(read_deleted='yes')
|
||||
volume = objects.Volume.get_by_id(ctxt, test_vol.id)
|
||||
self.assertEqual('deleted', volume.status)
|
||||
# Get in_use number after raising exception
|
||||
usage = db.quota_usage_get(self.context, project_id, 'volumes')
|
||||
volumes_in_use_new = usage.in_use
|
||||
self.assertEqual(volumes_in_use, volumes_in_use_new)
|
||||
usage = db.quota_usage_get(self.context, project_id, 'gigabytes')
|
||||
gigabytes_in_use_new = usage.in_use
|
||||
self.assertEqual(gigabytes_in_use, gigabytes_in_use_new)
|
||||
|
||||
@mock.patch('cinder.tests.fake_driver.FakeLoggingVolumeDriver.'
|
||||
'SUPPORTS_ACTIVE_ACTIVE', True)
|
||||
def test_set_resource_host_different(self):
|
||||
|
|
|
@ -15,10 +15,13 @@
|
|||
import mock
|
||||
|
||||
from cinder import context
|
||||
from cinder import db
|
||||
from cinder import exception
|
||||
from cinder import objects
|
||||
from cinder import quota
|
||||
from cinder.tests.unit import fake_constants as fake
|
||||
from cinder.tests.unit import fake_volume
|
||||
from cinder.tests.unit import utils as tests_utils
|
||||
from cinder.tests.unit import volume as base
|
||||
from cinder.volume.flows.manager import manage_existing
|
||||
from cinder.volume import manager
|
||||
|
@ -27,6 +30,8 @@ from cinder.volume import utils
|
|||
FAKE_HOST_POOL = 'volPool'
|
||||
FAKE_HOST = 'hostname@backend'
|
||||
|
||||
QUOTAS = quota.QUOTAS
|
||||
|
||||
|
||||
class ManageVolumeTestCase(base.BaseVolumeTestCase):
|
||||
|
||||
|
@ -164,3 +169,121 @@ class ManageVolumeTestCase(base.BaseVolumeTestCase):
|
|||
self.assertRaises(
|
||||
KeyError, self.manager._update_stats_for_managed,
|
||||
self._stub_volume_object_get(self))
|
||||
|
||||
@mock.patch('cinder.volume.drivers.lvm.LVMVolumeDriver.'
|
||||
'manage_existing')
|
||||
@mock.patch('cinder.volume.drivers.lvm.LVMVolumeDriver.'
|
||||
'manage_existing_get_size')
|
||||
@mock.patch('cinder.volume.utils.notify_about_volume_usage')
|
||||
def test_manage_volume_with_notify(self, mock_notify, mock_size,
|
||||
mock_manage):
|
||||
elevated = context.get_admin_context()
|
||||
vol_type = db.volume_type_create(
|
||||
elevated, {'name': 'type1', 'extra_specs': {}})
|
||||
# create source volume
|
||||
volume_params = {'volume_type_id': vol_type.id, 'status': 'managing'}
|
||||
test_vol = tests_utils.create_volume(self.context, **volume_params)
|
||||
mock_size.return_value = 1
|
||||
mock_manage.return_value = None
|
||||
|
||||
self.volume.manage_existing(self.context, test_vol, 'volume_ref')
|
||||
mock_notify.assert_called_with(self.context, test_vol,
|
||||
'manage_existing.end',
|
||||
host=test_vol.host)
|
||||
|
||||
@mock.patch('cinder.volume.drivers.lvm.LVMVolumeDriver.'
|
||||
'manage_existing_get_size')
|
||||
@mock.patch('cinder.volume.flows.manager.manage_existing.'
|
||||
'ManageExistingTask.execute')
|
||||
def test_manage_volume_raise_driver_exception(self, mock_execute,
|
||||
mock_driver_get_size):
|
||||
elevated = context.get_admin_context()
|
||||
project_id = self.context.project_id
|
||||
db.volume_type_create(elevated, {'name': 'type1', 'extra_specs': {}})
|
||||
vol_type = db.volume_type_get_by_name(elevated, 'type1')
|
||||
# create source volume
|
||||
self.volume_params['volume_type_id'] = vol_type['id']
|
||||
self.volume_params['status'] = 'managing'
|
||||
test_vol = tests_utils.create_volume(self.context,
|
||||
**self.volume_params)
|
||||
mock_execute.side_effect = exception.VolumeBackendAPIException(
|
||||
data="volume driver got exception")
|
||||
mock_driver_get_size.return_value = 1
|
||||
# Set quota usage
|
||||
reserve_opts = {'volumes': 1, 'gigabytes': 1}
|
||||
reservations = QUOTAS.reserve(self.context, project_id=project_id,
|
||||
**reserve_opts)
|
||||
QUOTAS.commit(self.context, reservations)
|
||||
usage = db.quota_usage_get(self.context, project_id, 'volumes')
|
||||
volumes_in_use = usage.in_use
|
||||
usage = db.quota_usage_get(self.context, project_id, 'gigabytes')
|
||||
gigabytes_in_use = usage.in_use
|
||||
|
||||
self.assertRaises(exception.VolumeBackendAPIException,
|
||||
self.volume.manage_existing,
|
||||
self.context, test_vol,
|
||||
'volume_ref')
|
||||
# check volume status
|
||||
volume = objects.Volume.get_by_id(context.get_admin_context(),
|
||||
test_vol.id)
|
||||
self.assertEqual('error_managing', volume.status)
|
||||
# Delete this volume with 'error_managing_deleting' status in c-vol.
|
||||
test_vol.status = 'error_managing_deleting'
|
||||
test_vol.save()
|
||||
self.volume.delete_volume(self.context, test_vol)
|
||||
ctxt = context.get_admin_context(read_deleted='yes')
|
||||
volume = objects.Volume.get_by_id(ctxt, test_vol.id)
|
||||
self.assertEqual('deleted', volume.status)
|
||||
# Get in_use number after deleting error_managing volume
|
||||
usage = db.quota_usage_get(self.context, project_id, 'volumes')
|
||||
volumes_in_use_new = usage.in_use
|
||||
self.assertEqual(volumes_in_use, volumes_in_use_new)
|
||||
usage = db.quota_usage_get(self.context, project_id, 'gigabytes')
|
||||
gigabytes_in_use_new = usage.in_use
|
||||
self.assertEqual(gigabytes_in_use, gigabytes_in_use_new)
|
||||
|
||||
@mock.patch('cinder.volume.drivers.lvm.LVMVolumeDriver.'
|
||||
'manage_existing_get_size')
|
||||
def test_manage_volume_raise_driver_size_exception(self,
|
||||
mock_driver_get_size):
|
||||
elevated = context.get_admin_context()
|
||||
project_id = self.context.project_id
|
||||
db.volume_type_create(elevated, {'name': 'type1', 'extra_specs': {}})
|
||||
# create source volume
|
||||
test_vol = tests_utils.create_volume(self.context,
|
||||
**self.volume_params)
|
||||
mock_driver_get_size.side_effect = exception.VolumeBackendAPIException(
|
||||
data="volume driver got exception")
|
||||
|
||||
# Set quota usage
|
||||
reserve_opts = {'volumes': 1, 'gigabytes': 1}
|
||||
reservations = QUOTAS.reserve(self.context, project_id=project_id,
|
||||
**reserve_opts)
|
||||
QUOTAS.commit(self.context, reservations)
|
||||
usage = db.quota_usage_get(self.context, project_id, 'volumes')
|
||||
volumes_in_use = usage.in_use
|
||||
usage = db.quota_usage_get(self.context, project_id, 'gigabytes')
|
||||
gigabytes_in_use = usage.in_use
|
||||
|
||||
self.assertRaises(exception.VolumeBackendAPIException,
|
||||
self.volume.manage_existing,
|
||||
self.context, test_vol,
|
||||
'volume_ref')
|
||||
# check volume status
|
||||
volume = objects.Volume.get_by_id(context.get_admin_context(),
|
||||
test_vol.id)
|
||||
self.assertEqual('error_managing', volume.status)
|
||||
# Delete this volume with 'error_managing_deleting' status in c-vol.
|
||||
test_vol.status = 'error_managing_deleting'
|
||||
test_vol.save()
|
||||
self.volume.delete_volume(self.context, test_vol)
|
||||
ctxt = context.get_admin_context(read_deleted='yes')
|
||||
volume = objects.Volume.get_by_id(ctxt, test_vol.id)
|
||||
self.assertEqual('deleted', volume.status)
|
||||
# Get in_use number after raising exception
|
||||
usage = db.quota_usage_get(self.context, project_id, 'volumes')
|
||||
volumes_in_use_new = usage.in_use
|
||||
self.assertEqual(volumes_in_use, volumes_in_use_new)
|
||||
usage = db.quota_usage_get(self.context, project_id, 'gigabytes')
|
||||
gigabytes_in_use_new = usage.in_use
|
||||
self.assertEqual(gigabytes_in_use, gigabytes_in_use_new)
|
||||
|
|
Loading…
Reference in New Issue