polymerdao / monomer

Build Cosmos SDK applications on the OP Stack.
http://monomer.nethermind.io/
Apache License 2.0
23 stars 16 forks source link

Simplify e2e tests #216

Closed joshklop closed 1 month ago

joshklop commented 1 month ago

Summary by CodeRabbit

coderabbitai[bot] commented 1 month ago

Walkthrough

The pull request introduces enhancements to the end-to-end testing framework by modifying the Makefile to include additional command-line options for test configurations. It restructures private key management in the OPStack type, replacing a single private key with two distinct keys. The StackConfig in stack.go is simplified to manage user accounts more efficiently, and the handling of secrets is improved. Adjustments in the test files ensure that user accounts are represented by private keys, enhancing the accuracy of transaction operations.

Changes

File(s) Change Summary
Makefile Added command-line options to the e2e target for specifying L1 and L2 allocations, deployments, and configuration files.
e2e/op_stack.go Replaced single private key with batcherPrivKey and proposerPrivKey. Updated NewOPStack constructor and Run method to accommodate the new key structure.
e2e/stack.go Removed L1User struct; StackConfig now holds a single user private key. Updated Setup function to use copied deployment configurations and improved secrets handling.
e2e/stack_test.go Changed user account representation to a private key (userPrivKey). Updated transaction functions to use the derived user address for accuracy in transactions and balance checks.
e2e/state_dump.go Removed file containing functionality for managing and decoding Ethereum state dumps, including structures and methods related to state representation.
go.mod Removed direct dependency on github.com/ethereum-optimism/go-ethereum-hdwallet, retaining it as an indirect dependency.

Possibly related PRs

Poem

🐇 In the meadow where bunnies play,
Changes hop in a joyful way.
Keys now split, oh what a sight,
Testing's clearer, all feels right!
With options new, we leap and bound,
In code's embrace, our joy is found! 🌼


Recent review details **Configuration used: CodeRabbit UI** **Review profile: CHILL**
Commits Files that changed from the base of the PR and between 81882d206f348642f7d6f2b196a0d2e50e35fe5b and b2f2a16301710fe4864dad4df9e253879ae41906.
Files ignored due to path filters (1) * `go.sum` is excluded by `!**/*.sum`
Files selected for processing (6) * Makefile (1 hunks) * e2e/op_stack.go (3 hunks) * e2e/stack.go (5 hunks) * e2e/stack_test.go (11 hunks) * e2e/state_dump.go (0 hunks) * go.mod (1 hunks)
Files not reviewed due to no reviewable changes (1) * e2e/state_dump.go
Files skipped from review due to trivial changes (1) * go.mod
Files skipped from review as they are similar to previous changes (3) * Makefile * e2e/op_stack.go * e2e/stack_test.go
Additional comments not posted (5)
e2e/stack.go (5)
`20-21`: **LGTM!** The new imports are relevant and necessary for the changes made in the file. --- `45-45`: **Simplification of user management looks good!** Replacing the `Operator` and `Users` fields with a single `User` field of type `*ecdsa.PrivateKey` simplifies the user management in the stack configuration. This is a cleaner approach compared to managing a list of users. --- `102-108`: **Configuration management improvements look good!** The changes made to use a copied `deployConfig` from `ope2econfig`, set a smaller `SequencerWindowSize`, and use predefined allocations and deployments from `ope2econfig` centralize the configuration management and improve the test setup. The smaller `SequencerWindowSize` is intended to force unsafe block consolidation to happen more often for faster test runs, which is a reasonable approach for testing purposes. --- `162-171`: **Improved handling of L2OutputOracleCaller and secrets looks good!** Creating `l2OutputOracleCaller` using `ope2econfig.L1Deployments.L2OutputOracleProxy` is consistent with the centralized configuration management approach. Fetching `secrets` using `e2eutils.DefaultMnemonicConfig.Secrets()` improves the handling of sensitive information by using a utility function instead of generating user accounts on-the-fly. --- `176-178`: **Improved OPStack creation and user management in StackConfig looks good!** Using `ope2econfig.L1Deployments.L2OutputOracleProxy`, `secrets.Batcher`, and `secrets.Proposer` in `NewOPStack` is consistent with the centralized configuration management approach and leverages the improved secrets handling. Setting the `User` field in `StackConfig` to `secrets.Alice` simplifies the user management in the stack configuration. Also applies to: 232-232
--- 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 generate interesting stats about this repository and render them as a table.` -- `@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. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
joshklop commented 1 month ago

There are probably even more ways we can simplify the e2e tests, but this was the low-hanging fruit.