Use addCleanup instead of tearDown in test_sql_persistence

TestCase.tearDown() is not called if setUp raises exception,
but we have to close backend and release lock before executing
other tests. The easiest way to do it is to use addCleanup
instead of tearDown for freeing resources.

Change-Id: I885bb7d491f4b3ee06a351f5d22087e23804e19b
This commit is contained in:
Ivan A. Melnikov
2014-01-28 14:32:31 +04:00
parent ffb12565d3
commit 79d9e12ed6

View File

@@ -146,24 +146,17 @@ class BackendPersistenceTestMixin(base.PersistenceTestMixin):
"""
raise NotImplementedError()
def tearDown(self):
super(BackendPersistenceTestMixin, self).tearDown()
try:
if self.backend is not None:
self.backend.close()
self.backend = None
finally:
self.big_lock.release()
def setUp(self):
super(BackendPersistenceTestMixin, self).setUp()
self.backend = None
self.big_lock.acquire()
self.addCleanup(self.big_lock.release)
conf = {
'connection': self._reset_database(),
}
# Ensure upgraded to the right schema
self.backend = impl_sqlalchemy.SQLAlchemyBackend(conf)
self.addCleanup(self.backend.close)
with contextlib.closing(self._get_connection()) as conn:
conn.upgrade()