-
Notifications
You must be signed in to change notification settings - Fork 225
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
Run a tendermint node in CI to test the RPC & light client #120
Comments
I also opened an issue in the tendermint-go repository to update the tendermint docker image so we can use it in GitHub Actions. This would make the conifguration simpler and we could get away from the custom tendermint docker image. |
Opened PR to update the tendermint-go |
The new |
I've been trying to run the light_node acceptance tests but I get bisect errors just starting the light_node. I'm going to park working on this while the code (or me) gets fixed. |
This to me looks a lot like the implicit clock sync issues we found in the IBC relayer light client? You are starting a new chain and new light client in different VMs and their clocks will likely be slightly out of sync. Introducing a delay of 5 -10 seconds before starting the light client helped in relayer development. |
I think what Greg found is a much simpler and more substantial bug (but I haven't verify it yet). But we might run into the problem you described (when this bug is fixed). |
We should just need the genesis time for the chain we're using to be recent enough. We can also make the default trusting period longer. In any case doesn't seem like there's a bug, just a constraint on how we set up the test environment. Note if we wanted the test to work against an existing public chain (eg hub-3), the client wouldn't be able to start from the first block. We'd have to provide a more recent height to initialize from (this couldn't be static, we'd want to do something like check a full node for a recent height and validator hash and use that to initialize the light client ...) |
I have a suggestion on how to further improve the integration test situation: Currently, we always run against the lates (go) tendermint docker image. On one hand this is really cool because we get early warnings for things that will break compatibility with the next release. On the other hand, we can't guarantee compatibility against a current release (e.g. we only want compatibility with 0.33.X or even only with 0.33.4 because that's what the hub is using or goz or whatever reasons there might be to want compatibility to a particular version). I think tests would be even more useful if:
Regarding 1): we currently do not merge PRs unless integration tests pass anyways. The tools could better reflect this already established process and only allow merging if intgration tests pass too. Also, sometimes integration tests pass on the branch but fail on master (#249 #233 and many more). This happens because there was a new docker image released between last check on branch and merge to master. This would be mitigated if we made sure, we commit to compatibility of one tendermint version. And 2) would help us to be learn about upcoming changes on a regular basis. |
related: |
This was resolved by closing #304 |
Did I miss that we now spin up a light node (or an simple light client) against a (go) tendermint node? If not, I would reopen this issue. Or maybe it is better to open a new more focused one and link in your meta test-issue #320. |
As far as I can tell we do not do that. Opened #373 |
As per some RPC incompatibilities being discovered, namely #88 and #4, we should have the CI spin up a tendermint node, eg. using the latest docker image, and run the currently ignored integration tests against it (via
cargo test -- --ignored
) - see #88 (comment)The text was updated successfully, but these errors were encountered: