summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErlend E. Aasland <erlend@python.org>2023-08-28 13:09:10 (GMT)
committerGitHub <noreply@github.com>2023-08-28 13:09:10 (GMT)
commit6f6171b33bf096130ba776b9fc518b1181f1e01c (patch)
treeca88d7ec6b76600771f82dd9371fb80b3e8c6fb3
parentc19713d4a1d7c4033ae18896ab2b6714cf60fb21 (diff)
downloadcpython-6f6171b33bf096130ba776b9fc518b1181f1e01c.zip
cpython-6f6171b33bf096130ba776b9fc518b1181f1e01c.tar.gz
cpython-6f6171b33bf096130ba776b9fc518b1181f1e01c.tar.bz2
[3.11] gh-108550: Speed up sqlite3 tests (#108551) (#108567)
Disable the busy handler for all concurrency tests; we have full control over the order of the SQLite C API calls, so we can safely do this. test_sqlite3.test_transactions now completes ~10 times faster than before. Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
-rw-r--r--Lib/test/test_sqlite3/test_dbapi.py2
-rw-r--r--Lib/test/test_sqlite3/test_transactions.py16
2 files changed, 7 insertions, 11 deletions
diff --git a/Lib/test/test_sqlite3/test_dbapi.py b/Lib/test/test_sqlite3/test_dbapi.py
index 899f5cf..ff86291 100644
--- a/Lib/test/test_sqlite3/test_dbapi.py
+++ b/Lib/test/test_sqlite3/test_dbapi.py
@@ -1837,7 +1837,7 @@ class SqliteOnConflictTests(unittest.TestCase):
@requires_subprocess()
class MultiprocessTests(unittest.TestCase):
- CONNECTION_TIMEOUT = SHORT_TIMEOUT / 1000. # Defaults to 30 ms
+ CONNECTION_TIMEOUT = 0 # Disable the busy timeout.
def tearDown(self):
unlink(TESTFN)
diff --git a/Lib/test/test_sqlite3/test_transactions.py b/Lib/test/test_sqlite3/test_transactions.py
index a67d727..b8d786b 100644
--- a/Lib/test/test_sqlite3/test_transactions.py
+++ b/Lib/test/test_sqlite3/test_transactions.py
@@ -23,21 +23,19 @@
import os, unittest
import sqlite3 as sqlite
-from test.support import LOOPBACK_TIMEOUT
from test.support.os_helper import TESTFN, unlink
from test.test_sqlite3.test_dbapi import memory_database
-TIMEOUT = LOOPBACK_TIMEOUT / 10
-
-
class TransactionTests(unittest.TestCase):
def setUp(self):
- self.con1 = sqlite.connect(TESTFN, timeout=TIMEOUT)
+ # We can disable the busy handlers, since we control
+ # the order of SQLite C API operations.
+ self.con1 = sqlite.connect(TESTFN, timeout=0)
self.cur1 = self.con1.cursor()
- self.con2 = sqlite.connect(TESTFN, timeout=TIMEOUT)
+ self.con2 = sqlite.connect(TESTFN, timeout=0)
self.cur2 = self.con2.cursor()
def tearDown(self):
@@ -117,10 +115,8 @@ class TransactionTests(unittest.TestCase):
self.cur2.execute("insert into test(i) values (5)")
def test_locking(self):
- """
- This tests the improved concurrency with pysqlite 2.3.4. You needed
- to roll back con2 before you could commit con1.
- """
+ # This tests the improved concurrency with pysqlite 2.3.4. You needed
+ # to roll back con2 before you could commit con1.
self.cur1.execute("create table test(i)")
self.cur1.execute("insert into test(i) values (5)")
with self.assertRaises(sqlite.OperationalError):