-
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
IBC Relayer Integration Test Suite #1521
Conversation
I have added a command line wrapper When the command is executed, you should see log messages such as $ cargo run --bin test_setup_with_binary_channel
...
INFO ibc_integration_test::framework::binary::channel: written channel environment to /path/to/ibc-rs/data/test-3742758098/binary-channels.env
WARN ibc_integration_test::util::suspend: suspending the test indefinitely. you can still interact with any spawned chains and relayers The $ source /path/to/ibc-rs/data/test-1790156739/binary-channels.env
$ cargo run --bin hermes -- -c $RELAYER_CONFIG tx raw ft-transfer \
$CHAIN_ID_B $CHAIN_ID_A $PORT_A $CHANNEL_ID_A 9999 -o 1000 \
-k $NODE_A_WALLETS_USER1_KEY_ID -d $NODE_A_DENOM More info at https://lucid-hamilton-df13e0.netlify.app/test_setup_with_binary_channel/index.html. |
@@ -0,0 +1,13 @@ | |||
/*! | |||
Experimental work to define test cases with N-ary chains. |
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.
I added the N-ary test chains implementation in this PR as well, but hide is behind an "experimental"
flag so that we can still merge this even though it is not too ready for review yet due to documentation not yet being written.
Alternatively I can move the N-ary modules into a separate draft PR so that they can be reviewed separately.
I have just updated the bootstrap chain code so that the client/connection/channel IDs generated are random between 1-8. When you run the tests you should see the logs such as:
You can then run
|
Cool! I would propose we stop adding features here and focus on cleaning up & merging. New features to the testing framework would ideally be motivated directly by specific test cases. |
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.
Incredible work, @soareschen! Such a beautiful infrastructure, and many thanks for the extensive comments and documentation :)
I have all but two very minor nitpicks:
-
Binary
is used in a bunch of places to meantwo
, and given thatbinary
is already an overloaded term in CS, what do you think of just usingtwo
instead? Though this may be moot after N-ary Test Chains Support #1572 lands? -
In the rest of the ibc-rs project, we use
///
as a doc comment prefix whereas most of the new code here uses/**
, which introduces an inconsistency (and gives me Java flashbacks but that's not really the point). Can we harmonize this by switching over to///
?
Again, amazing work!
PS: Happy to see mononym
being put to good use already
Yeah I agree that using the word "binary" is not very fitting here, though I can't think of a better term especially considering that we need a good correspondence to the 'N-ary" setup as well. The most common place where test writers are going to use it is through the traits like
I would be against using
Thanks! Actually tagged identifiers are different from named values in |
* 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 #797
Description
A preview for the documentation is available here: https://lucid-hamilton-df13e0.netlify.app/ibc_integration_test/
For contributor use:
unclog
.docs/
) and code comments.Files changed
in the Github PR explorer.