Allow specifying the Postgres database's port when running unit tests with Postgres. (#12376)

This commit is contained in:
reivilibre 2022-04-05 12:44:48 +01:00 committed by GitHub
parent efdbcfd6af
commit 708d88b1a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 24 additions and 3 deletions

1
changelog.d/12376.misc Normal file
View file

@ -0,0 +1 @@
Allow specifying the Postgres database's port when running unit tests with Postgres.

View file

@ -206,9 +206,10 @@ To do so, [configure Postgres](../postgres.md) and run `trial` with the
following environment variables matching your configuration: following environment variables matching your configuration:
- `SYNAPSE_POSTGRES` to anything nonempty - `SYNAPSE_POSTGRES` to anything nonempty
- `SYNAPSE_POSTGRES_HOST` - `SYNAPSE_POSTGRES_HOST` (optional if it's the default: UNIX socket)
- `SYNAPSE_POSTGRES_USER` - `SYNAPSE_POSTGRES_PORT` (optional if it's the default: 5432)
- `SYNAPSE_POSTGRES_PASSWORD` - `SYNAPSE_POSTGRES_USER` (optional if using a UNIX socket)
- `SYNAPSE_POSTGRES_PASSWORD` (optional if using a UNIX socket)
For example: For example:
@ -220,6 +221,13 @@ export SYNAPSE_POSTGRES_PASSWORD=mydevenvpassword
trial trial
``` ```
You don't need to specify the host, user, port or password if your Postgres
server is set to authenticate you over the UNIX socket (i.e. if the `psql` command
works without further arguments).
Your Postgres account needs to be able to create databases.
## Run the integration tests ([Sytest](https://github.com/matrix-org/sytest)). ## Run the integration tests ([Sytest](https://github.com/matrix-org/sytest)).
The integration tests are a more comprehensive suite of tests. They The integration tests are a more comprehensive suite of tests. They

View file

@ -76,6 +76,7 @@ from tests.utils import (
POSTGRES_BASE_DB, POSTGRES_BASE_DB,
POSTGRES_HOST, POSTGRES_HOST,
POSTGRES_PASSWORD, POSTGRES_PASSWORD,
POSTGRES_PORT,
POSTGRES_USER, POSTGRES_USER,
SQLITE_PERSIST_DB, SQLITE_PERSIST_DB,
USE_POSTGRES_FOR_TESTS, USE_POSTGRES_FOR_TESTS,
@ -747,6 +748,7 @@ def setup_test_homeserver(
"host": POSTGRES_HOST, "host": POSTGRES_HOST,
"password": POSTGRES_PASSWORD, "password": POSTGRES_PASSWORD,
"user": POSTGRES_USER, "user": POSTGRES_USER,
"port": POSTGRES_PORT,
"cp_min": 1, "cp_min": 1,
"cp_max": 5, "cp_max": 5,
}, },
@ -786,6 +788,7 @@ def setup_test_homeserver(
database=POSTGRES_BASE_DB, database=POSTGRES_BASE_DB,
user=POSTGRES_USER, user=POSTGRES_USER,
host=POSTGRES_HOST, host=POSTGRES_HOST,
port=POSTGRES_PORT,
password=POSTGRES_PASSWORD, password=POSTGRES_PASSWORD,
) )
db_conn.autocommit = True db_conn.autocommit = True
@ -833,6 +836,7 @@ def setup_test_homeserver(
database=POSTGRES_BASE_DB, database=POSTGRES_BASE_DB,
user=POSTGRES_USER, user=POSTGRES_USER,
host=POSTGRES_HOST, host=POSTGRES_HOST,
port=POSTGRES_PORT,
password=POSTGRES_PASSWORD, password=POSTGRES_PASSWORD,
) )
db_conn.autocommit = True db_conn.autocommit = True

View file

@ -35,6 +35,11 @@ LEAVE_DB = os.environ.get("SYNAPSE_LEAVE_DB", False)
POSTGRES_USER = os.environ.get("SYNAPSE_POSTGRES_USER", None) POSTGRES_USER = os.environ.get("SYNAPSE_POSTGRES_USER", None)
POSTGRES_HOST = os.environ.get("SYNAPSE_POSTGRES_HOST", None) POSTGRES_HOST = os.environ.get("SYNAPSE_POSTGRES_HOST", None)
POSTGRES_PASSWORD = os.environ.get("SYNAPSE_POSTGRES_PASSWORD", None) POSTGRES_PASSWORD = os.environ.get("SYNAPSE_POSTGRES_PASSWORD", None)
POSTGRES_PORT = (
int(os.environ["SYNAPSE_POSTGRES_PORT"])
if "SYNAPSE_POSTGRES_PORT" in os.environ
else None
)
POSTGRES_BASE_DB = "_synapse_unit_tests_base_%s" % (os.getpid(),) POSTGRES_BASE_DB = "_synapse_unit_tests_base_%s" % (os.getpid(),)
# When debugging a specific test, it's occasionally useful to write the # When debugging a specific test, it's occasionally useful to write the
@ -55,6 +60,7 @@ def setupdb():
db_conn = db_engine.module.connect( db_conn = db_engine.module.connect(
user=POSTGRES_USER, user=POSTGRES_USER,
host=POSTGRES_HOST, host=POSTGRES_HOST,
port=POSTGRES_PORT,
password=POSTGRES_PASSWORD, password=POSTGRES_PASSWORD,
dbname=POSTGRES_DBNAME_FOR_INITIAL_CREATE, dbname=POSTGRES_DBNAME_FOR_INITIAL_CREATE,
) )
@ -73,6 +79,7 @@ def setupdb():
database=POSTGRES_BASE_DB, database=POSTGRES_BASE_DB,
user=POSTGRES_USER, user=POSTGRES_USER,
host=POSTGRES_HOST, host=POSTGRES_HOST,
port=POSTGRES_PORT,
password=POSTGRES_PASSWORD, password=POSTGRES_PASSWORD,
) )
db_conn = LoggingDatabaseConnection(db_conn, db_engine, "tests") db_conn = LoggingDatabaseConnection(db_conn, db_engine, "tests")
@ -83,6 +90,7 @@ def setupdb():
db_conn = db_engine.module.connect( db_conn = db_engine.module.connect(
user=POSTGRES_USER, user=POSTGRES_USER,
host=POSTGRES_HOST, host=POSTGRES_HOST,
port=POSTGRES_PORT,
password=POSTGRES_PASSWORD, password=POSTGRES_PASSWORD,
dbname=POSTGRES_DBNAME_FOR_INITIAL_CREATE, dbname=POSTGRES_DBNAME_FOR_INITIAL_CREATE,
) )