Suggest using docker when testing against postgres (#12765)

Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com>
pull/12772/head
David Robertson 2022-05-17 19:05:53 +01:00 committed by GitHub
parent 182ca78a12
commit 0d17357fcd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 3 deletions

1
changelog.d/12765.doc Normal file
View File

@ -0,0 +1 @@
Recommend using docker to run tests against postgres.

View File

@ -206,7 +206,32 @@ This means that we need to run our unit tests against PostgreSQL too. Our CI doe
this automatically for pull requests and release candidates, but it's sometimes this automatically for pull requests and release candidates, but it's sometimes
useful to reproduce this locally. useful to reproduce this locally.
To do so, [configure Postgres](../postgres.md) and run `trial` with the #### Using Docker
The easiest way to do so is to run Postgres via a docker container. In one
terminal:
```shell
docker run --rm -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_USER=postgres -e POSTGRES_DB=postgress -p 5432:5432 postgres:14
```
If you see an error like
```
docker: Error response from daemon: driver failed programming external connectivity on endpoint nice_ride (b57bbe2e251b70015518d00c9981e8cb8346b5c785250341a6c53e3c899875f1): Error starting userland proxy: listen tcp4 0.0.0.0:5432: bind: address already in use.
```
then something is already bound to port 5432. You're probably already running postgres locally.
Once you have a postgres server running, invoke `trial` in a second terminal:
```shell
SYNAPSE_POSTGRES=1 SYNAPSE_POSTGRES_HOST=127.0.0.1 SYNAPSE_POSTGRES_USER=postgres SYNAPSE_POSTGRES_PASSWORD=mysecretpassword poetry run trial tests
````
#### Using an existing Postgres installation
If you have postgres already installed on your system, you can 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
@ -229,8 +254,8 @@ 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 server is set to authenticate you over the UNIX socket (i.e. if the `psql` command
works without further arguments). works without further arguments).
Your Postgres account needs to be able to create databases. Your Postgres account needs to be able to create databases; see the postgres
docs for [`ALTER ROLE`](https://www.postgresql.org/docs/current/sql-alterrole.html).
## Run the integration tests ([Sytest](https://github.com/matrix-org/sytest)). ## Run the integration tests ([Sytest](https://github.com/matrix-org/sytest)).