-
Notifications
You must be signed in to change notification settings - Fork 329
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
Allow more granular configuration of Hermes modes of operation #1539
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Amazing stuff @hu55a1n1 🥇
Here are a few comments for discussion after a first pass over the code.
Co-authored-by: Romain Ruetschi <romain@informal.systems>
@greg-szabo we would appreciate your quick look here, at the |
Looks good to me. The only thing missing is the gm Changelog update but I can deal with that separately in my own PR. |
@hu55a1n1 I tried with a config that has:
all other modes disabled. Also e2e fails with this config. |
Thanks for catching that @ancazamfir! I think this was a bug in the way packet workers were spawned. I just pushed a possible fix -> 4ec957b |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested a bunch of scenarios, it looks very good!!
I will look again through the changes next but I think we should be good to go.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Amazing work @hu55a1n1 🌷
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Amazing work @hu55a1n1!
* WIP relayer test * Bootstrap chain almost working * Refactor chain bootstrap code * Trying to get create client work. * Test create client is now working * Fix formatting * WIP IBC packet transfer * Got IBC transfer working * Refactor supervisor and denom tracing * More refactoring * More refactoring * Refactor build_and_send_transfer_messages * Round trip IBC token transfer is now working * Refactor channel bootstrap code * Add tagged chain handle wrapper * Rename ChainCommand to ChainDriver * Make bootstrap pair return impl ChainHandle * Add tagged types * Refactor bootstrap pair * Tag ChainDriver * Add mono tag, refactor single chain bootstrap * More refactoring * More refactoring * Fix chain tags * Channel creation ordering is now consistent * Test IBC transfer in both directions * Fix monitor shutdown error * Refactor wait wallet amount * Make init script return test config. Add hang test helper * Draft memo testing working * Add boostrap_chain_and_channel_pair * Add memo test as separate test * Disable health check in tests to suppress version errors from gaiad in Nix * Add CI workflow * Use experimental Nix with flakes * Refactor test cases to use composable traits * Use NoTestConfig wrapper type for test defaults * Reorder code definitions * Try out new way to override test config and implement override defaults * Preemptively shutdown supervisor at the end of chain tests * Rearrange type definitions * Rename framework traits * Rename and move override traits * Rename ChainDeployment to ConnectedChains * Refactor chain bootstrap * Add BinaryNodeTest trait * Add alpha- and beta- prefix to binary chain nodes * Add HANG_ON_FAIL test hooks * Add non-owned BinaryNodeTest * Refactor Supervisor to use shared reference to chain registry * Spawn supervisor in OwnedBinaryChainTest * New test override approach with separate override argument * Clean up overrides design * Fix cargo doc * Save relayer config onto file system * Simplify test overrides * Use absolute path for data directory path * Adding documentation * Add documentation for `framework` module * Adding more documentation * Reorganize test data directory * Add documentation for `bootstrap` module * Reorganize tagged module * Add documentation for MonoTagged * Refactor tagged methods into traits * Add documentation for DualTagged * Finish documenting most constructs * Move example documentation * Rename hang to suspend * Fix example doctest * Add more detailed documentation for DualTagged::contra_map * Remove ChainClientServer and inline the handle and node fields directly * Add documentation for connected chains and channels * Finish documenting everything * Only check for version in health check. Failure in parsing chain version should not result in failure of the entire relayer. * Stop chain handle when it is dropped * Add simulation manual test * Add documentation for new constructs * Move manual tests into the tests::manual module * Add test framework for running tests with self-connected chains * Add NodeConfigOverride for overriding full node config * Draft definition for N-ary connected chains using const generics * Implement N-ary bootstrap chains code * Done initial bootstrap code for N-ary channels. * Refactor to allow dynamic sized n-ary chains * Running binary IBC transfer test as n-ary test successful * Add environment exporter to test * Separate drop handlers from chain and node types * Remove reference version of test traits * Remove "Owned" and "owned_" prefixes * Put N-ary chain features behind "experimental" feature flag * Clean up cargo configuration, address review feedback * Fix build error * Fix doctests * Add custom Default instance for ModeConfig which enables everything by default * Follow default ModeConfig as specified in #1539 * Add test_setup_with_binary_channel command wrapper * Fix clippy * Fix unit test CI * Randomize created client and connection ids * Randomize channel IDs when bootstrapping channels * Move bootstrap connection code to separate module * Add back child process as a shared Arc pointer in FullNode * Move experimental N-ary test chains to separate PR * Fill out missing documentation * Move N-ary chain constructs to #1572 * Minor fix documentation * Add a bit more documentation to tagged identifiers * Slightly clean up bootstrap logs
* WIP relayer test * Bootstrap chain almost working * Refactor chain bootstrap code * Trying to get create client work. * Test create client is now working * Fix formatting * WIP IBC packet transfer * Got IBC transfer working * Refactor supervisor and denom tracing * More refactoring * More refactoring * Refactor build_and_send_transfer_messages * Round trip IBC token transfer is now working * Refactor channel bootstrap code * Add tagged chain handle wrapper * Rename ChainCommand to ChainDriver * Make bootstrap pair return impl ChainHandle * Add tagged types * Refactor bootstrap pair * Tag ChainDriver * Add mono tag, refactor single chain bootstrap * More refactoring * More refactoring * Fix chain tags * Channel creation ordering is now consistent * Test IBC transfer in both directions * Fix monitor shutdown error * Refactor wait wallet amount * Make init script return test config. Add hang test helper * Draft memo testing working * Add boostrap_chain_and_channel_pair * Add memo test as separate test * Disable health check in tests to suppress version errors from gaiad in Nix * Add CI workflow * Use experimental Nix with flakes * Refactor test cases to use composable traits * Use NoTestConfig wrapper type for test defaults * Reorder code definitions * Try out new way to override test config and implement override defaults * Preemptively shutdown supervisor at the end of chain tests * Rearrange type definitions * Rename framework traits * Rename and move override traits * Rename ChainDeployment to ConnectedChains * Refactor chain bootstrap * Add BinaryNodeTest trait * Add alpha- and beta- prefix to binary chain nodes * Add HANG_ON_FAIL test hooks * Add non-owned BinaryNodeTest * Refactor Supervisor to use shared reference to chain registry * Spawn supervisor in OwnedBinaryChainTest * New test override approach with separate override argument * Clean up overrides design * Fix cargo doc * Save relayer config onto file system * Simplify test overrides * Use absolute path for data directory path * Adding documentation * Add documentation for `framework` module * Adding more documentation * Reorganize test data directory * Add documentation for `bootstrap` module * Reorganize tagged module * Add documentation for MonoTagged * Refactor tagged methods into traits * Add documentation for DualTagged * Finish documenting most constructs * Move example documentation * Rename hang to suspend * Fix example doctest * Add more detailed documentation for DualTagged::contra_map * Remove ChainClientServer and inline the handle and node fields directly * Add documentation for connected chains and channels * Finish documenting everything * Only check for version in health check. Failure in parsing chain version should not result in failure of the entire relayer. * Stop chain handle when it is dropped * Add simulation manual test * Add documentation for new constructs * Move manual tests into the tests::manual module * Add test framework for running tests with self-connected chains * Add NodeConfigOverride for overriding full node config * Draft definition for N-ary connected chains using const generics * Implement N-ary bootstrap chains code * Done initial bootstrap code for N-ary channels. * Refactor to allow dynamic sized n-ary chains * Running binary IBC transfer test as n-ary test successful * Add environment exporter to test * Separate drop handlers from chain and node types * Remove reference version of test traits * Remove "Owned" and "owned_" prefixes * Put N-ary chain features behind "experimental" feature flag * Clean up cargo configuration, address review feedback * Fix build error * Fix doctests * Add custom Default instance for ModeConfig which enables everything by default * Follow default ModeConfig as specified in informalsystems#1539 * Add test_setup_with_binary_channel command wrapper * Fix clippy * Fix unit test CI * Randomize created client and connection ids * Randomize channel IDs when bootstrapping channels * Move bootstrap connection code to separate module * Add back child process as a shared Arc pointer in FullNode * Move experimental N-ary test chains to separate PR * Fill out missing documentation * Move N-ary chain constructs to informalsystems#1572 * Minor fix documentation * Add a bit more documentation to tagged identifiers * Slightly clean up bootstrap logs
Closes: #1518
Description
mode
would look like ->strategy
andclear_packets_interval
options would be removed.TODO (aside from acceptance criteria)
gm
related stuff.For contributor use:
unclog
.docs/
) and code comments.Files changed
in the Github PR explorer.