diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-03-02 15:00:28 +0100 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-03-02 15:05:49 +0100 |
| commit | e0449316ebacaa550e9c529f8c9cb9a9b44e3765 (patch) | |
| tree | a3d156c5228bbc89b40183ab7e6c8a47d40878c9 /tests | |
| parent | d63e55039d42c2ba8bb6c8f8d133ede085b60969 (diff) | |
Fixed #18130 -- Made the isolation level configurable on PostgreSQL.
Thanks limscoder for the report and niwi for the draft patch.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/transactions_regress/tests.py | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/tests/transactions_regress/tests.py b/tests/transactions_regress/tests.py index 8cc68b7e0d..6ba04892cd 100644 --- a/tests/transactions_regress/tests.py +++ b/tests/transactions_regress/tests.py @@ -242,17 +242,18 @@ class TestNewConnection(TransactionTestCase): @skipUnless(connection.vendor == 'postgresql', "This test only valid for PostgreSQL") -class TestPostgresAutocommit(TransactionTestCase): +class TestPostgresAutocommitAndIsolation(TransactionTestCase): """ - Tests to make sure psycopg2's autocommit mode is restored after entering - and leaving transaction management. Refs #16047. + Tests to make sure psycopg2's autocommit mode and isolation level + is restored after entering and leaving transaction management. + Refs #16047, #18130. """ def setUp(self): from psycopg2.extensions import (ISOLATION_LEVEL_AUTOCOMMIT, - ISOLATION_LEVEL_READ_COMMITTED, + ISOLATION_LEVEL_SERIALIZABLE, TRANSACTION_STATUS_IDLE) self._autocommit = ISOLATION_LEVEL_AUTOCOMMIT - self._read_committed = ISOLATION_LEVEL_READ_COMMITTED + self._serializable = ISOLATION_LEVEL_SERIALIZABLE self._idle = TRANSACTION_STATUS_IDLE # We want a clean backend with autocommit = True, so @@ -261,6 +262,7 @@ class TestPostgresAutocommit(TransactionTestCase): settings = self._old_backend.settings_dict.copy() opts = settings['OPTIONS'].copy() opts['autocommit'] = True + opts['isolation_level'] = ISOLATION_LEVEL_SERIALIZABLE settings['OPTIONS'] = opts new_backend = self._old_backend.__class__(settings, DEFAULT_DB_ALIAS) connections[DEFAULT_DB_ALIAS] = new_backend @@ -279,7 +281,7 @@ class TestPostgresAutocommit(TransactionTestCase): def test_transaction_management(self): transaction.enter_transaction_management() transaction.managed(True) - self.assertEqual(connection.isolation_level, self._read_committed) + self.assertEqual(connection.isolation_level, self._serializable) transaction.leave_transaction_management() self.assertEqual(connection.isolation_level, self._autocommit) @@ -287,13 +289,13 @@ class TestPostgresAutocommit(TransactionTestCase): def test_transaction_stacking(self): transaction.enter_transaction_management() transaction.managed(True) - self.assertEqual(connection.isolation_level, self._read_committed) + self.assertEqual(connection.isolation_level, self._serializable) transaction.enter_transaction_management() - self.assertEqual(connection.isolation_level, self._read_committed) + self.assertEqual(connection.isolation_level, self._serializable) transaction.leave_transaction_management() - self.assertEqual(connection.isolation_level, self._read_committed) + self.assertEqual(connection.isolation_level, self._serializable) transaction.leave_transaction_management() self.assertEqual(connection.isolation_level, self._autocommit) @@ -301,7 +303,7 @@ class TestPostgresAutocommit(TransactionTestCase): def test_enter_autocommit(self): transaction.enter_transaction_management() transaction.managed(True) - self.assertEqual(connection.isolation_level, self._read_committed) + self.assertEqual(connection.isolation_level, self._serializable) list(Mod.objects.all()) self.assertTrue(transaction.is_dirty()) # Enter autocommit mode again. @@ -314,7 +316,7 @@ class TestPostgresAutocommit(TransactionTestCase): list(Mod.objects.all()) self.assertFalse(transaction.is_dirty()) transaction.leave_transaction_management() - self.assertEqual(connection.isolation_level, self._read_committed) + self.assertEqual(connection.isolation_level, self._serializable) transaction.leave_transaction_management() self.assertEqual(connection.isolation_level, self._autocommit) |
