Fixes https://github.com/element-hq/element-meta/issues/2697 Fixes https://github.com/element-hq/crypto-internal/issues/398 I'm sorry it's a big change. I've tried to break it into decent commits, and I did a couple of preparatory PRs to make it less painful, but it's still a bit to get your head around. The basic idea is that when a session is updated and we call `retry_event_decryption`, we don't only look at UTDs any more - now we also look at decrypted events, and re-request their `EncryptionInfo`, in case it has improved. --------- Signed-off-by: Andy Balaam <mail@artificialworlds.net> Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> Co-authored-by: Benjamin Bouvier <benjamin@bouvier.cc>
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