Comments (3)
Firstly: I love the idea of running upgrade tests; I wish we had something like that for Synapse. Do you run it as part of your CI?
To answer the question here: I agree that it does feel a bit feature-creepy; but given that Complement has most of the framework needed to make it happen, it seems like a bit of a shame for every HS impl to have to implement it from scratch.
I think you can say much the same of Homerunner. Generally, having a collection of commands powered by the internals of Complement doesn't feel like a terrible thing to me.
So basically, +1?
from complement.
Yeah CI runs the last published semver release and then the pushed commit over the top, as it takes a while to run every single release on CI all the time. This catches thinkos in upgrade scripts but isn't capable of catching everything as sometimes data corruption happens in earlier versions which then affects the next database migration. For example, dendrite 0.1 had corrupted state snapshots which then caused problems when those rooms made on 0.1 were migrated to HEAD. For that, we need to run everything from the beginning, which we'll just do as a pre-release checklist.
I'll go ahead then with this and see what we end up with.
from complement.
Why should this be part of complement?
Complement, in my eyes, about black-box compliance testing, there's nothing that the spec does to address, acknowledge, see, or even know about server upgrades, as that is a completely implementation-specific concept.
What exactly should complement test for? That servers dont crash when they upgrade? How would that exactly be Complement's job to execute? Why can't that just be a standard external tool that's executed separately in a homeserver's CI pipeline instead?
In my opinion, this is heavily feature creep, this should be its standalone tool, or banished to ./cmd/
.
It could maybe be something along the lines of (calling it) semver-hs-db-upgrade
, which is then fed a list of "significant" homeserver versions (for synapse: the versions where database upgrades happen), and then produce and execute every variation of A->B
upgrades between them.
from complement.
Related Issues (20)
- De-emphasise and reduce the usage of `/_synapse` endpoints HOT 1
- `should` counterpart to `must` HOT 1
- Introduce `runtime.ForMatrixVersion` HOT 4
- Event relationship tests seem flakey HOT 1
- Hard to find test failures in CI ouput
- `TestEventRelationships` seems flakey
- `TestFederatedEventRelationships` seems flakey
- Add ability to provide blacklist file for subtests HOT 1
- `TestMediaFilenames` incorrectly tests Content-Disposition HOT 1
- Refactor how skipped tests are defined HOT 7
- Simplify internals
- Container feature detection HOT 1
- Make the Complement Client public HOT 2
- Smoke testing core features HOT 1
- Test configuration options
- Enable application service registration files to be fully editable
- Content-Type check is too restrictive in "TestRegistration/parallel/POST_{}_returns_a_set_of_flows"
- Change how server logs are dumped
- Add CI for running Complement in Podman
- Homerunner network creation seems to race deployment HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from complement.