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:
parent
8e14f21c15
commit
6c6663d45e
@ -18,6 +18,7 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
import oslo_db
|
||||||
from oslo_db import exception as db_exc
|
from oslo_db import exception as db_exc
|
||||||
from oslo_db import sqlalchemy
|
from oslo_db import sqlalchemy
|
||||||
from oslo_utils import timeutils
|
from oslo_utils import timeutils
|
||||||
@ -131,12 +132,15 @@ class DbConductorTestCase(base.DbTestCase):
|
|||||||
c = self.dbapi.get_conductor(c.hostname)
|
c = self.dbapi.get_conductor(c.hostname)
|
||||||
self.assertEqual(test_time, timeutils.normalize_time(c.updated_at))
|
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)
|
@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]
|
mock_update.side_effect = [db_exc.DBDeadlock(), None]
|
||||||
c = self._create_test_cdr()
|
c = self._create_test_cdr()
|
||||||
self.dbapi.touch_conductor(c.hostname)
|
self.dbapi.touch_conductor(c.hostname)
|
||||||
self.assertEqual(2, mock_update.call_count)
|
self.assertEqual(2, mock_update.call_count)
|
||||||
|
self.assertEqual(2, mock_sleep.call_count)
|
||||||
|
|
||||||
def test_touch_conductor_not_found(self):
|
def test_touch_conductor_not_found(self):
|
||||||
# A conductor's heartbeat will not create a new record,
|
# A conductor's heartbeat will not create a new record,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user