cosmos / cosmos-sdk

:chains: A Framework for Building High Value Public Blockchains :sparkles:
https://cosmos.network/
Apache License 2.0
6.27k stars 3.64k forks source link

fix(testutil/integration): use only one context in integration test framework #22616

Open julienrbrt opened 1 day ago

julienrbrt commented 1 day ago

Description

While debugging we the issue with gRPC state that got found in https://github.com/cosmos/cosmos-sdk/pull/22392 We realized that the double sdk context in the integration framework was super confusing.

This changed it to simply use one. Additionally, as the integration framework call initchainer, which calls init genesis, setting the default params isn't needed.


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.

I have...

Reviewers Checklist

All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.

Please see Pull Request Reviewer section in the contributing guide for more information on how to review a pull request.

I have...

Summary by CodeRabbit

coderabbitai[bot] commented 1 day ago
πŸ“ Walkthrough
πŸ“ Walkthrough ## Walkthrough The changes in this pull request primarily focus on enhancing context management across various integration tests within the Cosmos SDK. The modifications involve replacing instances of `f.ctx` with `f.app.Context()` to ensure consistent context usage derived from the `integration.App` instance. Additionally, the initialization of the `integrationApp` has been streamlined by removing unnecessary context parameters. These adjustments aim to simplify the test setup process and improve the clarity of context handling throughout the test suite. ## Changes | File Path | Change Summary | |------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| | `tests/integration/accounts/fixture_test.go` | Replaced `f.ctx` with `f.app.Context()` in methods like `runBundle`, `mint`, and `balance`. Removed `newCtx` parameter in `initFixture`. | | `tests/integration/auth/keeper/accounts_retro_compatibility_test.go` | Updated context handling in `TestAuthToAccountsGRPCCompat` and `TestAccountsBaseAccountRetroCompat` to use `f.app.Context()`. | | `tests/integration/auth/keeper/fixture_test.go` | Removed `ctx` field from `fixture` struct and eliminated `newCtx` from `initFixture`. | | `tests/integration/auth/keeper/migrate_x_accounts_test.go` | Replaced `f.ctx` with `f.app.Context()` in account management operations. | | `tests/integration/auth/keeper/msg_server_test.go` | Updated `testutil.FundAccount` to use `f.app.Context()` instead of `f.ctx`. | | `tests/integration/bank/keeper/deterministic_test.go` | Removed `newCtx` and simplified initialization of `integrationApp`. | | `tests/integration/distribution/keeper/msg_server_test.go` | Removed `newCtx` and adjusted context handling for proposer and voting details. | | `tests/integration/evidence/keeper/infraction_test.go` | Streamlined context initialization by removing `newCtx`. | | `tests/integration/example/example_test.go` | Removed context and multi-store initialization in `Example` and `Example_oneModule` functions. | | `tests/integration/gov/keeper/grpc_query_test.go` | Enhanced test structure for `TestLegacyGRPCQueryTally` with clearer variable initialization. | | `tests/integration/gov/keeper/keeper_test.go` | Removed assertions for setting parameters in `bankKeeper` and `govKeeper`, eliminated `newCtx`. | | `tests/integration/slashing/keeper/keeper_test.go` | Simplified context management by removing `newCtx` and expanded tests for validator behavior. | | `tests/integration/staking/keeper/common_test.go` | Removed context and multi-store initialization, simplifying test setup. | | `tests/integration/staking/keeper/deterministic_test.go` | Altered context creation by removing multi-store context and adjusted bank parameters handling. | | `tests/integration/type_check.go` | Reorganized import statements without functional changes. | | `testutil/integration/helpers.go` | Introduced `CreateMultiStore` function for setting up multiple stores for modules. | | `testutil/integration/router.go` | Removed `moduleManager` field, updated function signatures, and improved context handling in `NewIntegrationApp`. | | `x/bank/keeper/send.go` | Added comment regarding error handling in `GetParams` method without altering functionality. | ## Possibly related PRs - **#21480**: The main PR's changes to context management in integration tests are related to the removal of the `newCtx` parameter in the `x/accounts` module, which aligns with the context handling improvements in the main PR. - **#21632**: The changes in the main PR regarding context management are relevant to the removal of the `AccountKeeper` dependency in the `x/authz` module, as both involve enhancing context usage. - **#21822**: The main PR's focus on improving context management in integration tests connects with the introduction of the `x/validate` module, which also emphasizes structured handling of contexts. - **#22043**: The refactoring of context handling in the main PR is related to the decoupling of runtime components from gRPC, as both aim to streamline the management of application contexts. - **#22131**: The simplification of merged iterators in the main PR aligns with the changes in context management, as both aim to enhance clarity and efficiency in handling data structures. - **#22147**: The updates to the documentation in the main PR regarding context management are relevant to the fixes for inaccessible links, as both improve the overall clarity and usability of the SDK. - **#22211**: The changes in the main PR to improve context handling are related to the updates in the core services documentation, as both aim to enhance clarity and structure. - **#22557**: The main PR's modifications to context management are relevant to the updates in the `NewUncachedContext` method, as both focus on ensuring accurate header information is populated. - **#22566**: The refactoring of context handling in the main PR connects with the clean-up of APIs in the cometbft module, as both aim to improve the overall structure and maintainability of the code. - **#22568**: The main PR's focus on context management is related to the changes in the `NewUncachedContext` method, ensuring that the chainID is only overwritten when necessary. - **#22620**: The adjustments in the main PR to context handling are relevant to the fixes in the `TestSendEnabled` integration test, as both aim to enhance the reliability of the tests. ## Suggested labels `C:x/accounts` ## Suggested reviewers - tac0turtle - sontrinh16 - akhilkumarpilli

πŸ“œ Recent review details **Configuration used: .coderabbit.yml** **Review profile: CHILL**
πŸ“₯ Commits Reviewing files that changed from the base of the PR and between 3ab3fa21656b5c5bc3a376168f0c49fb1a62bfd2 and 6bcb81a0288fdf3a3d205fa8732b5e27546f445c.
πŸ“’ Files selected for processing (1) * `tests/integration/staking/keeper/common_test.go` (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1) * tests/integration/staking/keeper/common_test.go

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❀️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
πŸͺ§ Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit , please review it.` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### Documentation and Community - Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
julienrbrt commented 22 hours ago

Opening but need to add a changelog