-
Notifications
You must be signed in to change notification settings - Fork 87
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
imp(testkit): Mock IBC context with basecoin-store
types
#1068
imp(testkit): Mock IBC context with basecoin-store
types
#1068
Conversation
There are few future PRs from this.
After finishing these, we can start writing ics03 and ics04 tests with Tendermint client types - mainly, start testing there should be a few code-quality PRs
|
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.
Fantastic job, @rnbguy! This gets us ready for a powerful ibc-testkit
🚀.
Had a cursory look. Overall sounds great. I’ll have another look once we finalize the mock proto definitions.
0de4fd5
to
1de553c
Compare
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## feat/basecoin-store #1068 +/- ##
=======================================================
- Coverage 66.63% 66.07% -0.56%
=======================================================
Files 204 205 +1
Lines 20435 20775 +340
=======================================================
+ Hits 13617 13728 +111
- Misses 6818 7047 +229 ☔ View full report in Codecov by Sentry. |
@Farhad-Shabani I updated the
|
...I am becoming more certain that it's crucial to refactor our error system as soon as we can.
In the genesis, where no clients, connections, or channels exist, anything created subsequently will be assigned the number 0. Hence, 0 is the next. |
* imp(testkit): Mock IBC context with `basecoin-store` types (#1068) * non empty default CommitmentPrefix * update ibc mock client types * fix tests for updated mock types * generalize MockContextConfig::into * rm clone from MockContext * add with_{client,consensus}_state * add blocks_since in utils.rs * client takes host timestamp by default * refactor relayer context test * fix few tests * add ibc-query and basecoin-store deps * add basecoin-store in mock ibc context * refactor for updated mock ibc context * imp timeout test * public git commit as dep source * fix spelling * update MockClient types * fix failing tests * rm unused utils and deps * fix cargo doc lint * use ibc host paths in mock context * rm redundant curly brackets --------- Co-authored-by: Farhad Shabani <farhad.shabani@gmail.com> * imp(ibc-testkit): generalize `Host` for `MockContext` (#1107) * fix semantic conflict * happy clippy * fix next_consensus_state impl * update prev_consensus_state impl * use self.block_time over const * use constant timestamp over dynamic now * add new host impls * changes to ibc-testkit * rm deprecated methods * refactor tests * public fields for tm block params * forged client header update test * add todo comment * minor refactor * refactor tests * builder type for light client state * minor refactor * refactor tests * code opt * rename host structs * renamings * refactor tendermint host * mv year_2023 to utils * refactor the new tests * test malicious adjacent header update * fix tests * add changelog * rm unused chain_revision_number * add doc string for year_2023 * rename to query_latest_block * feat(ibc-testkit): revamp `MockContext` with chain capabilities (#1135) * imp: impl ctxs on MockIbcStore * fix: set update_meta whenever build light client * imp: generate_client_state should take latest_height * imp: remove unnecessary latest_client_states method * refactor: migrate host relevant fields/methods * fix: get back validate_self_client * imp: bring context types up under src * rm default for CommitmentPrefix * rm default height and timestamp impl for TestBlock * default MockStore * AnyClient and AnyConsensus state in MockIbcStore * at least one consensus state when bootstrapping light client * revision number in MockIbcStore * advance height in MockIbcStore * sync host and ibc store advance in conext * add host params to build host * update host trait * convenient type generics for host associated types * update MockHost * return existing block header with correct timestamp * update TendermintHost * update MockGenericContext impl * update mock context building * add implied trait bounds * refactor method * rm redundant imports and impl * call advance_block on context * update MockContext tests * rm ClientStateCommon * use HostParams to build a host * rm using max_history_size * update few tests * ignore failing tests * clippy::use_self * clippy::flat_map_option * clippy::cloned_instead_of_copied * clippy::redundant_clone * clippy::redundant_type_annotations * clippy::as_underscore * disable slow testcase * prune old host consensus state * prune host consensus history in fixture * enable ignored test * return client_id in fixture * fix and enable failing test * avoid Arc and Mutex * fix doc build * refactor host trait and impls * into over Self::from * fix msrv * explicit relative or global path for pub use * clippy::map_identity * clippy::inconsistent_struct_constructor * clippy::std_instead_of_core * use commitment_root for block generation * rename consensus_states to host_consensus_states * use basecoin proof specs * update tests * imp: add history() under TestHost * chore: add docstring for some of methods under TestHost * update TestHost trait * update MockHost and TendermintHost * add MockGenericContext::generate_genesis_block * update MockContextConfig * update tests * update remaining tests * rm comments and rename test * rm HostParams --------- Co-authored-by: Farhad Shabani <farhad.shabani@gmail.com> * imp(ibc-testkit): Tendermint proof verifications via integration test (#1146) * test tmclient proof verification * use ClientStateConfig directly * rm MockClientConfig * use basecoin store proofspec as default * update tests * use merkle storage in MockContext * fix ProofSpecs size * refactor MockIbcStore to perform begin_block and end_block * simpler proof verification test * use ValidationContext::commitment_prefix() * nits * refactor host related trait method * tendermint host client integration test with proof verification * rm raw test * use typed relayer * add todo for channel integration test * core over std * be semantically correct * add comment for TypedRelayer * integration test for all pairs * fix semantic bug * renames * add channel management * channel creation in RelayerContext * add channel creation in integration test * add test for channel close * query client_id from connection and channel * ibc_store_mut * utils functions for packet relay * add packet relay integration test * add comments * optimize integration utils functions * serde feature for integration tests * rm redundant chain_id * sync clock only on a * add comment * imp: place router under MockGenericContext * nit: add docstring for router * nits * rm redundant lint filters * imp: ditch RelayerContext * nit: simplify build_client_update_datagram * refactor integration tests * add doc strings for TypedRelayerOps * doc strings for RelayerContext * mv client_update_ping_pong to tests dir * rename main_store to multi_store * update TestHost trait * update mock and tendermint hosts * update relayer functions * nits * renames and comments * add comments for return values in relayer ops * imp: simplify into_header --------- Co-authored-by: Farhad Shabani <farhad.shabani@gmail.com> * rm prune_block_till * apply suggestions from code review Co-authored-by: Sean Chen <seanchen11235@gmail.com> Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> * rename context structs * add MockContext and TendermintContext * update with MockContext and TendermintContext * MockContextConfig to TestContextConfig * update comments with new namings * add util methods for StoreGenericTestContext * fix failing client recovery tests * increase default trusting period of MockClientState * fallible ProofSpecs conversion * update with new ClientStateConfig * use ExtClientValidationContext * fix links in doc comments * fix import order * fix semantic conflicts * Convertible over ConsensusStateConverter * rm ConsensusStateConverter * ibc-query as workspace deps * update Convertible * fix failing test * update changelog entry * add comments * rm absolute import * use expect over comment for safety * infallible try_into * update method names * add unused variable names * rm redundant TendermintBlock wrapper type * add comments * update docstrings * rm should never fail comment * update adr * fix compilation * fix failing test * docs: ADR-009 to revamp testing framework (#1157) * draft adr 009 * update adr-009 * apply suggestions from pr review Co-authored-by: Sean Chen <seanchen11235@gmail.com> Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> * use numbers list for sub-proposal titles Co-authored-by: Sean Chen <seanchen11235@gmail.com> Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> * links to validation and execute context Co-authored-by: Sean Chen <seanchen11235@gmail.com> Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> * apply suggestion from pr review * add links to impls * update comment * markdown format * update adr * use TestContext * update comment * apply suggestions from code review Co-authored-by: Sean Chen <seanchen11235@gmail.com> Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> * markdown format * update method names * fix cargo doc error --------- Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> Co-authored-by: Sean Chen <seanchen11235@gmail.com> --------- Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> Signed-off-by: Rano | Ranadeep <ranadeep@informal.systems> Co-authored-by: Farhad Shabani <farhad.shabani@gmail.com> Co-authored-by: Sean Chen <seanchen11235@gmail.com>
* imp(testkit): Mock IBC context with `basecoin-store` types (#1068) * non empty default CommitmentPrefix * update ibc mock client types * fix tests for updated mock types * generalize MockContextConfig::into * rm clone from MockContext * add with_{client,consensus}_state * add blocks_since in utils.rs * client takes host timestamp by default * refactor relayer context test * fix few tests * add ibc-query and basecoin-store deps * add basecoin-store in mock ibc context * refactor for updated mock ibc context * imp timeout test * public git commit as dep source * fix spelling * update MockClient types * fix failing tests * rm unused utils and deps * fix cargo doc lint * use ibc host paths in mock context * rm redundant curly brackets --------- Co-authored-by: Farhad Shabani <farhad.shabani@gmail.com> * imp(ibc-testkit): generalize `Host` for `MockContext` (#1107) * fix semantic conflict * happy clippy * fix next_consensus_state impl * update prev_consensus_state impl * use self.block_time over const * use constant timestamp over dynamic now * add new host impls * changes to ibc-testkit * rm deprecated methods * refactor tests * public fields for tm block params * forged client header update test * add todo comment * minor refactor * refactor tests * builder type for light client state * minor refactor * refactor tests * code opt * rename host structs * renamings * refactor tendermint host * mv year_2023 to utils * refactor the new tests * test malicious adjacent header update * fix tests * add changelog * rm unused chain_revision_number * add doc string for year_2023 * rename to query_latest_block * feat(ibc-testkit): revamp `MockContext` with chain capabilities (#1135) * imp: impl ctxs on MockIbcStore * fix: set update_meta whenever build light client * imp: generate_client_state should take latest_height * imp: remove unnecessary latest_client_states method * refactor: migrate host relevant fields/methods * fix: get back validate_self_client * imp: bring context types up under src * rm default for CommitmentPrefix * rm default height and timestamp impl for TestBlock * default MockStore * AnyClient and AnyConsensus state in MockIbcStore * at least one consensus state when bootstrapping light client * revision number in MockIbcStore * advance height in MockIbcStore * sync host and ibc store advance in conext * add host params to build host * update host trait * convenient type generics for host associated types * update MockHost * return existing block header with correct timestamp * update TendermintHost * update MockGenericContext impl * update mock context building * add implied trait bounds * refactor method * rm redundant imports and impl * call advance_block on context * update MockContext tests * rm ClientStateCommon * use HostParams to build a host * rm using max_history_size * update few tests * ignore failing tests * clippy::use_self * clippy::flat_map_option * clippy::cloned_instead_of_copied * clippy::redundant_clone * clippy::redundant_type_annotations * clippy::as_underscore * disable slow testcase * prune old host consensus state * prune host consensus history in fixture * enable ignored test * return client_id in fixture * fix and enable failing test * avoid Arc and Mutex * fix doc build * refactor host trait and impls * into over Self::from * fix msrv * explicit relative or global path for pub use * clippy::map_identity * clippy::inconsistent_struct_constructor * clippy::std_instead_of_core * use commitment_root for block generation * rename consensus_states to host_consensus_states * use basecoin proof specs * update tests * imp: add history() under TestHost * chore: add docstring for some of methods under TestHost * update TestHost trait * update MockHost and TendermintHost * add MockGenericContext::generate_genesis_block * update MockContextConfig * update tests * update remaining tests * rm comments and rename test * rm HostParams --------- Co-authored-by: Farhad Shabani <farhad.shabani@gmail.com> * imp(ibc-testkit): Tendermint proof verifications via integration test (#1146) * test tmclient proof verification * use ClientStateConfig directly * rm MockClientConfig * use basecoin store proofspec as default * update tests * use merkle storage in MockContext * fix ProofSpecs size * refactor MockIbcStore to perform begin_block and end_block * simpler proof verification test * use ValidationContext::commitment_prefix() * nits * refactor host related trait method * tendermint host client integration test with proof verification * rm raw test * use typed relayer * add todo for channel integration test * core over std * be semantically correct * add comment for TypedRelayer * integration test for all pairs * fix semantic bug * renames * add channel management * channel creation in RelayerContext * add channel creation in integration test * add test for channel close * query client_id from connection and channel * ibc_store_mut * utils functions for packet relay * add packet relay integration test * add comments * optimize integration utils functions * serde feature for integration tests * rm redundant chain_id * sync clock only on a * add comment * imp: place router under MockGenericContext * nit: add docstring for router * nits * rm redundant lint filters * imp: ditch RelayerContext * nit: simplify build_client_update_datagram * refactor integration tests * add doc strings for TypedRelayerOps * doc strings for RelayerContext * mv client_update_ping_pong to tests dir * rename main_store to multi_store * update TestHost trait * update mock and tendermint hosts * update relayer functions * nits * renames and comments * add comments for return values in relayer ops * imp: simplify into_header --------- Co-authored-by: Farhad Shabani <farhad.shabani@gmail.com> * rm prune_block_till * apply suggestions from code review Co-authored-by: Sean Chen <seanchen11235@gmail.com> Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> * rename context structs * add MockContext and TendermintContext * update with MockContext and TendermintContext * MockContextConfig to TestContextConfig * update comments with new namings * add util methods for StoreGenericTestContext * fix failing client recovery tests * increase default trusting period of MockClientState * fallible ProofSpecs conversion * update with new ClientStateConfig * use ExtClientValidationContext * fix links in doc comments * fix import order * fix semantic conflicts * Convertible over ConsensusStateConverter * rm ConsensusStateConverter * ibc-query as workspace deps * update Convertible * fix failing test * update changelog entry * add comments * rm absolute import * use expect over comment for safety * infallible try_into * update method names * add unused variable names * rm redundant TendermintBlock wrapper type * add comments * update docstrings * rm should never fail comment * update adr * fix compilation * fix failing test * docs: ADR-009 to revamp testing framework (#1157) * draft adr 009 * update adr-009 * apply suggestions from pr review Co-authored-by: Sean Chen <seanchen11235@gmail.com> Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> * use numbers list for sub-proposal titles Co-authored-by: Sean Chen <seanchen11235@gmail.com> Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> * links to validation and execute context Co-authored-by: Sean Chen <seanchen11235@gmail.com> Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> * apply suggestion from pr review * add links to impls * update comment * markdown format * update adr * use TestContext * update comment * apply suggestions from code review Co-authored-by: Sean Chen <seanchen11235@gmail.com> Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> * markdown format * update method names * fix cargo doc error --------- Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> Co-authored-by: Sean Chen <seanchen11235@gmail.com> --------- Signed-off-by: Rano | Ranadeep <ranadip.bswas@gmail.com> Signed-off-by: Rano | Ranadeep <ranadeep@informal.systems> Co-authored-by: Farhad Shabani <farhad.shabani@gmail.com> Co-authored-by: Sean Chen <seanchen11235@gmail.com>
Closes: #1045
Closes: #1052
Description
This PR adopts
basecoin-store
inibc-testkit
. Several refactors have been performed in the current code base to achieve this. To avoid breaking the tests, the reactors are committed first, followed by the main refactor, adoptingbase coin-store
types.This PR uses two unpublished crates.
ibc-proto-rs
basecoin-store
The local paths of the workspace of these crates are expected to be at the same directory level as
ibc-rs
PR author checklist:
unclog
.docs/
).Reviewer checklist:
Files changed
in the GitHub PR explorer.