From c8e3cbc4d1deb2a67d6f89e2ea87f2d997c72307 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Fri, 30 Sep 2016 11:33:16 -0700 Subject: [PATCH] Prevent us from sleeping during DB retry tests Unit tests should never *actually* sleep. Some of the DB API tests that poke the retry wrapper in oslo.db trigger situations that would call time.sleep(). This is part of a desirable exponential backoff timer in oslo.db, but there's no reason to actually wait to call the next mock in a unit test. So, mock out sleep for those tests. Before this, the single-thread time to run test_db_api was 289s, and afterwards it is 133s. Change-Id: I0492b497000585f079691ae863b2b2ebf078795d --- nova/tests/unit/db/test_db_api.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/nova/tests/unit/db/test_db_api.py b/nova/tests/unit/db/test_db_api.py index dc0691b70e..0da5e29cb2 100644 --- a/nova/tests/unit/db/test_db_api.py +++ b/nova/tests/unit/db/test_db_api.py @@ -2208,6 +2208,7 @@ class SecurityGroupTestCase(test.TestCase, ModelsObjectComparatorMixin): {'project_id': 'fake_proj1'}) +@mock.patch('time.sleep', new=lambda x: None) class InstanceTestCase(test.TestCase, ModelsObjectComparatorMixin): """Tests for db.api.instance_* methods.""" @@ -4607,6 +4608,7 @@ class InstanceTypeAccessTestCase(BaseInstanceTypeTestCase): self.assertEqual(0, len(db.flavor_access_get_by_flavor_id(*p))) +@mock.patch('time.sleep', new=lambda x: None) class FixedIPTestCase(BaseInstanceTypeTestCase): def _timeout_test(self, ctxt, timeout, multi_host): instance = db.instance_create(ctxt, dict(host='foo')) @@ -5269,6 +5271,7 @@ class FixedIPTestCase(BaseInstanceTypeTestCase): self._assertEqualObjects(param_2, fixed_ip_after_update, ignored_keys) +@mock.patch('time.sleep', new=lambda x: None) class FloatingIpTestCase(test.TestCase, ModelsObjectComparatorMixin): def setUp(self): @@ -6688,6 +6691,7 @@ class VirtualInterfaceTestCase(test.TestCase, ModelsObjectComparatorMixin): self._assertEqualObjects(updated, updated_vif, ignored_keys) +@mock.patch('time.sleep', new=lambda x: None) class NetworkTestCase(test.TestCase, ModelsObjectComparatorMixin): """Tests for db.api.network_* methods.""" @@ -9692,6 +9696,7 @@ class PciDeviceDBApiTestCase(test.TestCase, ModelsObjectComparatorMixin): self.assertEqual(0, done) +@mock.patch('time.sleep', new=lambda x: None) class RetryOnDeadlockTestCase(test.TestCase): def test_without_deadlock(self): @oslo_db_api.wrap_db_retry(max_retries=5, @@ -9994,6 +9999,7 @@ class TestDBInstanceTags(test.TestCase): self.context, 'fake_uuid', 'tag') +@mock.patch('time.sleep', new=lambda x: None) class TestInstanceInfoCache(test.TestCase): def setUp(self): super(TestInstanceInfoCache, self).setUp()