diff options
author | David Robertson <davidr@element.io> | 2022-01-07 19:13:41 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-07 19:13:41 +0000 |
commit | d3cf0730f8bf3de58d37060eff0dca3f69b4a0e1 (patch) | |
tree | fa88069fc6f9da3044b11e0c94b600339d4f90b5 /tests/server.py | |
parent | Test that bans win a join against a race when computing `/sync` response (#1... (diff) | |
download | synapse-d3cf0730f8bf3de58d37060eff0dca3f69b4a0e1.tar.xz |
Optionally use an on-disk sqlite db in tests (#11702)
* Optionally use an on-disk sqlite db in tests When debugging a test it is sometimes useful to inspect the state of the DB. This is not easy when the db is in-memory: one cannot attach the sqlite CLI to another process's DB. With this change, if SYNAPSE_TEST_PERSIST_SQLITE_DB is set, we use `_trial_temp/test.db` as our sqlite database. One can then use `sqlite3 _trial_temp/test.db` and query to your heart's content. The DB is destroyed and recreated between different test cases. Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
Diffstat (limited to 'tests/server.py')
-rw-r--r-- | tests/server.py | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/tests/server.py b/tests/server.py index ca2b7a5b97..a0cd14ea45 100644 --- a/tests/server.py +++ b/tests/server.py @@ -14,6 +14,8 @@ import hashlib import json import logging +import os +import os.path import time import uuid import warnings @@ -71,6 +73,7 @@ from tests.utils import ( POSTGRES_HOST, POSTGRES_PASSWORD, POSTGRES_USER, + SQLITE_PERSIST_DB, USE_POSTGRES_FOR_TESTS, MockClock, default_config, @@ -739,9 +742,23 @@ def setup_test_homeserver( }, } else: + if SQLITE_PERSIST_DB: + # The current working directory is in _trial_temp, so this gets created within that directory. + test_db_location = os.path.abspath("test.db") + logger.debug("Will persist db to %s", test_db_location) + # Ensure each test gets a clean database. + try: + os.remove(test_db_location) + except FileNotFoundError: + pass + else: + logger.debug("Removed existing DB at %s", test_db_location) + else: + test_db_location = ":memory:" + database_config = { "name": "sqlite3", - "args": {"database": ":memory:", "cp_min": 1, "cp_max": 1}, + "args": {"database": test_db_location, "cp_min": 1, "cp_max": 1}, } if "db_txn_limit" in kwargs: |