Files
matrix-rust-sdk/testing/matrix-sdk-integration-testing
Benjamin Bouvier fe9354a886 test: make test_room_keys_received_on_notification_client_trigger_redecryption more stable
When starting to back-paginate, in this test, we:

- either have a previous-batch token, that points to the first event
*before* the message was sent,
- or have no previous-batch token, because we stopped sync before
receiving the first sync result.

Because of the behavior introduced in 944a9220, we don't restart
back-paginating from the end, if we've reached the start. Now, if we are
in the case described by the first bullet item, then we may backpaginate
until the start of the room, and stop then, because we've back-paginated
all events. And so we'll never see the message sent by Alice after we
stopped sync'ing.

One solution to get to the desired state is to clear the internal state
of the room event cache, thus deleting the previous-batch token, thus
causing the situation described in the second bullet item. This achieves
what we want, that is, back-paginating from the end of the timeline.
2024-12-19 14:19:55 +01:00
..
2024-10-10 14:32:46 +02:00

Matrix SDK integration test

This set of tests requires a Synapse instance, and it runs the tests from this directory against this real-world server. As a result, these tests depend on the load of the machine/server, and as such they might be more sensitive to timing issues than other tests in the code base.

Requirements

This requires a synapse backend with a configuration patched for CI. You can get it up and running with docker compose via:

docker compose -f assets/docker-compose.yml up -d
docker compose -f assets/docker-compose.yml logs --tail 100 -f

Note that this works also with podman compose.

Patches You can see the patches we do to configuration (namely activate registration and resetting rate limits, enable a few experimental features), check out what assets/ci-start.sh changes.

Running

The integration tests can be run with cargo test or cargo nextest run.

The integration tests expect the environment variables HOMESERVER_URL to be the HTTP URL to access the synapse server and HOMESERVER_DOMAIN to be set to the domain configured in that server. These variables are set to a default value that matches the default docker-compose.yml template; if you haven't touched it, you don't need to manually set those environment variables.

Maintenance

Delete all instance data

To stop the services and drop the database of your docker-compose cluster, run:

docker compose -f assets/docker-compose.yml down --volumes --remove-orphan -t 0

Rebuild the synapse image

If the Synapse image has been updated in version, you may need to rebuild the custom Synapse image using the following:

docker compose -f assets/docker-compose.yml build --pull synapse

Then restart the synapse service:

docker compose -f assets/docker-compose.yml up -d synapse