-
Notifications
You must be signed in to change notification settings - Fork 410
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
System tests to cover chain upgraded #1480
Comments
@alpe I'm happy to take this on if you all are okay with using Strangelove's interchain test? |
@Reecepbcups thanks a lot for volunteering! I would be happy to have more people looking into this! We had some issues with running docker based tests on CircleCI before. Therefore I would like to avoid this and the complexity that comes with it. We can use our system test framework instead. It should be straight forward as it works with a compiled binary only that can easily be replaced now. There is no need for multiple chains or relayers for this kind of test. First step would be publishing a wasmd linux binary on every release. Then we need a "good" state dump for wasmd with a contract that we know and that we can query from a test. |
I think there can be a couple of ways to achieve this.
If you wouldn't mind, I can try out both the approaches too. It would be really nice to be able to have system tests be run against and actual e2e testing framework, both InterchainTest and Starship. |
Thanks @Anmol1696 for your thoughts and proposals! |
Yup that would make sense. Could we define the scope of the system test though? I think you are right about flaky docker setups, even with Starship local testing, docker and k8s both seem to be an overkill. But I think we should be careful to limit the scope, so that other e2e frameworks can take over from the limits of this system. |
I would like to cover the chain upgrade use case fully by a Go system tests before making this more extendable. In the best case the server side can be easily swapped in the future but we have a concrete problem now and a goal to reduce time to market for wasmd and the SDK. I had outlined the basic idea in the description already but some concrete steps for the system test in Go would be:
The process focus is on happy path only. A multi node setup is preferred to help catching non deterministic behaviour on the migration. |
yea this is exactly what we do for Juno with ictest already (SDK 45 -> v47, 4 vals + 4 full nodes). Only would have to add a genesisDump() method at the end and add contract executes & wasmd cli queries already auto builds latest every commit to a docker repo if you guys change your mind (from System go) just let me know :) https://github.com/CosmosContracts/juno/blob/main/interchaintest/chain_upgrade_test.go |
Testing a chain upgrade from a rich state dump is still open. The problem here is to stay vendor neutral and storing the dump. Chains should have their own tooling in place to verify their migrations. |
Our current system tests or integration tests do not cover migration of legacy state to the current version. This is a blind spot that was covered by community testnets and their feedback.
Unfortunately that had become a bottleneck that we need to automate and own in the project.
The system tests setup a multi node environment easily that can be used for this, now.
Preconditions:
The chain upgrade test would then:
The text was updated successfully, but these errors were encountered: