From 152cbaaf3a4903b078ee64c6cb093066a4a9d150 Mon Sep 17 00:00:00 2001 From: Ivan Kolodyazhny Date: Tue, 12 Dec 2017 10:11:44 +0200 Subject: [PATCH] Speed up DataCore unit tests Add necessary mocks for looping calls and remove timeouts in DataCore unit tests. This patch aslo changes 'start' method signature of ZeroIntervalLoopingCall class to correspond the base method's signature. Change-Id: I5c466eae9a5247729264b5d6822d83f53ef033ef --- cinder/tests/unit/utils.py | 6 ++-- .../drivers/datacore/test_datacore_api.py | 1 + .../drivers/datacore/test_datacore_driver.py | 28 +++++++++++++++++-- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/cinder/tests/unit/utils.py b/cinder/tests/unit/utils.py index 1ae04c211c4..fd5a0fcf4c1 100644 --- a/cinder/tests/unit/utils.py +++ b/cinder/tests/unit/utils.py @@ -404,9 +404,9 @@ def create_qos(ctxt, testcase_instance=None, **kwargs): class ZeroIntervalLoopingCall(loopingcall.FixedIntervalLoopingCall): - def start(self, interval, **kwargs): - kwargs['initial_delay'] = 0 - return super(ZeroIntervalLoopingCall, self).start(0, **kwargs) + def start(self, interval, initial_delay=None, stop_on_exception=True): + return super(ZeroIntervalLoopingCall, self).start( + 0, 0, stop_on_exception) def replace_obj_loader(testcase, obj): diff --git a/cinder/tests/unit/volume/drivers/datacore/test_datacore_api.py b/cinder/tests/unit/volume/drivers/datacore/test_datacore_api.py index 52db51ec973..53ab988eaca 100644 --- a/cinder/tests/unit/volume/drivers/datacore/test_datacore_api.py +++ b/cinder/tests/unit/volume/drivers/datacore/test_datacore_api.py @@ -52,6 +52,7 @@ class DataCoreClientTestCase(test.TestCase): self._get_service_side_effect) self.client = api.DataCoreClient('hostname', 'username', 'password', 1) + self.client.API_RETRY_INTERVAL = 0 def _get_service_side_effect(self, service_name): self.assertIn(service_name, diff --git a/cinder/tests/unit/volume/drivers/datacore/test_datacore_driver.py b/cinder/tests/unit/volume/drivers/datacore/test_datacore_driver.py index d4c5ce1661f..4ad4ae0ad64 100644 --- a/cinder/tests/unit/volume/drivers/datacore/test_datacore_driver.py +++ b/cinder/tests/unit/volume/drivers/datacore/test_datacore_driver.py @@ -18,10 +18,12 @@ from __future__ import division import abc import mock + from oslo_utils import units from cinder import exception as cinder_exception from cinder.tests.unit import fake_constants +from cinder.tests.unit import utils as testutils from cinder.volume import configuration as conf from cinder.volume.drivers.datacore import driver as datacore_driver from cinder.volume.drivers.datacore import exception as datacore_exception @@ -195,6 +197,7 @@ class DataCoreVolumeDriverTestCase(object): def setUp(self): super(DataCoreVolumeDriverTestCase, self).setUp() + self.override_config('datacore_disk_failed_delay', 0) self.mock_client = mock.Mock() self.mock_client.get_servers.return_value = SERVERS self.mock_client.get_disk_pools.return_value = DISK_POOLS @@ -228,7 +231,7 @@ class DataCoreVolumeDriverTestCase(object): config.san_ip = '127.0.0.1' config.san_login = 'dcsadmin' config.san_password = 'password' - config.datacore_api_timeout = 300 + config.datacore_api_timeout = 0 return config def test_do_setup(self): @@ -442,12 +445,13 @@ class DataCoreVolumeDriverTestCase(object): driver.create_volume, volume) + @mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall', + new=testutils.ZeroIntervalLoopingCall) def test_create_volume_await_online_timed_out(self): virtual_disk = VIRTUAL_DISKS[1] self.mock_client.create_virtual_disk_ex2.return_value = virtual_disk config = self.setup_default_configuration() - config.datacore_disk_failed_delay = 1 driver = self.init_driver(config) volume = VOLUME.copy() self.assertRaises(cinder_exception.VolumeDriverException, @@ -488,6 +492,8 @@ class DataCoreVolumeDriverTestCase(object): volume['provider_location'] = virtual_disk.Id driver.delete_volume(volume) + @mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall', + new=testutils.ZeroIntervalLoopingCall) def test_create_snapshot(self): virtual_disk = VIRTUAL_DISKS[0] virtual_disk_snapshot = VIRTUAL_DISK_SNAPSHOTS[0] @@ -514,6 +520,8 @@ class DataCoreVolumeDriverTestCase(object): driver.create_snapshot, snapshot) + @mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall', + new=testutils.ZeroIntervalLoopingCall) def test_create_snapshot_await_migrated_timed_out(self): virtual_disk = VIRTUAL_DISKS[0] virtual_disk_snapshot = VIRTUAL_DISK_SNAPSHOTS[1] @@ -535,6 +543,8 @@ class DataCoreVolumeDriverTestCase(object): snapshot['provider_location'] = virtual_disk.Id driver.delete_snapshot(snapshot) + @mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall', + new=testutils.ZeroIntervalLoopingCall) def test_create_volume_from_snapshot(self): virtual_disk = VIRTUAL_DISKS[0] self.mock_client.set_virtual_disk_size.return_value = virtual_disk @@ -548,6 +558,8 @@ class DataCoreVolumeDriverTestCase(object): result = driver.create_volume_from_snapshot(volume, snapshot) self.assertIn('provider_location', result) + @mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall', + new=testutils.ZeroIntervalLoopingCall) def test_create_volume_from_snapshot_mirrored_disk_type_specified(self): virtual_disk = VIRTUAL_DISKS[0] self.mock_client.set_virtual_disk_size.return_value = virtual_disk @@ -563,6 +575,8 @@ class DataCoreVolumeDriverTestCase(object): result = driver.create_volume_from_snapshot(volume, snapshot) self.assertIn('provider_location', result) + @mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall', + new=testutils.ZeroIntervalLoopingCall) def test_create_volume_from_snapshot_on_failed_pool(self): virtual_disk = VIRTUAL_DISKS[0] self.mock_client.set_virtual_disk_size.return_value = virtual_disk @@ -581,6 +595,8 @@ class DataCoreVolumeDriverTestCase(object): volume, snapshot) + @mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall', + new=testutils.ZeroIntervalLoopingCall) def test_create_volume_from_snapshot_await_online_timed_out(self): virtual_disk = VIRTUAL_DISKS[0] snapshot_virtual_disk = VIRTUAL_DISKS[1] @@ -598,6 +614,8 @@ class DataCoreVolumeDriverTestCase(object): volume, snapshot) + @mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall', + new=testutils.ZeroIntervalLoopingCall) def test_create_cloned_volume(self): virtual_disk = VIRTUAL_DISKS[0] self.mock_client.set_virtual_disk_size.return_value = virtual_disk @@ -611,6 +629,8 @@ class DataCoreVolumeDriverTestCase(object): result = driver.create_cloned_volume(volume, src_vref) self.assertIn('provider_location', result) + @mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall', + new=testutils.ZeroIntervalLoopingCall) def test_create_cloned_volume_mirrored_disk_type_specified(self): virtual_disk = VIRTUAL_DISKS[0] self.mock_client.set_virtual_disk_size.return_value = virtual_disk @@ -626,6 +646,8 @@ class DataCoreVolumeDriverTestCase(object): result = driver.create_cloned_volume(volume, src_vref) self.assertIn('provider_location', result) + @mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall', + new=testutils.ZeroIntervalLoopingCall) def test_create_cloned_volume_on_failed_pool(self): virtual_disk = VIRTUAL_DISKS[0] self.mock_client.set_virtual_disk_size.return_value = virtual_disk @@ -644,6 +666,8 @@ class DataCoreVolumeDriverTestCase(object): volume, src_vref) + @mock.patch('oslo_service.loopingcall.FixedIntervalLoopingCall', + new=testutils.ZeroIntervalLoopingCall) def test_create_cloned_volume_await_online_timed_out(self): virtual_disk = VIRTUAL_DISKS[0] snapshot_virtual_disk = VIRTUAL_DISKS[1]