Speed up test_touch_conductor_deadlock()

This speeds up the unit test in ironic.tests.unit.db.test_conductor,
DbConductorTestCase.test_touch_conductor_deadlock() by mocking
oslo_db.api.time.sleep(). In my local environment, it went from
1 second to about 0.02 seconds.

Change-Id: I534611dc51a8a3af6ddb17bf28cb096df084d8e7
Closes-Bug: #1672533
This commit is contained in:
Ruby Loo 2017-03-13 21:00:39 +00:00
parent 8e14f21c15
commit 6c6663d45e

View File

@ -18,6 +18,7 @@
import datetime
import mock
import oslo_db
from oslo_db import exception as db_exc
from oslo_db import sqlalchemy
from oslo_utils import timeutils
@ -131,12 +132,15 @@ class DbConductorTestCase(base.DbTestCase):
c = self.dbapi.get_conductor(c.hostname)
self.assertEqual(test_time, timeutils.normalize_time(c.updated_at))
@mock.patch.object(oslo_db.api.time, 'sleep', autospec=True)
@mock.patch.object(sqlalchemy.orm.Query, 'update', autospec=True)
def test_touch_conductor_deadlock(self, mock_update):
def test_touch_conductor_deadlock(self, mock_update, mock_sleep):
mock_sleep.return_value = None
mock_update.side_effect = [db_exc.DBDeadlock(), None]
c = self._create_test_cdr()
self.dbapi.touch_conductor(c.hostname)
self.assertEqual(2, mock_update.call_count)
self.assertEqual(2, mock_sleep.call_count)
def test_touch_conductor_not_found(self):
# A conductor's heartbeat will not create a new record,