mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-02-03 05:03:43 +08:00
Using a memory database causes tests/test_build to intermittently fail, because using the same pysqlite3 connection object from multiple threads - as was done so that the threads shared the same memory database - is not, in the end, thread safe. One thread will stomp on the transaction state of other threads, resulting in errors from starting a new transaction when another is already in progress, or trying to commit a transaction that is not in progress. To avoid a significant speed penalty, the session-scope fixture sets up a database in the pytest temporary directory, which will typically be on tmpfs. Time to complete all tests: memory backend: 38 seconds file on tmpfs: 40 seconds file on nvme ssd with btrfs: 137 seconds MBSSQLAlchemy, which attempted to make the memory backend work, is removed. Session hooks are installed on the Session class rather than on the scoped_session instance - this works better when we're changing from one database to another at test setup time.
36 KiB
36 KiB