Skip to content

Conversation

@rnbguy
Copy link
Member

@rnbguy rnbguy commented Feb 29, 2024

Description

This is a feature branch. The current pending PRs are

Until the feature branch is ready, use this PR to merge main onto the feature branch.

ADR-09


PR author checklist:

  • Added changelog entry, using unclog.
  • Added tests.
  • Linked to GitHub issue.
  • Updated code comments and documentation (e.g., docs/).
  • Tagged one reviewer who will be the one responsible for shepherding this PR.

Reviewer checklist:

  • Reviewed Files changed in the GitHub PR explorer.
  • Manually tested (in case integration/unit/mock tests are absent).

Sorry, something went wrong.

rnbguy and others added 2 commits February 6, 2024 20:41
* 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>
* 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
@codecov
Copy link

codecov bot commented Mar 8, 2024

Codecov Report

Attention: Patch coverage is 81.40814% with 507 lines in your changes are missing coverage. Please review.

Project coverage is 66.38%. Comparing base (87ec770) to head (e42acc9).

Files Patch % Lines
ibc-testkit/src/testapp/ibc/core/core_ctx.rs 40.82% 287 Missing ⚠️
ibc-testkit/src/relayer/utils.rs 89.20% 90 Missing ⚠️
ibc-testkit/src/relayer/context.rs 75.08% 71 Missing ⚠️
ibc-testkit/src/context.rs 92.64% 30 Missing ⚠️
ibc-testkit/src/testapp/ibc/core/client_ctx.rs 93.87% 9 Missing ⚠️
ibc-testkit/src/hosts/mod.rs 92.15% 4 Missing ⚠️
ibc-testkit/src/testapp/ibc/core/types.rs 95.55% 4 Missing ⚠️
ibc-testkit/src/hosts/mock.rs 93.61% 3 Missing ⚠️
ibc-testkit/src/hosts/tendermint.rs 97.94% 3 Missing ⚠️
ibc-testkit/src/testapp/ibc/clients/mock/header.rs 75.00% 3 Missing ⚠️
... and 2 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1109      +/-   ##
==========================================
+ Coverage   64.45%   66.38%   +1.92%     
==========================================
  Files         229      235       +6     
  Lines       22055    23347    +1292     
==========================================
+ Hits        14215    15498    +1283     
- Misses       7840     7849       +9     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@rnbguy rnbguy force-pushed the feat/refactor-testkit branch 2 times, most recently from 880dc18 to 1abf751 Compare March 12, 2024 19:23
@rnbguy rnbguy force-pushed the feat/refactor-testkit branch from 478fb30 to cb6ca8b Compare March 13, 2024 17:31
rnbguy and others added 2 commits March 29, 2024 07:46
* 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>
rnbguy and others added 2 commits April 3, 2024 15:57
…#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>
Copy link
Contributor

@seanchen1991 seanchen1991 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In testapp/ibc/core/core_ctx.rs, the docstrings for the methods implemented in the impl<S> QueryContext for MockIbcStore<S> block are all written as to be referencing some object that is not obvious.

For example, with this sentence: "Connections queries all the IBC connections of a chain." I'm not sure what the initial word "Connections" is referring to; it seems to be the object that is performing the queries, but it's not obvious what it is.

Similarly with "ClientConnections queries all the connection paths associated with a client." What is being referenced with "ClientConnections"?

@rnbguy rnbguy marked this pull request as ready for review April 11, 2024 14:10
@rnbguy rnbguy force-pushed the feat/refactor-testkit branch from 596011d to d77cd52 Compare April 30, 2024 18:26
rnbguy and others added 18 commits April 30, 2024 20:34
* 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>
@seanchen1991 seanchen1991 added this pull request to the merge queue May 3, 2024
Merged via the queue into main with commit 534a465 May 3, 2024
@seanchen1991 seanchen1991 deleted the feat/refactor-testkit branch May 3, 2024 16:25
@adizere adizere mentioned this pull request May 27, 2024
Farhad-Shabani added a commit that referenced this pull request Sep 9, 2024
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants