-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
perf: Replace runsim with Go stdlib testing #20490
Conversation
WalkthroughWalkthroughThis update optimizes the simulation and testing aspects of the Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant CLI
participant GoTesting
participant SimApp
participant Logger
User->>CLI: Initiate Simulation
CLI->>GoTesting: Invoke Go stdlib test
GoTesting->>SimApp: Setup Simulation Environment
SimApp->>Logger: Initialize Logger
SimApp->>GoTesting: Configure Parameters
GoTesting->>SimApp: Run Simulation
SimApp->>Logger: Log Simulation Results
SimApp->>GoTesting: Return Results
GoTesting->>CLI: Display Results to User
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? TipsChatThere are 3 ways to chat with CodeRabbit:
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 as PR comments)
Additionally, you can add CodeRabbit Configration File (
|
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.
Actionable comments posted: 1
Review details
Configuration used: .coderabbit.yml
Review profile: CHILL
Files selected for processing (14)
- .github/workflows/sims.yml (5 hunks)
- Makefile (6 hunks)
- baseapp/baseapp.go (1 hunks)
- simapp/runner.go (1 hunks)
- simapp/sim_bench_test.go (2 hunks)
- simapp/sim_test.go (5 hunks)
- testutil/sims/simulation_helpers.go (3 hunks)
- testutil/sims/state_helpers.go (3 hunks)
- types/simulation/config.go (2 hunks)
- types/simulation/rand_util.go (1 hunks)
- types/simulation/rand_util_test.go (2 hunks)
- x/simulation/client/cli/flags.go (3 hunks)
- x/simulation/params.go (2 hunks)
- x/simulation/simulate.go (12 hunks)
Files skipped from review due to trivial changes (4)
- baseapp/baseapp.go
- types/simulation/rand_util.go
- x/simulation/client/cli/flags.go
- x/simulation/params.go
Additional context used
Path-based instructions (8)
types/simulation/config.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.simapp/sim_bench_test.go (2)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Pattern
**/*_test.go
: "Assess the unit test code assessing sufficient code coverage for the changes associated in the pull request"types/simulation/rand_util_test.go (2)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Pattern
**/*_test.go
: "Assess the unit test code assessing sufficient code coverage for the changes associated in the pull request"testutil/sims/simulation_helpers.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.simapp/runner.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.testutil/sims/state_helpers.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.simapp/sim_test.go (2)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Pattern
**/*_test.go
: "Assess the unit test code assessing sufficient code coverage for the changes associated in the pull request"x/simulation/simulate.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Additional comments not posted (18)
types/simulation/config.go (2)
27-28
: The addition ofFuzzSeed
andT
fields in theConfig
struct aligns with the PR's objective to support Go fuzzer. Ensure that these new fields are properly documented and utilized consistently across the simulation tests.
31-49
: TheClone
method implementation is straightforward and correctly duplicates theConfig
struct. This is useful for ensuring that each test can modify its own copy of the configuration without affecting others, which is crucial for parallel test execution.simapp/sim_bench_test.go (2)
7-8
: The addition of"cosmossdk.io/log"
is appropriate for enhanced logging capabilities within simulation benchmarks. Ensure that the logger is used effectively throughout the benchmarks to provide meaningful debug information.
67-78
: The modifications in theBenchmarkFullAppSimulation
function reflect the updated simulation setup and execution logic. It's crucial to ensure that these changes are covered by comprehensive tests to validate the correctness of the simulations, especially with the new logging integration..github/workflows/sims.yml (2)
5-9
: Adjusting the workflow triggers to include pushes tomain
andrelease/**
branches, as well as all pull requests, is a strategic change that ensures more comprehensive testing. This should help catch issues earlier in the development cycle.
21-21
: The update to uselarge-sdk-runner
for all jobs is a significant change that likely aims to provide more resources for simulation tests, which can be resource-intensive. The addition oftest-sim-deterministic
andtest-sim-fuzz
jobs aligns with the PR's goals to enhance testing capabilities. Ensure that these new jobs are configured correctly and that their results are monitored to assess their impact on the overall CI pipeline's performance and reliability.Also applies to: 32-32, 46-46, 58-70, 72-97
types/simulation/rand_util_test.go (1)
181-185
: The test forDeriveRand
function is crucial to ensure that the derived random number generator does not produce the same output as the original, which is essential for the integrity of simulations. The use ofassert.NotEqual
is appropriate here. Consider adding more detailed assertions to verify the statistical properties of the randomness.testutil/sims/simulation_helpers.go (1)
54-61
: The addition oftxConfig
toSimulationOperations
function is a necessary update to accommodate the new transaction configuration requirements in simulations. This change should be reflected in all relevant simulation operations to ensure consistency.simapp/runner.go (1)
54-144
: The implementation ofRun
andRunWithSeeds
functions insimapp/runner.go
introduces a more structured and potentially more efficient way to handle simulation tests. These functions leverage generics to provide flexibility in handling different types of simulation apps. It's important to ensure that these functions are well-documented and that their usage is clear to other developers.testutil/sims/state_helpers.go (3)
39-46
: Change in function naming fromAppStateFn
toappStateFn
correctly encapsulates the function within the package.
49-58
: Change in function naming fromAppStateFnWithExtendedCb
toappStateFnWithExtendedCb
correctly encapsulates the function within the package.
61-67
: Change in function naming fromAppStateFnWithExtendedCbs
toappStateFnWithExtendedCbs
correctly encapsulates the function within the package.simapp/sim_test.go (3)
55-56
: Centralizing simulation setup insetupStateFactory
enhances maintainability and reusability of test setup code.
67-102
: The structured approach inTestAppImportExport
effectively tests the import and export functionality of the app state, ensuring robustness.
109-144
: Testing the application behavior after state import inTestAppSimulationAfterImport
ensures the app's stability and correctness post-import.x/simulation/simulate.go (1)
Line range hint
64-266
: Refactoring ofSimulateFromSeed
to include detailed logging and robust error handling significantly enhances the observability and maintainability of the simulation process.Makefile (2)
351-356
: Validate the newtest-sim-fuzz
target to ensure it functions as expected.
158-158
: Ensure that thedistclean
target properly cleans up all new directories or files introduced by this PR.
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.
Actionable comments posted: 2
Review details
Configuration used: .coderabbit.yml
Review profile: CHILL
Files selected for processing (5)
- .github/workflows/sims.yml (5 hunks)
- CHANGELOG.md (1 hunks)
- Makefile (6 hunks)
- simapp/sim_bench_test.go (2 hunks)
- simapp/sim_test.go (5 hunks)
Files skipped from review as they are similar to previous changes (2)
- Makefile
- simapp/sim_bench_test.go
Additional context used
Path-based instructions (2)
simapp/sim_test.go (2)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Pattern
**/*_test.go
: "Assess the unit test code assessing sufficient code coverage for the changes associated in the pull request"CHANGELOG.md (1)
Pattern
**/*.md
: "Assess the documentation for misspellings, grammatical errors, missing documentation and correctness"
Markdownlint
CHANGELOG.md
70-70: Expected: 2; Actual: 4
Unordered list indentation
71-71: Expected: 2; Actual: 4
Unordered list indentation
75-75: Expected: 2; Actual: 4
Unordered list indentation
76-76: Expected: 2; Actual: 4
Unordered list indentation
77-77: Expected: 2; Actual: 4
Unordered list indentation
78-78: Expected: 2; Actual: 4
Unordered list indentation
83-83: Expected: 2; Actual: 4
Unordered list indentation
127-127: Expected: 2; Actual: 4
Unordered list indentation
128-128: Expected: 2; Actual: 4
Unordered list indentation
129-129: Expected: 2; Actual: 4
Unordered list indentation
133-133: Expected: 2; Actual: 4
Unordered list indentation
136-136: Expected: 2; Actual: 4
Unordered list indentation
137-137: Expected: 2; Actual: 4
Unordered list indentation
138-138: Expected: 2; Actual: 4
Unordered list indentation
145-145: Expected: 2; Actual: 4
Unordered list indentation
155-155: Expected: 2; Actual: 4
Unordered list indentation
157-157: Expected: 2; Actual: 4
Unordered list indentation
160-160: Expected: 2; Actual: 4
Unordered list indentation
179-179: Expected: 2; Actual: 4
Unordered list indentation
180-180: Expected: 2; Actual: 4
Unordered list indentation
182-182: Expected: 2; Actual: 4
Unordered list indentation
183-183: Expected: 2; Actual: 4
Unordered list indentation
215-215: Expected: 2; Actual: 4
Unordered list indentation
216-216: Expected: 2; Actual: 4
Unordered list indentation
217-217: Expected: 2; Actual: 4
Unordered list indentation
381-381: Expected: 2; Actual: 4
Unordered list indentation
384-384: Expected: 2; Actual: 4
Unordered list indentation
406-406: Expected: 2; Actual: 4
Unordered list indentation
407-407: Expected: 2; Actual: 4
Unordered list indentation
420-420: Expected: 2; Actual: 4
Unordered list indentation
452-452: Expected: 2; Actual: 4
Unordered list indentation
453-453: Expected: 2; Actual: 4
Unordered list indentation
454-454: Expected: 2; Actual: 4
Unordered list indentation
455-455: Expected: 2; Actual: 4
Unordered list indentation
457-457: Expected: 2; Actual: 4
Unordered list indentation
458-458: Expected: 2; Actual: 4
Unordered list indentation
459-459: Expected: 2; Actual: 4
Unordered list indentation
460-460: Expected: 2; Actual: 4
Unordered list indentation
474-474: Expected: 2; Actual: 4
Unordered list indentation
476-476: Expected: 2; Actual: 4
Unordered list indentation
478-478: Expected: 2; Actual: 4
Unordered list indentation
480-480: Expected: 2; Actual: 4
Unordered list indentation
483-483: Expected: 2; Actual: 4
Unordered list indentation
484-484: Expected: 2; Actual: 4
Unordered list indentation
485-485: Expected: 2; Actual: 4
Unordered list indentation
493-493: Expected: 2; Actual: 4
Unordered list indentation
494-494: Expected: 2; Actual: 4
Unordered list indentation
496-496: Expected: 2; Actual: 4
Unordered list indentation
497-497: Expected: 2; Actual: 4
Unordered list indentation
499-499: Expected: 2; Actual: 4
Unordered list indentation
500-500: Expected: 2; Actual: 4
Unordered list indentation
501-501: Expected: 2; Actual: 4
Unordered list indentation
503-503: Expected: 2; Actual: 4
Unordered list indentation
504-504: Expected: 2; Actual: 4
Unordered list indentation
512-512: Expected: 2; Actual: 4
Unordered list indentation
523-523: Expected: 2; Actual: 4
Unordered list indentation
524-524: Expected: 2; Actual: 4
Unordered list indentation
525-525: Expected: 2; Actual: 4
Unordered list indentation
531-531: Expected: 2; Actual: 4
Unordered list indentation
532-532: Expected: 2; Actual: 4
Unordered list indentation
533-533: Expected: 2; Actual: 4
Unordered list indentation
539-539: Expected: 2; Actual: 4
Unordered list indentation
555-555: Expected: 2; Actual: 4
Unordered list indentation
556-556: Expected: 2; Actual: 4
Unordered list indentation
557-557: Expected: 2; Actual: 4
Unordered list indentation
558-558: Expected: 2; Actual: 4
Unordered list indentation
559-559: Expected: 2; Actual: 4
Unordered list indentation
560-560: Expected: 2; Actual: 4
Unordered list indentation
565-565: Expected: 2; Actual: 4
Unordered list indentation
566-566: Expected: 2; Actual: 4
Unordered list indentation
567-567: Expected: 2; Actual: 4
Unordered list indentation
568-568: Expected: 2; Actual: 4
Unordered list indentation
575-575: Expected: 2; Actual: 4
Unordered list indentation
576-576: Expected: 2; Actual: 4
Unordered list indentation
577-577: Expected: 2; Actual: 4
Unordered list indentation
611-611: Expected: 2; Actual: 4
Unordered list indentation
612-612: Expected: 2; Actual: 4
Unordered list indentation
613-613: Expected: 2; Actual: 4
Unordered list indentation
614-614: Expected: 2; Actual: 4
Unordered list indentation
619-619: Expected: 2; Actual: 4
Unordered list indentation
620-620: Expected: 2; Actual: 4
Unordered list indentation
757-757: Expected: 2; Actual: 4
Unordered list indentation
900-900: Expected: 2; Actual: 4
Unordered list indentation
921-921: Expected: 2; Actual: 4
Unordered list indentation
924-924: Expected: 2; Actual: 4
Unordered list indentation
1006-1006: Expected: 2; Actual: 4
Unordered list indentation
1007-1007: Expected: 2; Actual: 4
Unordered list indentation
1008-1008: Expected: 2; Actual: 4
Unordered list indentation
1009-1009: Expected: 2; Actual: 4
Unordered list indentation
1010-1010: Expected: 2; Actual: 4
Unordered list indentation
1011-1011: Expected: 2; Actual: 4
Unordered list indentation
1108-1108: Expected: 2; Actual: 4
Unordered list indentation
1194-1194: Expected: 2; Actual: 4
Unordered list indentation
1240-1240: Expected: 2; Actual: 4
Unordered list indentation
1246-1246: Expected: 2; Actual: 4
Unordered list indentation
1247-1247: Expected: 2; Actual: 4
Unordered list indentation
1248-1248: Expected: 2; Actual: 4
Unordered list indentation
1249-1249: Expected: 2; Actual: 4
Unordered list indentation
1250-1250: Expected: 2; Actual: 4
Unordered list indentation
1251-1251: Expected: 2; Actual: 4
Unordered list indentation
1351-1351: Expected: 2; Actual: 4
Unordered list indentation
1476-1476: Expected: 2; Actual: 4
Unordered list indentation
1477-1477: Expected: 4; Actual: 8
Unordered list indentation
1478-1478: Expected: 4; Actual: 8
Unordered list indentation
1479-1479: Expected: 2; Actual: 4
Unordered list indentation
1480-1480: Expected: 4; Actual: 8
Unordered list indentation
1481-1481: Expected: 4; Actual: 8
Unordered list indentation
1482-1482: Expected: 4; Actual: 8
Unordered list indentation
1483-1483: Expected: 2; Actual: 4
Unordered list indentation
1486-1486: Expected: 2; Actual: 4
Unordered list indentation
1487-1487: Expected: 4; Actual: 8
Unordered list indentation
1488-1488: Expected: 2; Actual: 4
Unordered list indentation
1489-1489: Expected: 4; Actual: 8
Unordered list indentation
1490-1490: Expected: 4; Actual: 8
Unordered list indentation
1491-1491: Expected: 4; Actual: 8
Unordered list indentation
1740-1740: Expected: 2; Actual: 4
Unordered list indentation
1741-1741: Expected: 2; Actual: 4
Unordered list indentation
1742-1742: Expected: 2; Actual: 4
Unordered list indentation
1743-1743: Expected: 2; Actual: 4
Unordered list indentation
1744-1744: Expected: 2; Actual: 4
Unordered list indentation
1745-1745: Expected: 2; Actual: 4
Unordered list indentation
1855-1855: Expected: 2; Actual: 4
Unordered list indentation
2192-2192: Expected: 2; Actual: 4
Unordered list indentation
2193-2193: Expected: 2; Actual: 4
Unordered list indentation
2194-2194: Expected: 2; Actual: 4
Unordered list indentation
2197-2197: Expected: 2; Actual: 4
Unordered list indentation
2198-2198: Expected: 2; Actual: 4
Unordered list indentation
2199-2199: Expected: 2; Actual: 4
Unordered list indentation
2221-2221: Expected: 2; Actual: 4
Unordered list indentation
2222-2222: Expected: 2; Actual: 4
Unordered list indentation
2223-2223: Expected: 2; Actual: 4
Unordered list indentation
2224-2224: Expected: 2; Actual: 4
Unordered list indentation
2225-2225: Expected: 2; Actual: 4
Unordered list indentation
2233-2233: Expected: 2; Actual: 4
Unordered list indentation
2234-2234: Expected: 2; Actual: 4
Unordered list indentation
2235-2235: Expected: 2; Actual: 4
Unordered list indentation
2236-2236: Expected: 2; Actual: 4
Unordered list indentation
2237-2237: Expected: 2; Actual: 4
Unordered list indentation
2239-2239: Expected: 2; Actual: 4
Unordered list indentation
2240-2240: Expected: 2; Actual: 4
Unordered list indentation
2241-2241: Expected: 2; Actual: 4
Unordered list indentation
2568-2568: Expected: 2; Actual: 4
Unordered list indentation
2569-2569: Expected: 2; Actual: 4
Unordered list indentation
2570-2570: Expected: 2; Actual: 4
Unordered list indentation
2571-2571: Expected: 2; Actual: 4
Unordered list indentation
2572-2572: Expected: 2; Actual: 4
Unordered list indentation
2574-2574: Expected: 2; Actual: 4
Unordered list indentation
2576-2576: Expected: 2; Actual: 4
Unordered list indentation
2577-2577: Expected: 2; Actual: 4
Unordered list indentation
2578-2578: Expected: 2; Actual: 4
Unordered list indentation
2579-2579: Expected: 2; Actual: 4
Unordered list indentation
2580-2580: Expected: 2; Actual: 4
Unordered list indentation
2581-2581: Expected: 2; Actual: 4
Unordered list indentation
2583-2583: Expected: 2; Actual: 4
Unordered list indentation
2584-2584: Expected: 2; Actual: 4
Unordered list indentation
2585-2585: Expected: 2; Actual: 4
Unordered list indentation
2588-2588: Expected: 2; Actual: 4
Unordered list indentation
2589-2589: Expected: 2; Actual: 4
Unordered list indentation
2590-2590: Expected: 2; Actual: 4
Unordered list indentation
2591-2591: Expected: 2; Actual: 4
Unordered list indentation
2592-2592: Expected: 2; Actual: 4
Unordered list indentation
2595-2595: Expected: 2; Actual: 4
Unordered list indentation
2598-2598: Expected: 2; Actual: 4
Unordered list indentation
2601-2601: Expected: 2; Actual: 4
Unordered list indentation
2602-2602: Expected: 2; Actual: 4
Unordered list indentation
2605-2605: Expected: 2; Actual: 4
Unordered list indentation
2612-2612: Expected: 2; Actual: 4
Unordered list indentation
2613-2613: Expected: 2; Actual: 4
Unordered list indentation
2614-2614: Expected: 2; Actual: 4
Unordered list indentation
2615-2615: Expected: 2; Actual: 4
Unordered list indentation
2616-2616: Expected: 2; Actual: 4
Unordered list indentation
2618-2618: Expected: 2; Actual: 4
Unordered list indentation
2619-2619: Expected: 2; Actual: 4
Unordered list indentation
2620-2620: Expected: 2; Actual: 4
Unordered list indentation
2621-2621: Expected: 2; Actual: 4
Unordered list indentation
2622-2622: Expected: 2; Actual: 4
Unordered list indentation
2623-2623: Expected: 2; Actual: 4
Unordered list indentation
2624-2624: Expected: 2; Actual: 4
Unordered list indentation
2625-2625: Expected: 2; Actual: 4
Unordered list indentation
2626-2626: Expected: 4; Actual: 8
Unordered list indentation
2629-2629: Expected: 2; Actual: 4
Unordered list indentation
2630-2630: Expected: 2; Actual: 4
Unordered list indentation
2631-2631: Expected: 2; Actual: 4
Unordered list indentation
2632-2632: Expected: 2; Actual: 4
Unordered list indentation
2633-2633: Expected: 2; Actual: 4
Unordered list indentation
2634-2634: Expected: 2; Actual: 4
Unordered list indentation
2641-2641: Expected: 2; Actual: 4
Unordered list indentation
2642-2642: Expected: 2; Actual: 4
Unordered list indentation
2643-2643: Expected: 2; Actual: 4
Unordered list indentation
2644-2644: Expected: 2; Actual: 4
Unordered list indentation
2651-2651: Expected: 2; Actual: 4
Unordered list indentation
2653-2653: Expected: 2; Actual: 4
Unordered list indentation
2655-2655: Expected: 2; Actual: 4
Unordered list indentation
2656-2656: Expected: 2; Actual: 4
Unordered list indentation
2657-2657: Expected: 2; Actual: 4
Unordered list indentation
2658-2658: Expected: 2; Actual: 4
Unordered list indentation
2659-2659: Expected: 2; Actual: 4
Unordered list indentation
2660-2660: Expected: 2; Actual: 4
Unordered list indentation
2661-2661: Expected: 2; Actual: 4
Unordered list indentation
2662-2662: Expected: 2; Actual: 4
Unordered list indentation
2663-2663: Expected: 2; Actual: 4
Unordered list indentation
2664-2664: Expected: 2; Actual: 4
Unordered list indentation
2665-2665: Expected: 2; Actual: 4
Unordered list indentation
2666-2666: Expected: 2; Actual: 4
Unordered list indentation
2667-2667: Expected: 2; Actual: 4
Unordered list indentation
2668-2668: Expected: 4; Actual: 8
Unordered list indentation
2669-2669: Expected: 4; Actual: 8
Unordered list indentation
2670-2670: Expected: 4; Actual: 8
Unordered list indentation
2671-2671: Expected: 2; Actual: 4
Unordered list indentation
2672-2672: Expected: 2; Actual: 4
Unordered list indentation
2673-2673: Expected: 2; Actual: 4
Unordered list indentation
2674-2674: Expected: 2; Actual: 4
Unordered list indentation
2675-2675: Expected: 2; Actual: 4
Unordered list indentation
2676-2676: Expected: 2; Actual: 4
Unordered list indentation
2677-2677: Expected: 2; Actual: 4
Unordered list indentation
2678-2678: Expected: 4; Actual: 8
Unordered list indentation
2679-2679: Expected: 4; Actual: 8
Unordered list indentation
2680-2680: Expected: 4; Actual: 8
Unordered list indentation
2681-2681: Expected: 2; Actual: 4
Unordered list indentation
2683-2683: Expected: 4; Actual: 8
Unordered list indentation
2684-2684: Expected: 4; Actual: 8
Unordered list indentation
2686-2686: Expected: 2; Actual: 4
Unordered list indentation
2687-2687: Expected: 2; Actual: 4
Unordered list indentation
2688-2688: Expected: 4; Actual: 8
Unordered list indentation
2689-2689: Expected: 4; Actual: 8
Unordered list indentation
2690-2690: Expected: 2; Actual: 4
Unordered list indentation
2691-2691: Expected: 2; Actual: 4
Unordered list indentation
2692-2692: Expected: 2; Actual: 4
Unordered list indentation
2695-2695: Expected: 2; Actual: 4
Unordered list indentation
2696-2696: Expected: 2; Actual: 4
Unordered list indentation
2698-2698: Expected: 2; Actual: 4
Unordered list indentation
2699-2699: Expected: 2; Actual: 4
Unordered list indentation
2702-2702: Expected: 2; Actual: 4
Unordered list indentation
2703-2703: Expected: 4; Actual: 8
Unordered list indentation
2704-2704: Expected: 4; Actual: 8
Unordered list indentation
2705-2705: Expected: 4; Actual: 8
Unordered list indentation
2706-2706: Expected: 4; Actual: 8
Unordered list indentation
2707-2707: Expected: 2; Actual: 4
Unordered list indentation
2708-2708: Expected: 2; Actual: 4
Unordered list indentation
2709-2709: Expected: 2; Actual: 4
Unordered list indentation
2711-2711: Expected: 2; Actual: 4
Unordered list indentation
2712-2712: Expected: 2; Actual: 4
Unordered list indentation
2713-2713: Expected: 2; Actual: 4
Unordered list indentation
2719-2719: Expected: 2; Actual: 4
Unordered list indentation
2722-2722: Expected: 2; Actual: 4
Unordered list indentation
2728-2728: Expected: 2; Actual: 4
Unordered list indentation
2736-2736: Expected: 2; Actual: 4
Unordered list indentation
2737-2737: Expected: 4; Actual: 8
Unordered list indentation
2738-2738: Expected: 4; Actual: 8
Unordered list indentation
2739-2739: Expected: 2; Actual: 4
Unordered list indentation
2747-2747: Expected: 2; Actual: 4
Unordered list indentation
2754-2754: Expected: 2; Actual: 4
Unordered list indentation
2755-2755: Expected: 2; Actual: 4
Unordered list indentation
2762-2762: Expected: 2; Actual: 4
Unordered list indentation
2764-2764: Expected: 2; Actual: 4
Unordered list indentation
2768-2768: Expected: 2; Actual: 4
Unordered list indentation
2769-2769: Expected: 2; Actual: 4
Unordered list indentation
2771-2771: Expected: 2; Actual: 4
Unordered list indentation
2779-2779: Expected: 2; Actual: 4
Unordered list indentation
2781-2781: Expected: 2; Actual: 4
Unordered list indentation
2782-2782: Expected: 2; Actual: 4
Unordered list indentation
2788-2788: Expected: 2; Actual: 4
Unordered list indentation
2796-2796: Expected: 2; Actual: 4
Unordered list indentation
2797-2797: Expected: 2; Actual: 4
Unordered list indentation
2798-2798: Expected: 2; Actual: 4
Unordered list indentation
2799-2799: Expected: 2; Actual: 4
Unordered list indentation
2800-2800: Expected: 2; Actual: 4
Unordered list indentation
2801-2801: Expected: 2; Actual: 4
Unordered list indentation
2802-2802: Expected: 2; Actual: 4
Unordered list indentation
2803-2803: Expected: 2; Actual: 4
Unordered list indentation
2804-2804: Expected: 2; Actual: 4
Unordered list indentation
2805-2805: Expected: 2; Actual: 4
Unordered list indentation
2806-2806: Expected: 2; Actual: 4
Unordered list indentation
2807-2807: Expected: 2; Actual: 4
Unordered list indentation
2808-2808: Expected: 2; Actual: 4
Unordered list indentation
2809-2809: Expected: 2; Actual: 4
Unordered list indentation
2811-2811: Expected: 2; Actual: 4
Unordered list indentation
2812-2812: Expected: 2; Actual: 4
Unordered list indentation
2814-2814: Expected: 2; Actual: 4
Unordered list indentation
2815-2815: Expected: 2; Actual: 4
Unordered list indentation
2816-2816: Expected: 4; Actual: 8
Unordered list indentation
2817-2817: Expected: 4; Actual: 8
Unordered list indentation
2818-2818: Expected: 2; Actual: 4
Unordered list indentation
2819-2819: Expected: 2; Actual: 4
Unordered list indentation
2820-2820: Expected: 2; Actual: 4
Unordered list indentation
2821-2821: Expected: 2; Actual: 4
Unordered list indentation
2822-2822: Expected: 4; Actual: 8
Unordered list indentation
2823-2823: Expected: 4; Actual: 8
Unordered list indentation
2825-2825: Expected: 2; Actual: 4
Unordered list indentation
2826-2826: Expected: 2; Actual: 4
Unordered list indentation
2829-2829: Expected: 2; Actual: 4
Unordered list indentation
2830-2830: Expected: 2; Actual: 4
Unordered list indentation
2831-2831: Expected: 2; Actual: 4
Unordered list indentation
2832-2832: Expected: 2; Actual: 4
Unordered list indentation
2833-2833: Expected: 4; Actual: 8
Unordered list indentation
2834-2834: Expected: 4; Actual: 8
Unordered list indentation
2835-2835: Expected: 4; Actual: 8
Unordered list indentation
2836-2836: Expected: 4; Actual: 8
Unordered list indentation
2837-2837: Expected: 4; Actual: 8
Unordered list indentation
2838-2838: Expected: 4; Actual: 8
Unordered list indentation
2839-2839: Expected: 4; Actual: 8
Unordered list indentation
2840-2840: Expected: 4; Actual: 8
Unordered list indentation
2841-2841: Expected: 4; Actual: 8
Unordered list indentation
2842-2842: Expected: 4; Actual: 8
Unordered list indentation
2843-2843: Expected: 2; Actual: 4
Unordered list indentation
2844-2844: Expected: 2; Actual: 4
Unordered list indentation
2849-2849: Expected: 2; Actual: 4
Unordered list indentation
2850-2850: Expected: 2; Actual: 4
Unordered list indentation
2851-2851: Expected: 2; Actual: 4
Unordered list indentation
2852-2852: Expected: 2; Actual: 4
Unordered list indentation
2853-2853: Expected: 2; Actual: 4
Unordered list indentation
2854-2854: Expected: 2; Actual: 4
Unordered list indentation
2856-2856: Expected: 2; Actual: 4
Unordered list indentation
2858-2858: Expected: 2; Actual: 4
Unordered list indentation
2872-2872: Expected: 2; Actual: 4
Unordered list indentation
2873-2873: Expected: 2; Actual: 4
Unordered list indentation
2874-2874: Expected: 2; Actual: 4
Unordered list indentation
2879-2879: Expected: 2; Actual: 4
Unordered list indentation
2880-2880: Expected: 2; Actual: 4
Unordered list indentation
2881-2881: Expected: 2; Actual: 4
Unordered list indentation
2885-2885: Expected: 2; Actual: 4
Unordered list indentation
2886-2886: Expected: 2; Actual: 4
Unordered list indentation
2887-2887: Expected: 2; Actual: 4
Unordered list indentation
2888-2888: Expected: 2; Actual: 4
Unordered list indentation
2889-2889: Expected: 2; Actual: 4
Unordered list indentation
2890-2890: Expected: 2; Actual: 4
Unordered list indentation
2893-2893: Expected: 2; Actual: 4
Unordered list indentation
2894-2894: Expected: 2; Actual: 4
Unordered list indentation
2895-2895: Expected: 2; Actual: 4
Unordered list indentation
2896-2896: Expected: 2; Actual: 4
Unordered list indentation
2897-2897: Expected: 2; Actual: 4
Unordered list indentation
2898-2898: Expected: 2; Actual: 4
Unordered list indentation
2899-2899: Expected: 2; Actual: 4
Unordered list indentation
2900-2900: Expected: 2; Actual: 4
Unordered list indentation
2901-2901: Expected: 2; Actual: 4
Unordered list indentation
2903-2903: Expected: 2; Actual: 4
Unordered list indentation
2905-2905: Expected: 2; Actual: 4
Unordered list indentation
2907-2907: Expected: 2; Actual: 4
Unordered list indentation
2912-2912: Expected: 2; Actual: 4
Unordered list indentation
2913-2913: Expected: 2; Actual: 4
Unordered list indentation
2914-2914: Expected: 2; Actual: 4
Unordered list indentation
2915-2915: Expected: 2; Actual: 4
Unordered list indentation
2916-2916: Expected: 2; Actual: 4
Unordered list indentation
2917-2917: Expected: 4; Actual: 8
Unordered list indentation
2918-2918: Expected: 4; Actual: 8
Unordered list indentation
2919-2919: Expected: 2; Actual: 4
Unordered list indentation
2920-2920: Expected: 4; Actual: 8
Unordered list indentation
2921-2921: Expected: 4; Actual: 8
Unordered list indentation
2922-2922: Expected: 4; Actual: 8
Unordered list indentation
2923-2923: Expected: 2; Actual: 4
Unordered list indentation
2924-2924: Expected: 2; Actual: 4
Unordered list indentation
2925-2925: Expected: 2; Actual: 4
Unordered list indentation
2926-2926: Expected: 4; Actual: 8
Unordered list indentation
2927-2927: Expected: 4; Actual: 8
Unordered list indentation
2928-2928: Expected: 2; Actual: 4
Unordered list indentation
2929-2929: Expected: 2; Actual: 4
Unordered list indentation
2930-2930: Expected: 2; Actual: 4
Unordered list indentation
2931-2931: Expected: 2; Actual: 4
Unordered list indentation
2932-2932: Expected: 2; Actual: 4
Unordered list indentation
189-189: Expected: 0 or 2; Actual: 1
Trailing spaces
212-212: Expected: 0 or 2; Actual: 1
Trailing spaces
43-43: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines
66-66: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines
44-44: null
Lists should be surrounded by blank lines
67-67: null
Lists should be surrounded by blank lines
1658-1658: null
Bare URL used
1688-1688: null
Bare URL used
2635-2635: null
Spaces inside emphasis markers
2723-2723: null
Spaces inside emphasis markers
2725-2725: null
Spaces inside emphasis markers
2730-2730: null
Spaces inside emphasis markers
2732-2732: null
Spaces inside emphasis markers
2742-2742: null
Spaces inside emphasis markers
2744-2744: null
Spaces inside emphasis markers
2749-2749: null
Spaces inside emphasis markers
2757-2757: null
Spaces inside emphasis markers
2774-2774: null
Spaces inside emphasis markers
2776-2776: null
Spaces inside emphasis markers
2784-2784: null
Spaces inside emphasis markers
2790-2790: null
Spaces inside emphasis markers
2860-2860: null
Spaces inside emphasis markers
2863-2863: null
Spaces inside emphasis markers
2866-2866: null
Spaces inside emphasis markers
2868-2868: null
Spaces inside emphasis markers
2908-2908: null
Spaces inside emphasis markers
1029-1029: null
Spaces inside code span elements
2676-2676: null
Spaces inside code span elements
2676-2676: null
Spaces inside code span elements
Additional comments not posted (7)
.github/workflows/sims.yml (3)
55-67
: The jobtest-sim-deterministic
is newly added. Verify that the correspondingmake
command (test-sim-nondeterminism-streaming
) is correctly set up and functional.Verification successful
The
test-sim-nondeterminism-streaming
target is defined in the Makefile, as evidenced by the search results. This confirms that the correspondingmake
command is correctly set up and functional.
- Makefile contains the
test-sim-nondeterminism-streaming
target.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the make command for the new deterministic simulation test. # Test: Search for the make command in the Makefile. Expect: Definition and correct setup of `test-sim-nondeterminism-streaming`. rg --type makefile --glob '*Makefile' 'test-sim-nondeterminism-streaming'Length of output: 106
Script:
#!/bin/bash # Description: Verify the make command for the new deterministic simulation test. # Test: Search for the make command in the Makefile. Expect: Definition and correct setup of `test-sim-nondeterminism-streaming`. rg --type make --glob '*Makefile' 'test-sim-nondeterminism-streaming'Length of output: 262
18-18
: Ensure the runnerlarge-sdk-runner
is properly configured and available.
29-29
: All simulation jobs now use thelarge-sdk-runner
. Confirm that this runner has the necessary resources and permissions for all the tasks.Also applies to: 43-43, 55-55, 69-69, 85-85, 113-113
simapp/sim_test.go (4)
57-58
: Review the changes in the test functions to ensure they align with the new simulation setup and parameters. Check for sufficient coverage and correct use of the new simulation features.Also applies to: 69-104, 112-146, 152-203, 244-257
6-6
: New imports (encoding/binary
,io
,sync
) have been added. Verify that these are used effectively in the tests and there are no unused imports.Also applies to: 9-9, 12-12
Verification successful
The new imports
encoding/binary
,io
, andsync
are indeed used in thesimapp/sim_test.go
file. Here are the specific usages:
binary
: Used inFuzzFullAppSimulation
function.io
: Used ininterBlockCachingAppFactory
function.sync
: Used in a variable declaration (var mx sync.Mutex
).This confirms that the new imports are utilized effectively in the tests.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Check for usage of new imports in `simapp/sim_test.go`. # Test: Search for usage of `binary`, `io`, and `sync` in the file. Expect: At least one usage of each import. rg --type go --glob 'sim_test.go' 'binary|io|sync'Length of output: 2990
244-257
: The new fuzz testFuzzFullAppSimulation
has been added. Ensure that the fuzzing setup is correctly implemented and that it effectively tests the application.Verification successful
The gathered information provides the full implementations of
FuzzFullAppSimulation
and its dependencies:RunWithSeeds
,NewSimApp
, andsetupStateFactory
. Here's a summary of the findings:
FuzzFullAppSimulation:
- This function sets up a fuzz test using
f.Fuzz
.- It skips the test if the
rawSeed
length is less than 8.- It calls
RunWithSeeds
with the appropriate parameters.RunWithSeeds:
- This function runs simulations with the provided seeds.
- It initializes configuration and runs tests in parallel for each seed.
NewSimApp:
- There are two implementations found in
app_di.go
andapp.go
.- Both functions initialize the
SimApp
with necessary parameters like logger, database, trace store, etc.setupStateFactory:
- This function sets up the state factory for the simulation.
- It returns a
SimStateFactory
with codec, app state function, and blocked addresses.The implementations appear to be correctly set up for fuzz testing. The
RunWithSeeds
function ensures that the application is tested with different seeds, and thesetupStateFactory
prepares the necessary state for the simulation.Based on this analysis, the fuzzing setup in
FuzzFullAppSimulation
is correctly implemented and should effectively test the application.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the setup and effectiveness of the fuzz test. # Test: Check for the setup and usage of fuzzing in `FuzzFullAppSimulation`. Expect: Correct setup and effective testing. rg --type go --glob 'sim_test.go' 'FuzzFullAppSimulation'Length of output: 117
Script:
#!/bin/bash # Description: Gather implementation details of `FuzzFullAppSimulation` and its dependencies. # Fetch the implementation of `FuzzFullAppSimulation` rg --type go --glob 'sim_test.go' -A 20 'func FuzzFullAppSimulation' # Fetch the implementation of `RunWithSeeds` rg --type go 'func RunWithSeeds' # Fetch the implementation of `NewSimApp` rg --type go 'func NewSimApp' # Fetch the implementation of `setupStateFactory` rg --type go 'func setupStateFactory'Length of output: 924
Script:
#!/bin/bash # Description: Gather full implementations of `RunWithSeeds`, `NewSimApp`, and `setupStateFactory`. # Fetch the full implementation of `RunWithSeeds` rg --type go --glob 'runner.go' -A 20 'func RunWithSeeds' # Fetch the full implementation of `NewSimApp` from both locations rg --type go --glob 'app_di.go' -A 20 'func NewSimApp' rg --type go --glob 'app.go' -A 20 'func NewSimApp' # Fetch the full implementation of `setupStateFactory` rg --type go --glob 'sim_test.go' -A 20 'func setupStateFactory'Length of output: 4265
57-58
: The functionTestFullAppSimulation
has been simplified. Ensure that the newRun
function adequately covers all necessary test scenarios.Verification successful
The
Run
function insimapp/runner.go
is a helper function that runs a simulation test with the given parameters by calling theRunWithSeeds
function. It sets up the environment, creates an instance of the simulation app, and runs the simulation test for each seed in parallel. This implementation builds upon the Go standard library test framework and ensures deterministic execution, which can be used for fuzz tests as well.
Run
function definition:simapp/runner.go
Based on this information, it appears that the
Run
function adequately covers the necessary test scenarios by setting up the environment and running the simulation tests in a deterministic manner.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the coverage of `TestFullAppSimulation`. # Test: Check for test scenarios covered by `Run` in `TestFullAppSimulation`. Expect: Comprehensive coverage. rg --type go --glob 'sim_test.go' 'TestFullAppSimulation'Length of output: 117
Script:
#!/bin/bash # Description: Locate the definition of the `Run` function and examine its implementation. # Step 1: Locate the definition of the `Run` function. rg --type go --pattern 'func Run' # Step 2: Examine the parameters passed to `Run` in `TestFullAppSimulation`. rg --type go --glob 'sim_test.go' 'Run(t, NewSimApp, setupStateFactory)'Length of output: 520
Script:
#!/bin/bash # Description: Locate the definition of the `Run` function and examine its implementation. # Step 1: Locate the definition of the `Run` function. rg --type go 'func Run' # Step 2: Examine the parameters passed to `Run` in `TestFullAppSimulation`. rg --type go --glob 'sim_test.go' 'Run(t, NewSimApp, setupStateFactory)'Length of output: 258
Script:
#!/bin/bash # Description: Extract the implementation of the `Run` function from `simapp/runner.go`. # Step 1: Extract the `Run` function implementation. rg --type go --context 10 'func Run' simapp/runner.goLength of output: 1662
* main: docs: add docs on permissions (#20526) refactor(x/gov): set environment in context for legacy proposals (#20521) docs: migrate diagrams to mermaidjs (#20503) refactor(tools/hubl): don't use nil panic (#20515) refactor(x/authz): set environment in context (#20502) build(deps): Bump github.com/spf13/viper from 1.18.2 to 1.19.0 (#20519) feat(x/bank): Placing SendRestriction before Deduction of Coins in SendCoins (#20517) chore: sonar ignore directories with their own go.mods (#20509) ci: run action in merge queue (#20508)
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.
Actionable comments posted: 7
Outside diff range and nitpick comments (1)
x/simulation/simulate.go (1)
63-63
: Ensure proper documentation for the new logger parameter.Consider adding a comment above the
logger
parameter to explain its usage within the function, enhancing code readability and maintainability.
Review details
Configuration used: .coderabbit.yml
Review profile: CHILL
Files selected for processing (1)
- x/simulation/simulate.go (14 hunks)
Additional context used
Path-based instructions (1)
x/simulation/simulate.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Additional comments not posted (2)
x/simulation/simulate.go (2)
81-81
: Potential source of non-determinism should be addressed.The use of
time.Now()
introduces a potential source of non-determinism which is critical in a blockchain context. Verify if this can be replaced or if its impact can be mitigated.
95-95
: Improve error messaging for clarity.
[REFACTOR_SUGGESTion]
Refine the error message to provide more context about why at least two genesis accounts are required, which could help developers understand the simulation setup better.- return params, fmt.Errorf("at least two genesis accounts are required") + return params, fmt.Errorf("simulation initialization failed: at least two genesis accounts are required to ensure diverse transaction scenarios")
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.
Actionable comments posted: 1
Outside diff range and nitpick comments (1)
x/simulation/simulate.go (1)
63-63
: Ensure proper documentation for the logger parameter.Adding a comment explaining the role of the
logger
parameter would enhance code readability and maintainability.
Review details
Configuration used: .coderabbit.yml
Review profile: CHILL
Files selected for processing (1)
- x/simulation/simulate.go (14 hunks)
Additional context used
Path-based instructions (1)
x/simulation/simulate.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Learnings (1)
x/simulation/simulate.go (1)
User: alpe PR: cosmos/cosmos-sdk#20490 File: x/simulation/simulate.go:78-78 Timestamp: 2024-06-07T07:40:09.804Z Learning: The use of `math/rand` instead of `crypto/rand` in `x/simulation/simulate.go` is intentional as per user `alpe`.
Additional comments not posted (8)
x/simulation/simulate.go (8)
78-78
: Use of weak random number generator noted.As previously flagged by the security bot, the use of
math/rand
for randomness in blockchain-related code could lead to vulnerabilities. Consider usingcrypto/rand
for enhanced security.
81-81
: Calling the system time may introduce non-determinism.Using system time (
time.Now()
) in simulations can lead to non-deterministic behavior, which is generally undesirable in testing environments.
106-106
: Improve error handling strategy.Instead of returning the error directly, consider logging the error and continuing with a default or safe operation if possible. This can prevent the simulation from stopping abruptly due to minor issues.
161-161
: Enhance the panic recovery process by adding more detailed logging.This could help in diagnosing issues post-mortem.
- logger.Error("simulation halted due to panic", "height", blockHeight) + logger.Error("simulation halted due to panic", "height", blockHeight, "error", r)
182-182
: Ensure detailed error handling during block finalization.Improve the error handling during block finalization to provide more detailed error messages and possible recovery options.
- return params, fmt.Errorf("block finalization failed at height %d: %w", blockHeight, err) + return params, fmt.Errorf("block finalization failed at height %d: %w", blockHeight, err)
230-230
: Ensure commit operations are error-checked.Add error handling for the
app.Commit()
operation to ensure that any issues during commit are properly logged and handled.- _, err := app.Commit() + if _, err := app.Commit(); err != nil { + logger.Error("commit failed", "error", err) + return params, fmt.Errorf("commit failed at height %d: %w", blockHeight, err) + }
235-235
: Clarify the early stop condition in the simulation.Enhance the log message to provide more context about why the simulation stops early when all validators are unbonded.
- logger.Info("Simulation stopped early as all validators have been unbonded; nobody left to propose a block", "height", blockHeight) + logger.Info("Simulation stopped early due to lack of validators: all have been unbonded, leaving no one to propose new blocks", "height", blockHeight)
254-255
: Improve the final log message for clarity and completeness.Refine the final log message to include more details about the simulation's outcome, which can be useful for debugging and analysis.
- logger.Info("Simulation complete", "height", blockHeight, "block-time", blockTime, "opsCount", opCount, "run-time", time.Since(startTime), "app-hash", hex.EncodeToString(app.LastCommitID().Hash)) + logger.Info("Simulation complete: Details", "Total Blocks Simulated", blockHeight, "Final Block Time", blockTime, "Total Operations", opCount, "Total Run Time", time.Since(startTime), "App Hash", hex.EncodeToString(app.LastCommitID().Hash))
test-sim-fuzz: | ||
@echo "Running application fuzz for numBlocks=2, blockSize=20. This may take awhile!" | ||
#ld flags are a quick fix to make it work on current osx | ||
@cd ${CURRENT_DIR}/simapp && go test -mod=readonly -json -tags='sims' -ldflags="-extldflags=-Wl,-ld_classic" -timeout=60m -fuzztime=60m -run=^$$ -fuzz=FuzzFullAppSimulation -GenesisTime=1714720615 -NumBlocks=2 -BlockSize=20 |
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.
@ggrieco-tob this target contains a 1h timeout. It is probably not related to the issues that you were facing but I want to highlight this setting, just in case.
I used 1h for fuzz tests on CI but this can be configured somewhere else, too. Please let me know if other default timeout values make sense.
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'm testing removing the 1 hour timeout parameters but still fails for longer campaign. Either the timeout is enforced anyway or there is another issue.
* main: refactor(x/auth): Fix system test (#20531) feat(crypto): add blst (#20296) docs: Update high level overview and introduction (#20535) refactor(x/core): remove test (#20624) feat(x/mint)!: Replace InflationCalculationFn with MintFn + simple epoch minting (#20363) docs: remove duplicate words (#20622) feat: prep for errors v2 (#20539) chore: reduce default inflation (#20606) refactor(store): add miss defer (#20602) chore: use comet api pkg instead of comet alias (#20614) chore: write gentx info to cmd.ErrOrStderr (#20616) docs: ADR 073: update to accepted and add to README.md (#20619) chore(proto): change future extracted modules version from v1.0.0 to v0.2.0 (#20600) fix: remove some duplicate words (#20605) feat(stf): port simappv2 changes (#20587) chore: bring patch changelogs to main (#20599)
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.
Actionable comments posted: 13
Outside diff range and nitpick comments (1)
x/simulation/log.go (1)
Line range hint
42-57
: The locking mechanism usingsync.Mutex
ensures that log writing is thread-safe, which is crucial in a concurrent environment. However, consider handling the error fromf.Close()
in a deferred function to ensure resources are properly released even if writing fails.defer func() { if err := f.Close(); err != nil { log.Println("Failed to close file:", err) } }()
Review details
Configuration used: .coderabbit.yml
Review profile: CHILL
Files selected for processing (12)
- CHANGELOG.md (1 hunks)
- Makefile (6 hunks)
- baseapp/baseapp.go (1 hunks)
- simapp/sim_bench_test.go (3 hunks)
- simapp/sim_test.go (4 hunks)
- tests/sims/gov/operations_test.go (3 hunks)
- testutils/sims/runner.go (1 hunks)
- x/gov/simulation/operations.go (14 hunks)
- x/group/simulation/operations.go (20 hunks)
- x/simulation/log.go (4 hunks)
- x/simulation/operation.go (2 hunks)
- x/simulation/simulate.go (20 hunks)
Files skipped from review as they are similar to previous changes (3)
- Makefile
- baseapp/baseapp.go
- simapp/sim_bench_test.go
Additional context used
Path-based instructions (9)
x/simulation/log.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.x/simulation/operation.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.testutils/sims/runner.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.simapp/sim_test.go (2)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Pattern
**/*_test.go
: "Assess the unit test code assessing sufficient code coverage for the changes associated in the pull request"x/simulation/simulate.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.tests/sims/gov/operations_test.go (3)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Pattern
tests/**/*
: "Assess the integration and e2e test code assessing sufficient code coverage for the changes associated in the pull request"
Pattern
**/*_test.go
: "Assess the unit test code assessing sufficient code coverage for the changes associated in the pull request"x/gov/simulation/operations.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.x/group/simulation/operations.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.CHANGELOG.md (1)
Pattern
**/*.md
: "Assess the documentation for misspellings, grammatical errors, missing documentation and correctness"
Learnings (1)
x/simulation/simulate.go (1)
User: alpe PR: cosmos/cosmos-sdk#20490 File: x/simulation/simulate.go:78-78 Timestamp: 2024-06-07T07:40:09.804Z Learning: The use of `math/rand` instead of `crypto/rand` in `x/simulation/simulate.go` is intentional as per user `alpe`.
Markdownlint
CHANGELOG.md
70-70: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
71-71: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
75-75: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
76-76: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
77-77: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
78-78: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
83-83: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
125-125: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
126-126: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
127-127: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
131-131: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
134-134: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
135-135: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
136-136: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
143-143: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
153-153: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
155-155: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
158-158: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
177-177: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
178-178: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
180-180: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
181-181: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
233-233: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
234-234: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
235-235: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
399-399: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
402-402: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
424-424: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
425-425: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
438-438: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
470-470: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
471-471: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
472-472: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
473-473: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
475-475: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
476-476: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
477-477: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
478-478: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
492-492: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
494-494: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
496-496: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
498-498: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
501-501: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
502-502: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
503-503: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
511-511: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
512-512: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
514-514: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
515-515: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
517-517: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
518-518: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
519-519: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
521-521: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
522-522: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
530-530: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
541-541: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
542-542: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
543-543: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
549-549: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
550-550: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
551-551: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
557-557: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
573-573: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
574-574: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
575-575: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
576-576: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
577-577: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
578-578: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
583-583: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
584-584: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
585-585: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
586-586: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
593-593: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
594-594: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
595-595: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
629-629: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
630-630: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
631-631: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
632-632: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
637-637: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
638-638: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
786-786: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
929-929: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
950-950: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
953-953: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1035-1035: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1036-1036: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1037-1037: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1038-1038: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1039-1039: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1040-1040: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1137-1137: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1223-1223: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1269-1269: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1275-1275: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1276-1276: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1277-1277: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1278-1278: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1279-1279: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1280-1280: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1380-1380: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1505-1505: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1506-1506: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1507-1507: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1508-1508: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1509-1509: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1510-1510: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1511-1511: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1512-1512: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1515-1515: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1516-1516: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1517-1517: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1518-1518: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1519-1519: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1520-1520: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1769-1769: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1770-1770: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1771-1771: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1772-1772: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1773-1773: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1774-1774: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1884-1884: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2221-2221: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2222-2222: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2223-2223: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2226-2226: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2227-2227: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2228-2228: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2250-2250: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2251-2251: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2252-2252: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2253-2253: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2254-2254: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2262-2262: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2263-2263: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2264-2264: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2265-2265: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2266-2266: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2268-2268: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2269-2269: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2270-2270: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2597-2597: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2598-2598: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2599-2599: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2600-2600: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2601-2601: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2603-2603: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2605-2605: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2606-2606: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2607-2607: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2608-2608: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2609-2609: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2610-2610: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2612-2612: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2613-2613: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2614-2614: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2617-2617: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2618-2618: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2619-2619: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2620-2620: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2621-2621: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2624-2624: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2627-2627: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2630-2630: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2631-2631: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2634-2634: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2641-2641: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2642-2642: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2643-2643: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2644-2644: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2645-2645: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2647-2647: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2648-2648: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2649-2649: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2650-2650: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2651-2651: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2652-2652: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2653-2653: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2654-2654: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2655-2655: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2658-2658: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2659-2659: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2660-2660: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2661-2661: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2662-2662: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2663-2663: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2670-2670: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2671-2671: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2672-2672: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2673-2673: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2680-2680: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2682-2682: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2684-2684: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2685-2685: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2686-2686: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2687-2687: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2688-2688: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2689-2689: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2690-2690: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2691-2691: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2692-2692: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2693-2693: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2694-2694: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2695-2695: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2696-2696: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2697-2697: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2698-2698: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2699-2699: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2700-2700: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2701-2701: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2702-2702: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2703-2703: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2704-2704: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2705-2705: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2706-2706: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2707-2707: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2708-2708: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2709-2709: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2710-2710: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2712-2712: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2713-2713: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2715-2715: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2716-2716: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2717-2717: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2718-2718: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2719-2719: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2720-2720: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2721-2721: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2724-2724: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2725-2725: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2727-2727: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2728-2728: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2731-2731: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2732-2732: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2733-2733: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2734-2734: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2735-2735: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2736-2736: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2737-2737: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2738-2738: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2740-2740: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2741-2741: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2742-2742: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2748-2748: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2751-2751: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2757-2757: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2765-2765: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2766-2766: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2767-2767: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2768-2768: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2776-2776: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2783-2783: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2784-2784: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2791-2791: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2793-2793: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2797-2797: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2798-2798: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2800-2800: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2808-2808: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2810-2810: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2811-2811: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2817-2817: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2825-2825: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2826-2826: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2827-2827: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2828-2828: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2829-2829: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2830-2830: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2831-2831: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2832-2832: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2833-2833: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2834-2834: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2835-2835: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2836-2836: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2837-2837: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2838-2838: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2840-2840: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2841-2841: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2843-2843: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2844-2844: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2845-2845: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2846-2846: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2847-2847: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2848-2848: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2849-2849: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2850-2850: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2851-2851: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2852-2852: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2854-2854: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2855-2855: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2858-2858: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2859-2859: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2860-2860: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2861-2861: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2862-2862: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2863-2863: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2864-2864: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2865-2865: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2866-2866: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2867-2867: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2868-2868: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2869-2869: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2870-2870: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2871-2871: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2872-2872: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2873-2873: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2878-2878: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2879-2879: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2880-2880: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2881-2881: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2882-2882: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2883-2883: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2885-2885: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2887-2887: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2901-2901: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2902-2902: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2903-2903: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2908-2908: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2909-2909: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2910-2910: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2914-2914: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2915-2915: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2916-2916: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2917-2917: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2918-2918: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2919-2919: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2922-2922: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2923-2923: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2924-2924: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2925-2925: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2926-2926: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2927-2927: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2928-2928: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2929-2929: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2930-2930: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2932-2932: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2934-2934: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2936-2936: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2941-2941: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2942-2942: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2943-2943: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2944-2944: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2945-2945: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2946-2946: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2947-2947: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2948-2948: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2949-2949: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2950-2950: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2951-2951: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2952-2952: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2953-2953: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2954-2954: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2955-2955: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2956-2956: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2957-2957: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2958-2958: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2959-2959: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2960-2960: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2961-2961: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
187-187: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces
230-230: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces
1139-1139: null (MD024, no-duplicate-heading)
Multiple headings with the same content
1929-1929: null (MD024, no-duplicate-heading)
Multiple headings with the same content
1687-1687: null (MD034, no-bare-urls)
Bare URL used
1717-1717: null (MD034, no-bare-urls)
Bare URL used
2664-2664: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2752-2752: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2754-2754: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2759-2759: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2761-2761: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2771-2771: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2773-2773: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2778-2778: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2786-2786: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2803-2803: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2805-2805: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2813-2813: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2819-2819: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2889-2889: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2892-2892: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2895-2895: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2897-2897: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2937-2937: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
1058-1058: null (MD038, no-space-in-code)
Spaces inside code span elements
2705-2705: null (MD038, no-space-in-code)
Spaces inside code span elements
2705-2705: null (MD038, no-space-in-code)
Spaces inside code span elements
Additional comments not posted (26)
x/simulation/log.go (2)
28-32
: The addition ofSeed
,wMtx
, andwritten
fields inStandardLogWriter
struct is a good practice for managing state and concurrency in logging.
60-66
: The methodcreateLogFile
uses a dynamic file naming scheme based on the seed and timestamp, which is useful for traceability in simulations. However, ensure that the environment variable$HOME
is always set as expected in your deployment environments.Verification successful
The $HOME environment variable is set as expected in the deployment environment.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Check if $HOME environment variable is set echo "HOME environment variable is set to: $HOME"Length of output: 112
x/simulation/operation.go (2)
26-35
: AddingBlockTime
toOperationEntry
enhances the logging detail by including temporal context, which is beneficial for debugging and auditing simulation runs.
41-57
: The methodsBeginBlockEntry
,EndBlockEntry
,MsgEntry
, andQueuedMsgEntry
now includeblockTime
, improving the granularity of operation logs. Ensure that all callers of these functions are updated to pass the correctblockTime
.Verification successful
The calls to
BeginBlockEntry
,EndBlockEntry
,MsgEntry
, andQueuedMsgEntry
inx/simulation/simulate.go
are correctly passing theblockTime
parameter. Here are the relevant lines:
logWriter.AddEntry(BeginBlockEntry(blockTime, blockHeight))
logWriter.AddEntry(EndBlockEntry(blockTime, blockHeight))
logWriter.AddEntry(MsgEntry(header.Time, header.Height, int64(i), opMsg))
logWriter.AddEntry(QueuedMsgEntry(blockTime, int64(height), opMsg))
logWriter.AddEntry(QueuedMsgEntry(currentTime, int64(height), opMsg))
These lines confirm that the
blockTime
parameter is being correctly passed to the modified functions.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for usages of the modified functions to ensure they are called with the correct parameters. ast-grep --lang go --pattern $'func $_($_, $_, $_, $_, $_) { $$$ }'Length of output: 12316
Script:
#!/bin/bash # Search for calls to the modified functions to ensure they are called with the correct parameters. rg 'BeginBlockEntry\(|EndBlockEntry\(|MsgEntry\(|QueuedMsgEntry\(' --glob '*.go'Length of output: 1008
Script:
#!/bin/bash # Display the relevant lines from x/simulation/simulate.go to verify the parameters passed to the modified functions. rg -A 3 -B 3 'BeginBlockEntry\(|EndBlockEntry\(|MsgEntry\(|QueuedMsgEntry\(' x/simulation/simulate.goLength of output: 1055
testutils/sims/runner.go (2)
59-74
: TheRun
function correctly delegates toRunWithSeeds
using default seeds. Addingt.Helper()
is a good practice for clearer test output. Ensure that theRunWithSeeds
function is robust and handles all edge cases as it's central to simulation testing.
167-209
: TheNewSimulationAppInstance
function sets up a new simulation app instance with detailed logging and database management. Ensure that the database cleanup int.Cleanup
is tested to handle potential errors during closure.simapp/sim_test.go (2)
54-55
: TheTestFullAppSimulation
function is a straightforward entry point for running full app simulations. Ensure that theNewSimApp
andsetupStateFactory
functions are correctly implemented as they are critical to the test's setup.Verification successful
The
setupStateFactory
function is implemented insimapp/sim_test.go
and appears to be correctly setting up the simulation state factory using the providedSimApp
instance.
NewSimApp
is implemented insimapp/app_di.go
andsimapp/app.go
, and it sets up various components and modules of the application.setupStateFactory
is implemented insimapp/sim_test.go
and sets up the simulation state factory using theSimApp
instance.Both functions are implemented correctly and are critical to the test's setup.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Verify the implementation of NewSimApp and setupStateFactory. ast-grep --lang go --pattern $'func NewSimApp($_, $_, $_, $_, $_, $_) $_ { $$$ }'Length of output: 38822
Script:
#!/bin/bash # Verify the implementation of setupStateFactory. ast-grep --lang go --pattern $'func setupStateFactory($_) $_ { $$$ }'Length of output: 576
66-101
: TheTestAppImportExport
function tests the import and export functionality of the app state. The detailed logging and error handling are commendable. However, ensure that theGenesisState
type is defined and correctly used in the unmarshalling process.Verification successful
The import statements in
simapp/sim_test.go
do not explicitly import aGenesisState
type. Given the context, it is likely that theGenesisState
type is being used from one of the imported modules, particularly those related to the Cosmos SDK.To ensure that the correct
GenesisState
type is being used in theTestAppImportExport
function, we should verify the usage ofGenesisState
within the file and trace its origin.
The
GenesisState
type is used insimapp/sim_test.go
, but its origin is not clear from the import statements or the direct usage. To trace its origin, we need to identify whereGenesisState
is defined or imported in the context of this file.Let's search for the definition or import of
GenesisState
within the file to ensure it is correctly used.
The search results show the usage of
GenesisState
but do not provide information about its definition or import. SinceGenesisState
is a common type name and is used across multiple modules, it is crucial to identify its exact origin to ensure it is correctly used in theTestAppImportExport
function.To achieve this, we should search for the
GenesisState
type definition across the entire codebase and correlate it with the context ofsimapp/sim_test.go
.
The
GenesisState
type is defined in multiple files across different modules. To pinpoint the exactGenesisState
type used insimapp/sim_test.go
, we need to correlate the imports insimapp/sim_test.go
with the modules whereGenesisState
is defined.Given the import statements and the common usage of
GenesisState
in Cosmos SDK modules, it is likely that theGenesisState
type is imported from one of the modules related to staking, slashing, or other core functionalities.To confirm this, let's search for the usage of
GenesisState
in the files where it is defined and see if any of these files are imported insimapp/sim_test.go
.
The
GenesisState
type is defined in multiple files across different modules, and it is crucial to identify the correct one used insimapp/sim_test.go
. Given the import statements and the context of the test function, it is likely that theGenesisState
type is related to one of the core modules such as staking, slashing, or another core functionality.To confirm this, we should search for the
GenesisState
type usage within thesimapp
directory to see if it provides any clues about its origin.
The search results indicate that
GenesisState
is defined within thesimapp
directory itself, specifically insimapp/genesis.go
as:// GenesisState of the blockchain is represented here as a map of raw json type GenesisState map[string]json.RawMessageThis confirms that the
GenesisState
used insimapp/sim_test.go
is a local definition within thesimapp
package and not imported from another module.Therefore, the review comment's concern about ensuring the
GenesisState
type is defined and correctly used in the unmarshalling process is addressed. TheGenesisState
type is indeed defined locally and used appropriately.
simapp/genesis.go
:type GenesisState map[string]json.RawMessage
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Check for the definition and usage of GenesisState. ast-grep --lang go --pattern $'type GenesisState struct { $$$ }'Length of output: 48440
Script:
#!/bin/bash # Check the import statements in simapp/sim_test.go to identify the source of GenesisState. rg 'import' simapp/sim_test.goLength of output: 107
Script:
#!/bin/bash # Correctly capture the import statements in simapp/sim_test.go to identify the source of GenesisState. sed -n '/import (/,/)/p' simapp/sim_test.goLength of output: 1036
Script:
#!/bin/bash # Search for the usage of GenesisState in simapp/sim_test.go to trace its origin. rg 'GenesisState' simapp/sim_test.goLength of output: 68
Script:
#!/bin/bash # Search for the definition or import of GenesisState within simapp/sim_test.go. rg 'GenesisState' -A 5 simapp/sim_test.goLength of output: 401
Script:
#!/bin/bash # Search for the definition of GenesisState across the entire codebase to identify its origin. rg 'type GenesisState struct' --files-with-matchesLength of output: 1551
Script:
#!/bin/bash # Search for the usage of GenesisState in the files where it is defined to correlate with simapp/sim_test.go. rg 'GenesisState' x/staking/types/genesis.pb.go x/slashing/types/genesis.pb.go x/protocolpool/types/genesis.pb.go x/mint/types/genesis.pb.go x/group/genesis.pb.go x/nft/genesis.pb.go x/gov/types/v1/genesis.pb.go x/gov/types/v1beta1/genesis.pb.go x/feegrant/genesis.pb.go x/evidence/types/genesis.pb.go x/genutil/types/genesis.pb.go x/distribution/types/genesis.pb.go x/crisis/types/genesis.pb.go x/bank/types/genesis.pb.go x/circuit/types/types.pb.go x/auth/types/genesis.pb.go x/authz/genesis.pb.goLength of output: 38995
Script:
#!/bin/bash # Search for the usage of GenesisState within the simapp directory to identify its origin. rg 'GenesisState' simapp/Length of output: 1536
x/simulation/simulate.go (3)
Line range hint
63-76
: Refactor to maintain backward compatibility while introducing enhanced logging and error handling.The refactoring of
SimulateFromSeed
to maintain backward compatibility while delegating to the newSimulateFromSeedX
function is well-handled. This approach ensures that existing codebases that depend on this function can continue to operate without modification.
78-93
: Introduced a more robust simulation testing function with enhanced parameters.The introduction of
SimulateFromSeedX
provides a more robust and flexible framework for simulation testing, accommodating a wider range of parameters and improving the overall structure and readability of the code.
180-180
: Enhance the panic recovery process by adding more detailed logging.- logger.Error("simulation halted due to panic", "height", blockHeight) + logger.Error("simulation halted due to panic", "height", blockHeight, "error", r)This enhancement in logging during panic recovery could help in diagnosing issues post-mortem by providing more detailed information about the context and nature of the error.
Likely invalid or redundant comment.
x/gov/simulation/operations.go (8)
47-57
: IntroducedsharedState
with atomic operations for thread-safe ID management. This is a good practice for concurrent simulations.
135-148
: Initialization and usage ofsharedState
in simulation operations are correctly implemented. This ensures that the proposal ID is managed consistently across different simulation operations.
343-350
: The integration ofsharedState
inSimulateMsgDeposit
for managing proposal IDs is correctly implemented. This helps in maintaining consistency in proposal ID usage across simulations.
Line range hint
410-422
: The integration ofsharedState
inSimulateMsgVote
is correctly implemented, ensuring consistent proposal ID management across voting simulations.
Line range hint
479-491
: The integration ofsharedState
inSimulateMsgVoteWeighted
is correctly implemented. This ensures consistent proposal ID management across weighted voting simulations.
680-684
: TherandomProposalID
function correctly usessharedState
to manage the range of proposal IDs, ensuring that simulations do not accidentally reuse or conflict with existing proposal IDs.
Line range hint
1-684
: Overall, the file is well-structured and follows the Uber Golang style guide. The use ofsharedState
enhances the modularity and safety of the simulation operations.
22-22
: Ensure that the value ofunsetProposalID
is appropriately large to avoid conflicts with actual proposal IDs.Verification successful
The search results indicate that proposal IDs are used in various parts of the codebase, but there is no evidence of actual proposal IDs reaching the magnitude of
100000000000000
. The highest range observed in the simulation code is within the hundreds.
x/gov/simulation/genesis.go: startingProposalID := uint64(simState.Rand.Intn(100))
Given this context, the value of
unsetProposalID
set to100000000000000
is appropriately large and should not conflict with any actual proposal IDs used in the system.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that `unsetProposalID` is not used as a real proposal ID in the database. # Test: Search for the `unsetProposalID` in the database. Expect: No occurrences. rg --type go $'100000000000000' --files-with-matches | xargs cat | grep 'ProposalID'Length of output: 1059
Script:
#!/bin/bash # Description: Verify the range of actual proposal IDs used in the system to ensure no conflict with `unsetProposalID`. # Test: Search for the usage of proposal IDs in the codebase to understand their range. rg --type go 'ProposalID' | grep -E '(\d+)' | sort -uLength of output: 4670
x/group/simulation/operations.go (6)
25-25
: The constantunsetGroupID
is defined correctly and follows Go naming conventions.
82-92
: Introduced asharedState
struct with atomic operations for thread-safe manipulation ofminGroupID
. This is a good use of atomic operations to ensure thread safety in a concurrent environment.
163-165
: Initialization ofsharedState
and settingminGroupID
tounsetGroupID
is correctly implemented. This ensures that the initial state is set up properly before any operations are performed.
171-171
: The simulation operations for various group-related messages are correctly set up with the newsharedState
parameter. This change is crucial for maintaining state consistency across different simulation runs.Also applies to: 182-182, 193-193, 197-197, 201-201, 205-205, 209-209, 213-213, 217-217, 221-221, 225-225, 229-229
366-366
: The addition ofsharedState
to the function parameters across various simulation operations is consistent and necessary for the new simulation architecture. This ensures that all operations can access and modify the shared state as needed.Also applies to: 438-438, 525-525, 599-599, 660-660, 751-751, 825-825, 899-899, 960-960, 1076-1076, 1189-1189, 1274-1274
1341-1343
: The logic to setminGroupID
if it is unset or to adjust it based on the current group sequence is correctly implemented using atomic operations. This is a critical part of ensuring that the simulation state remains consistent and accurate.CHANGELOG.md (1)
197-197
: Ensure proper markdown formatting by adding blank lines around headings and lists.+ * (perf)[#20490](https://github.com/cosmos/cosmos-sdk/pull/20490) Sims: Replace runsim command with Go stdlib testing. CLI: `Commit` default true, `Lean`, `SimulateEveryOperation`, `PrintAllInvariants`, `DBBackend` params removed + ### CLI Breaking Changes + * (server) [#18303](https://github.com/cosmos/cosmos-sdk/pull/18303) `appd export` has moved with other genesis commands, use `appd genesis export` instead. + ### Deprecated
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.
LGTM!
left a few minor comments
simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 | ||
simtestutil.SimulationOperations(app, app.AppCodec(), config), | ||
simtypes.RandomAccounts, | ||
simtestutil.SimulationOperations(app, app.AppCodec(), config, app.txConfig), |
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.
Maybe this can be simplified to just passing app
and config
?
There's a getter for txConfig
inside app
if I'm not mistaken
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.
Good 👁️
It could be simplified for simapp but creates new dependencies. This would also make it hard to re-use in other projects.
A common approach is to copy from the simapp folder and replace the simapp type with the custom app type. AuthKeeper
and StakingKeeper
don't have getters in app.
AppStateBytes: exported.AppState, | ||
ChainId: sims.SimAppChainID, | ||
}) | ||
if IsEmptyValidatorSetErr(err) { |
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.
Shouldn't this be a config value defined somewhere, so it can be known in advanced if the test is running without validators? should somehow retry this test?
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.
There are multiple seeds executed. Some may cause all the validators to undelegate/ jail. In fuzz tests, this is not necessarily a failure scenario. We accept that the test run is not realistic and can not be completed as defined. We just skip this seed and move on. It would only be a problem, when all seed get into this state.
if config.Commit { | ||
simtestutil.PrintStats(db) | ||
func TestAppStateDeterminism(t *testing.T) { | ||
const numTimesToRunPerSeed = 3 |
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.
Maybe this value can be externally set, for example CI for releases could use a higher value for a more "secure" coverage.
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.
The 3 was in the original code. Not sure if a higher value is the best way for a higher probability of collusions. You can also argue, adding more TX or blocks increases the probability.
I don't have a strong opinion but I want to avoid adding another CLI flag in this PR. Let's iterate on this.
appSimLogger := make(map[int64][]simulation.LogWriter) | ||
captureAndCheckHash := func(t *testing.T, ti sims.TestInstance[*SimApp]) { | ||
seed, appHash := ti.Cfg.Seed, ti.App.LastCommitID().Hash | ||
mx.Lock() |
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.
Should the lock be set before getting the seed and appHash since are shared resources among the test instances?
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.
The TestInstance object and their data is not shared between instances. It is created for each seed in the runner.
* main: fix(x/staking): stop validators from rotating to the same key on the same block (#20649) perf: add cache to address codec (#20122) build(deps): Bump google.golang.org/protobuf from 1.34.1 to 1.34.2 (#20632) fix: remove recipient amount from map (#20625) fix(proto): remove conditional preventing proper generated file placement (#20650) (serverv2/cometbft) Read config from commands & handle `FlagNode` (#20621) fix(x/consensus): fix .proto file placement (#20646) fix(store): avoid nil error on not exhausted payload stream (#20644) fix (x/accounts): Fix genesis condition check (#20645) feat(accounts): add genesis account initialization (#20642) fix(x/gov): limit execution in gov (#20348)
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.
Actionable comments posted: 13
Outside diff range and nitpick comments (5)
x/simulation/simulate.go (1)
Line range hint
78-283
: TheSimulateFromSeedX
function is comprehensive and handles various simulation scenarios. However, consider adding detailed documentation to explain its functionality and parameters for better maintainability and understanding.tests/sims/gov/operations_test.go (1)
Line range hint
36-36
: Addt.Helper()
at the beginning of thecreateTestSuite
function to improve test failure reporting.func createTestSuite(t *testing.T, isCheckTx bool) (suite, sdk.Context) { + t.Helper() res := suite{} ... }
x/group/simulation/operations_test.go (1)
Line range hint
36-36
: Please addt.Helper()
at the start of theSetupTest
method to mark it as a helper function. This improves error reporting in test cases by attributing errors to the calling function rather than inside the helper.func (suite *SimTestSuite) SetupTest() { + t.Helper() app, err := simtestutil.Setup( depinject.Configs( grouptestutil.AppConfig, depinject.Supply(log.NewNopLogger()), ), &suite.codec, &suite.interfaceRegistry, &suite.txConfig, &suite.accountKeeper, &suite.bankKeeper, &suite.groupKeeper, ) suite.Require().NoError(err)
x/group/simulation/operations.go (2)
25-25
: Define the purpose ofunsetGroupID
constant clearly in a comment.Adding a comment explaining the purpose and usage of
unsetGroupID
will improve code readability and maintainability.
Line range hint
36-36
: Addt.Helper()
at the beginning of the test helper function.+ t.Helper()
Per the golangci-lint hint, adding
t.Helper()
will make the output of failing tests more informative by marking the function as a helper, which improves debugging.
Review details
Configuration used: .coderabbit.yml
Review profile: CHILL
Files selected for processing (8)
- simapp/sim_test.go (4 hunks)
- tests/sims/gov/operations_test.go (3 hunks)
- testutils/sims/runner.go (1 hunks)
- types/simulation/config.go (2 hunks)
- x/gov/simulation/operations.go (14 hunks)
- x/group/simulation/operations.go (20 hunks)
- x/group/simulation/operations_test.go (12 hunks)
- x/simulation/simulate.go (20 hunks)
Files not summarized due to errors (2)
- types/simulation/config.go: Error: Server error. Please try again later.
- x/group/simulation/operations_test.go: Error: Server error. Please try again later.
Additional context used
Path-based instructions (8)
types/simulation/config.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.testutils/sims/runner.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.simapp/sim_test.go (2)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Pattern
**/*_test.go
: "Assess the unit test code assessing sufficient code coverage for the changes associated in the pull request"x/simulation/simulate.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.tests/sims/gov/operations_test.go (3)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Pattern
tests/**/*
: "Assess the integration and e2e test code assessing sufficient code coverage for the changes associated in the pull request"
Pattern
**/*_test.go
: "Assess the unit test code assessing sufficient code coverage for the changes associated in the pull request"x/gov/simulation/operations.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.x/group/simulation/operations_test.go (2)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Pattern
**/*_test.go
: "Assess the unit test code assessing sufficient code coverage for the changes associated in the pull request"x/group/simulation/operations.go (1)
Pattern
**/*.go
: Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations.
Learnings (1)
x/simulation/simulate.go (2)
User: alpe PR: cosmos/cosmos-sdk#20490 File: x/simulation/simulate.go:78-78 Timestamp: 2024-06-07T07:40:09.804Z Learning: The use of `math/rand` instead of `crypto/rand` in `x/simulation/simulate.go` is intentional as per user `alpe`.
User: alpe PR: cosmos/cosmos-sdk#20490 File: x/simulation/simulate.go:248-249 Timestamp: 2024-06-13T13:11:15.318Z Learning: Error handling for `app.Commit()` in `x/simulation/simulate.go` is implemented correctly and should not be flagged as an issue in future reviews.
golangci-lint
types/simulation/config.go
36-36: test helper function should start from t.Helper() (thelper)
testutils/sims/runner.go
36-36: test helper function should start from t.Helper() (thelper)
simapp/sim_test.go
36-36: test helper function should start from t.Helper() (thelper)
x/simulation/simulate.go
36-36: test helper function should start from t.Helper() (thelper)
tests/sims/gov/operations_test.go
36-36: test helper function should start from t.Helper() (thelper)
x/gov/simulation/operations.go
36-36: test helper function should start from t.Helper() (thelper)
x/group/simulation/operations_test.go
36-36: test helper function should start from t.Helper() (thelper)
x/group/simulation/operations.go
36-36: test helper function should start from t.Helper() (thelper)
Additional comments not posted (36)
testutils/sims/runner.go (1)
59-59
: Good use of generics to abstract the simulation app type, enhancing code reusability across different simulation scenarios.simapp/sim_test.go (1)
54-54
: Ensure that theNewSimApp
function is defined and correctly handles the simulation app's instantiation.Verification successful
The
NewSimApp
function is defined in bothsimapp/app_di.go
andsimapp/app.go
. Both implementations appear to correctly handle the instantiation and setup of the simulation app, including initializing necessary components and modules.
simapp/app_di.go:120-307
simapp/app.go:195-607
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Search for the definition of `NewSimApp` to ensure it's correctly implemented. ast-grep --lang go --pattern $'func NewSimApp($_, $_, $_, $_, $_, $_) $_ { $$$ }' ./simapp/*Length of output: 39355
x/simulation/simulate.go (7)
99-99
: The use ofmath/rand
is intentional here for non-cryptographic purposes, as previously discussed withalpe
. This is suitable for the simulation's context.
127-127
: Proper error handling is implemented here. The function returns an error if the address conversion fails, which is a good practice.
181-181
: The error handling for panic recovery here is adequate, ensuring that the simulation halts and logs are printed. This aids in diagnosing issues effectively.
202-202
: The error message here is clear and follows best practices by wrapping the underlying error, which aids in debugging.
249-250
: The error handling for theapp.Commit()
operation is implemented correctly as previously discussed withalpe
. This ensures that any issues during commit are properly logged and handled.
Line range hint
61-77
: TheSimulateFromSeed
function is marked for backward compatibility only. Ensure that all references in the codebase are updated to useSimulateFromSeedX
to leverage the enhanced functionality.Verification successful
All references to
SimulateFromSeed
have been updated toSimulateFromSeedX
, except for the function definition itself inx/simulation/simulate.go
, which is expected.
x/simulation/simulate.go
: Function definition ofSimulateFromSeed
.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that all references to `SimulateFromSeed` are updated to `SimulateFromSeedX`. # Test: Search for references to `SimulateFromSeed`. Expect: No occurrences except in the declaration. rg --type go $'SimulateFromSeed'Length of output: 970
18-18
: Please update the logger import path to match the suggested import bytac0turtle
for consistency and to leverage the correct logger functionalities.- "cosmossdk.io/core/log" + "cosmossdk.io/core/log"Likely invalid or redundant comment.
tests/sims/gov/operations_test.go (3)
271-271
: Correctly passedsimulation.NewSharedState()
inSimulateMsgDeposit
function.
315-315
: Correctly passedsimulation.NewSharedState()
inSimulateMsgVote
function.
357-357
: Correctly passedsimulation.NewSharedState()
inSimulateMsgVoteWeighted
function.x/gov/simulation/operations.go (9)
22-22
: IntroducingunsetProposalID
as a constant is a good practice for code clarity and maintainability.
47-65
: Introduced aSharedState
struct to manage the minimum proposal ID across simulations. This encapsulation enhances modularity and thread safety with atomic operations.
143-155
: Refactored simulation operations to use the newSharedState
. This change improves the consistency of proposal ID handling across different simulation functions.
350-357
: TheSimulateMsgDeposit
function now correctly uses the shared state for proposal ID management. This change is crucial for maintaining state consistency across simulation runs.
Line range hint
417-429
: TheSimulateMsgVote
function's refactoring to useSharedState
is a positive change, ensuring that the proposal ID is managed consistently.
Line range hint
486-498
: Similar to theSimulateMsgVote
, theSimulateMsgVoteWeighted
function's use ofSharedState
for managing proposal IDs improves the reliability and maintainability of the simulation tests.
550-550
: TheSimulateMsgCancelProposal
function appears to be well-implemented with checks for proposal existence and status. This careful handling ensures that the function behaves as expected under various conditions.
687-691
: TherandomProposalID
function's integration withSharedState
for managing the proposal ID range is a smart design choice, providing a more robust mechanism for ID generation.
336-336
: The operationoperationSimulateMsgVote
should uset.Helper()
at the start of the function to mark it as a test helper. This is a best practice for clearer test failure messages.336a337,338 > t.Helper() >Likely invalid or redundant comment.
x/group/simulation/operations_test.go (12)
196-196
: The introduction ofsimulation.NewSharedState()
improves modularity by managing shared state across simulations. This is a good practice as it helps maintain the state consistency and isolates the state management.
243-243
: The addition ofsimulation.NewSharedState()
inSimulateMsgSubmitProposal
is consistent with other operations, ensuring that all simulation functions use a shared state appropriately.
303-303
: Usingsimulation.NewSharedState()
inSimulateMsgWithdrawProposal
enhances the function's ability to handle shared state effectively, which is crucial for maintaining consistency in simulation outcomes.
364-364
: InSimulateMsgVote
, the use ofsimulation.NewSharedState()
aligns with the pattern used in other simulation operations, promoting consistency and better state management.
433-433
: The consistent use ofsimulation.NewSharedState()
inSimulateMsgExec
aligns with the improvements made across other simulation operations, ensuring that state management is handled uniformly.
469-469
: The addition ofsimulation.NewSharedState()
inSimulateMsgUpdateGroupAdmin
is a positive change, ensuring that state is managed effectively across different simulation operations.
505-505
: InSimulateMsgUpdateGroupMetadata
, the introduction ofsimulation.NewSharedState()
helps in managing the simulation state more effectively, which is critical for achieving consistent simulation results.
541-541
: The use ofsimulation.NewSharedState()
inSimulateMsgUpdateGroupMembers
is a good practice, ensuring that the simulation state is managed consistently across operations.
588-588
:SimulateMsgUpdateGroupPolicyAdmin
usingsimulation.NewSharedState()
demonstrates a consistent approach to state management across simulation operations, which is crucial for maintaining the integrity of simulation results.
635-635
: The introduction ofsimulation.NewSharedState()
inSimulateMsgUpdateGroupPolicyDecisionPolicy
aligns with the improvements in state management seen in other parts of the simulation operations.
682-682
: Usingsimulation.NewSharedState()
inSimulateMsgUpdateGroupPolicyMetadata
ensures consistent state management across simulations, which is crucial for maintaining the accuracy and reliability of the simulations.
745-745
: The consistent application ofsimulation.NewSharedState()
inSimulateMsgLeaveGroup
aligns with the pattern used in other simulation operations, promoting effective and uniform state management.x/group/simulation/operations.go (3)
82-92
: IntroducedSharedState
struct for managing group IDs across simulations.This change aligns with the PR's objective to enhance the simulation framework by using shared state management.
Line range hint
1344-1386
: RefactoredrandomGroup
andrandomGroupPolicy
to utilizeSharedState
.These refactoring changes enhance the modularity and reusability of the simulation functions by integrating shared state management, which is crucial for maintaining consistent state across simulations.
Line range hint
171-236
: Ensure thatSharedState
is properly utilized in all operations that require group ID management.Verification successful
The search results show that
SharedState
is indeed referenced multiple times within thex/group/simulation/operations.go
file. This suggests thatSharedState
is actively used in the relevant operations.
SharedState
is defined and instantiated.- It is passed to multiple functions, indicating its usage.
Given these findings, it appears that
SharedState
is properly utilized in the operations that require group ID management within thex/group/simulation/operations.go
file.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that `SharedState` is used consistently across all relevant operations. # Test: Search for operations that should use `SharedState` but don't. rg --type go $'func SimulateMsg.*\(.*\) \{.*SharedState.*\}'Length of output: 61
Script:
#!/bin/bash # Step 1: List all SimulateMsg functions in the codebase. rg --type go --no-heading -o -N 'func SimulateMsg\w+\(' # Step 2: Check for SharedState usage in these functions. rg --type go --no-heading 'SharedState' | grep -E 'func SimulateMsg\w+\('Length of output: 3356
Script:
#!/bin/bash # Step 1: Check for SharedState usage in the x/group/simulation/operations.go file. rg --no-heading 'SharedState' x/group/simulation/operations.goLength of output: 685
@@ -1,5 +1,7 @@ | |||
package simulation | |||
|
|||
import "testing" |
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.
Consider grouping imports for better readability and maintenance.
import (
+ "testing"
)
Committable suggestion was skipped due to low confidence.
FuzzSeed []byte | ||
T testing.TB | ||
} |
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.
Adding the FuzzSeed
and T
directly to the Config
struct might expose testing structures in production configurations. Consider encapsulating these within a struct that is only built with testing tags.
type Config struct {
...
+ // FuzzSeed used for testing purposes
+ FuzzSeed []byte `json:"-"` // Exclude from JSON operations
+ // T is the testing object
+ T testing.TB `json:"-"` // Exclude from JSON operations
}
Committable suggestion was skipped due to low confidence.
params := RandomParams(r) | ||
|
||
fmt.Fprintf(w, "Starting SimulateFromSeed with randomness created with seed %d\n", int(config.Seed)) | ||
fmt.Fprintf(w, "Randomized simulation params: \n%s\n", mustMarshalJSONIndent(params)) | ||
startTime := time.Now() |
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.
The use of time.Now()
here introduces non-determinism which is critical in blockchain simulations. Consider replacing it with a deterministic time source or making it configurable.
- startTime := time.Now()
+ startTime := // Add deterministic or configurable time source
Committable suggestion was skipped due to low confidence.
} | ||
|
||
if proposerAddress == nil { | ||
fmt.Fprintf(w, "\nSimulation stopped early as all validators have been unbonded; nobody left to propose a block!\n") | ||
stopEarly = true | ||
logger.Info("Simulation stopped early as all validators have been unbonded; nobody left to propose a block", "height", blockHeight) |
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.
Consider refining this log message to be more concise while still conveying the essential information. This can improve the readability and effectiveness of the logs.
- logger.Info("Simulation stopped early as all validators have been unbonded; nobody left to propose a block", "height", blockHeight)
+ logger.Info("Simulation halted: no validators left to propose blocks", "height", blockHeight)
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
logger.Info("Simulation stopped early as all validators have been unbonded; nobody left to propose a block", "height", blockHeight) | |
logger.Info("Simulation halted: no validators left to propose blocks", "height", blockHeight) |
32, 123, 124, 582, 1893, 2989, | ||
3012, 4728, 37827, 981928, 87821, 891823782, | ||
989182, 89182391, 11, 22, 44, 77, 99, 2020, | ||
3232, 123123, 124124, 582582, 18931893, |
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.
Ensure t.Helper()
is called at the start of helper functions to improve error reporting in tests.
func RunWithSeeds[T SimulationApp](
t *testing.T,
...
) {
+ t.Helper()
...
}
Committable suggestion was skipped due to low confidence.
Tools
golangci-lint
36-36: test helper function should start from t.Helper() (thelper)
for i := range seeds { | ||
seed := seeds[i] | ||
t.Run(fmt.Sprintf("seed: %d", seed), func(t *testing.T) { | ||
t.Parallel() |
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.
Tip
Codebase Verification
The code around t.Parallel()
indicates that there are instances of shared resources being used, such as the runLogger
. The use of t.Parallel()
in this context could potentially introduce race conditions, especially if these shared resources are accessed or modified concurrently.
- Line 106:
t.Parallel()
- Shared resource:
runLogger
This confirms the potential issue raised in the review comment.
- : The use of
t.Parallel()
intestutils/sims/runner.go
at line 106 can introduce race conditions due to shared resources likerunLogger
.
Analysis chain
Consider the implications of using t.Parallel()
in fuzzing scenarios as discussed in previous comments. It may not be effective and could potentially introduce race conditions.
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for potential race conditions when using t.Parallel() in fuzzing scenarios.
grep -rn "t.Parallel()" ./testutils/sims/runner.go
Length of output: 72
Script:
#!/bin/bash
# Search for variable declarations in testutils/sims/runner.go to identify potential shared state or resources.
grep -rnE 'var |const |type ' ./testutils/sims/runner.go
# Search for function calls and method invocations in testutils/sims/runner.go to identify potential concurrent access points.
grep -rnE '\w+\(' ./testutils/sims/runner.go
Length of output: 3322
Script:
#!/bin/bash
# Extract lines 100-120 of testutils/sims/runner.go to analyze the context around t.Parallel().
sed -n '100,120p' ./testutils/sims/runner.go
Length of output: 689
t.Log("importing genesis...\n") | ||
newTestInstance := sims.NewSimulationAppInstance(t, ti.Cfg, NewSimApp) | ||
newApp := newTestInstance.App | ||
var genesisState GenesisState |
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.
Correctly define or import the GenesisState
type used in JSON unmarshalling to avoid runtime errors.
- var genesisState GenesisState
+ var genesisState <correct_type>
Committable suggestion was skipped due to low confidence.
|
||
if config.Commit { | ||
simtestutil.PrintStats(db) | ||
func setupStateFactory(app *SimApp) sims.SimStateFactory { |
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.
Define or correct the SimApp
type used in the setupStateFactory
function signature.
- func setupStateFactory(app *SimApp) sims.SimStateFactory {
+ func setupStateFactory(app <correct_type>) sims.SimStateFactory {
Committable suggestion was skipped due to low confidence.
"non-determinism in seed %d: %d/%d, attempt: %d/%d\n", config.Seed, i+1, numSeeds, j+1, numTimesToRunPerSeed, | ||
) | ||
} | ||
func FuzzFullAppSimulation(f *testing.F) { |
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.
Consider adding a minimum length check for rawSeed
in FuzzFullAppSimulation
to ensure sufficient entropy for the tests.
f.Fuzz(func(t *testing.T, rawSeed []byte) {
+ if len(rawSeed) < 8 {
+ t.Skip("Insufficient seed length")
+ return
+ }
...
})
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
func FuzzFullAppSimulation(f *testing.F) { | |
func FuzzFullAppSimulation(f *testing.F) { | |
f.Fuzz(func(t *testing.T, rawSeed []byte) { | |
if len(rawSeed) < 8 { | |
t.Skip("Insufficient seed length") | |
return | |
} | |
... | |
}) | |
} |
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.
Actionable comments posted: 1
Review details
Configuration used: .coderabbit.yml
Review profile: CHILL
Files selected for processing (1)
- CHANGELOG.md (1 hunks)
Additional context used
Path-based instructions (1)
CHANGELOG.md (1)
Pattern
**/*.md
: "Assess the documentation for misspellings, grammatical errors, missing documentation and correctness"
@@ -195,6 +195,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i | |||
|
|||
### CLI Breaking Changes | |||
|
|||
* (perf)[#20490](https://github.com/cosmos/cosmos-sdk/pull/20490) Sims: Replace runsim command with Go stdlib testing. CLI: `Commit` default true, `Lean`, `SimulateEveryOperation`, `PrintAllInvariants`, `DBBackend` params removed |
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.
Ensure proper markdown formatting by adding blank lines around headings and lists.
+ * (perf)[#20490](https://github.com/cosmos/cosmos-sdk/pull/20490) Sims: Replace runsim command with Go stdlib testing. CLI: `Commit` default true, `Lean`, `SimulateEveryOperation`, `PrintAllInvariants`, `DBBackend` params removed
+ * (server) [#18303](https://github.com/cosmos/cosmos-sdk/pull/18303) `appd export` has moved with other genesis commands, use `appd genesis export` instead.
+
### Deprecated
Committable suggestion was skipped due to low confidence.
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.
Great work, just a comment, I'll leave it up to you
* main: feat(tx): port simappv2 changes (#20648) build(deps): Bump github.com/spf13/cobra from 1.8.0 to 1.8.1 (#20682) chore(proto): fix comments (#20679) (serverv2/cometbft) Commands support both json and yaml output (#20670) fix(x/staking,x/auth): regenerate mock to fix test (#20684) docs: ADR 074: Msg v2 (#20618) fix: nested multisig signatures using CLI (#20438) chore: fix spelling errors (#20674) fix: align Dockerfile for build-push-action (#20672) fix: avoid build fail when make localnet-build-env (#20671) build(deps): Bump bufbuild/buf-setup-action from 1.32.2 to 1.33.0 (#20669) chore: make function comment match function names (#20666) chore(consensus): add cometInfo to consensus (#20615) chore: fix typos (#20662) fix: Properly parse json in the wait-tx command. (#20631) fix(sims): check before sending RotateConsPubKey (#20659) test(types/address): add unit tests for the file types/address.go (#20237)
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.
Actionable comments posted: 0
Review details
Configuration used: .coderabbit.yml
Review profile: CHILL
Files selected for processing (1)
- CHANGELOG.md (1 hunks)
Additional context used
Path-based instructions (1)
CHANGELOG.md (1)
Pattern
**/*.md
: "Assess the documentation for misspellings, grammatical errors, missing documentation and correctness"
Markdownlint
CHANGELOG.md
71-71: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
72-72: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
76-76: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
77-77: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
78-78: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
79-79: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
84-84: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
127-127: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
128-128: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
129-129: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
133-133: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
136-136: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
137-137: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
138-138: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
145-145: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
155-155: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
157-157: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
160-160: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
179-179: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
180-180: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
182-182: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
183-183: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
235-235: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
236-236: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
237-237: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
401-401: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
404-404: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
426-426: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
427-427: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
440-440: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
472-472: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
473-473: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
474-474: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
475-475: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
477-477: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
478-478: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
479-479: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
480-480: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
494-494: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
496-496: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
498-498: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
500-500: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
503-503: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
504-504: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
505-505: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
513-513: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
514-514: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
516-516: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
517-517: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
519-519: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
520-520: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
521-521: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
523-523: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
524-524: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
532-532: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
543-543: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
544-544: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
545-545: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
551-551: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
552-552: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
553-553: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
559-559: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
575-575: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
576-576: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
577-577: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
578-578: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
579-579: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
580-580: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
585-585: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
586-586: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
587-587: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
588-588: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
595-595: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
596-596: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
597-597: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
631-631: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
632-632: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
633-633: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
634-634: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
639-639: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
640-640: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
788-788: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
931-931: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
952-952: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
955-955: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1037-1037: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1038-1038: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1039-1039: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1040-1040: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1041-1041: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1042-1042: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1139-1139: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1225-1225: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1271-1271: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1277-1277: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1278-1278: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1279-1279: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1280-1280: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1281-1281: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1282-1282: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1382-1382: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1507-1507: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1508-1508: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1509-1509: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1510-1510: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1511-1511: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1512-1512: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1513-1513: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1514-1514: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1517-1517: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1518-1518: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1519-1519: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1520-1520: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1521-1521: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1522-1522: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
1771-1771: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1772-1772: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1773-1773: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1774-1774: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1775-1775: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1776-1776: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
1886-1886: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2223-2223: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2224-2224: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2225-2225: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2228-2228: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2229-2229: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2230-2230: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2252-2252: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2253-2253: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2254-2254: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2255-2255: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2256-2256: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2264-2264: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2265-2265: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2266-2266: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2267-2267: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2268-2268: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2270-2270: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2271-2271: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2272-2272: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2599-2599: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2600-2600: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2601-2601: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2602-2602: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2603-2603: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2605-2605: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2607-2607: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2608-2608: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2609-2609: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2610-2610: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2611-2611: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2612-2612: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2614-2614: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2615-2615: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2616-2616: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2619-2619: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2620-2620: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2621-2621: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2622-2622: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2623-2623: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2626-2626: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2629-2629: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2632-2632: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2633-2633: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2636-2636: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2643-2643: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2644-2644: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2645-2645: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2646-2646: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2647-2647: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2649-2649: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2650-2650: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2651-2651: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2652-2652: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2653-2653: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2654-2654: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2655-2655: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2656-2656: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2657-2657: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2660-2660: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2661-2661: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2662-2662: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2663-2663: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2664-2664: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2665-2665: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2672-2672: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2673-2673: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2674-2674: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2675-2675: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2682-2682: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2684-2684: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2686-2686: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2687-2687: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2688-2688: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2689-2689: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2690-2690: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2691-2691: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2692-2692: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2693-2693: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2694-2694: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2695-2695: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2696-2696: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2697-2697: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2698-2698: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2699-2699: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2700-2700: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2701-2701: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2702-2702: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2703-2703: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2704-2704: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2705-2705: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2706-2706: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2707-2707: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2708-2708: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2709-2709: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2710-2710: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2711-2711: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2712-2712: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2714-2714: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2715-2715: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2717-2717: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2718-2718: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2719-2719: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2720-2720: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2721-2721: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2722-2722: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2723-2723: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2726-2726: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2727-2727: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2729-2729: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2730-2730: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2733-2733: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2734-2734: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2735-2735: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2736-2736: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2737-2737: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2738-2738: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2739-2739: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2740-2740: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2742-2742: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2743-2743: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2744-2744: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2750-2750: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2753-2753: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2759-2759: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2767-2767: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2768-2768: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2769-2769: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2770-2770: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2778-2778: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2785-2785: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2786-2786: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2793-2793: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2795-2795: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2799-2799: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2800-2800: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2802-2802: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2810-2810: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2812-2812: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2813-2813: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2819-2819: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2827-2827: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2828-2828: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2829-2829: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2830-2830: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2831-2831: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2832-2832: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2833-2833: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2834-2834: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2835-2835: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2836-2836: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2837-2837: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2838-2838: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2839-2839: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2840-2840: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2842-2842: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2843-2843: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2845-2845: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2846-2846: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2847-2847: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2848-2848: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2849-2849: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2850-2850: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2851-2851: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2852-2852: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2853-2853: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2854-2854: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2856-2856: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2857-2857: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2860-2860: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2861-2861: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2862-2862: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2863-2863: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2864-2864: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2865-2865: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2866-2866: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2867-2867: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2868-2868: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2869-2869: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2870-2870: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2871-2871: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2872-2872: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2873-2873: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2874-2874: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2875-2875: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2880-2880: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2881-2881: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2882-2882: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2883-2883: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2884-2884: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2885-2885: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2887-2887: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2889-2889: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2903-2903: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2904-2904: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2905-2905: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2910-2910: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2911-2911: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2912-2912: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2916-2916: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2917-2917: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2918-2918: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2919-2919: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2920-2920: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2921-2921: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2924-2924: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2925-2925: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2926-2926: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2927-2927: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2928-2928: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2929-2929: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2930-2930: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2931-2931: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2932-2932: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2934-2934: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2936-2936: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2938-2938: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2943-2943: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2944-2944: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2945-2945: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2946-2946: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2947-2947: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2948-2948: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2949-2949: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2950-2950: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2951-2951: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2952-2952: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2953-2953: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2954-2954: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2955-2955: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2956-2956: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2957-2957: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2958-2958: Expected: 4; Actual: 8 (MD007, ul-indent)
Unordered list indentation
2959-2959: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2960-2960: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2961-2961: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2962-2962: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
2963-2963: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation
189-189: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces
232-232: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces
1141-1141: null (MD024, no-duplicate-heading)
Multiple headings with the same content
1931-1931: null (MD024, no-duplicate-heading)
Multiple headings with the same content
1689-1689: null (MD034, no-bare-urls)
Bare URL used
1719-1719: null (MD034, no-bare-urls)
Bare URL used
2666-2666: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2754-2754: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2756-2756: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2761-2761: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2763-2763: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2773-2773: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2775-2775: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2780-2780: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2788-2788: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2805-2805: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2807-2807: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2815-2815: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2821-2821: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2891-2891: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2894-2894: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2897-2897: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2899-2899: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
2939-2939: null (MD037, no-space-in-emphasis)
Spaces inside emphasis markers
1060-1060: null (MD038, no-space-in-code)
Spaces inside code span elements
2707-2707: null (MD038, no-space-in-code)
Spaces inside code span elements
2707-2707: null (MD038, no-space-in-code)
Spaces inside code span elements
Additional comments not posted (1)
CHANGELOG.md (1)
199-199
: Ensure proper markdown formatting by adding blank lines around headings and lists.+ * (perf)[#20490](https://github.com/cosmos/cosmos-sdk/pull/20490) Sims: Replace runsim command with Go stdlib testing. CLI: `Commit` default true, `Lean`, `SimulateEveryOperation`, `PrintAllInvariants`, `DBBackend` params removed + * (server) [#18303](https://github.com/cosmos/cosmos-sdk/pull/18303) `appd export` has moved with other genesis commands, use `appd genesis export` instead. + ### Deprecated
Description
Part of #14753
Refactor simulations towards Go standard tests. With this change, we give up strong process isolation as runsim was doing in favour of much better execution speed, toolchain integration and IDE support.
make test-sim-fuzz
Big thanks to @ggrieco-tob who provided an early spike with a fuzzer integration example. 💪
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...
!
in the type prefix if API or client breaking changeCHANGELOG.md
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
New Features
Refactor
Chores
runsim
with Go stdlib testing.Breaking Changes
runsim
command replaced with Go stdlib testing; removed parameters:Commit
,Lean
,SimulateEveryOperation
,PrintAllInvariants
, andDBBackend
.