Add EVM stress workload tooling#3404
Conversation
|
The latest Buf updates on your PR. Results from workflow Buf / buf (pull_request).
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #3404 +/- ##
==========================================
- Coverage 59.25% 59.22% -0.03%
==========================================
Files 2110 2111 +1
Lines 174181 174254 +73
==========================================
Hits 103210 103210
- Misses 62044 62117 +73
Partials 8927 8927
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
825b721 to
66f51e7
Compare
| } | ||
| time.Sleep(300 * time.Millisecond) | ||
| } | ||
| } |
There was a problem hiding this comment.
Infinite loop in waitForBalance lacks timeout
Low Severity
waitForBalance spins in an infinite for loop polling for a positive balance, with no timeout or context cancellation check. If the genesis patching fails or the node doesn't produce a block, this hangs forever with no diagnostic output. Since ctx is context.Background(), there's no external cancellation path either.
Reviewed by Cursor Bugbot for commit 66f51e7. Configure here.
66f51e7 to
93fda38
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 93fda38. Configure here.
| echo "==> shutting down..." | ||
| [ -n "${SEID_PID:-}" ] && kill "$SEID_PID" 2>/dev/null || true | ||
| # Kill the entire process group so tail and grep children are also terminated. | ||
| [ -n "${LOG_PID:-}" ] && kill -- -"$LOG_PID" 2>/dev/null || true |
There was a problem hiding this comment.
Cleanup fails to kill log-tailing child processes
Medium Severity
kill -- -"$LOG_PID" attempts to send a signal to the process group identified by $LOG_PID, but in a non-interactive shell script (no set -m), background subshells do not become process group leaders — they inherit the parent's PGID. So there is no process group with PGID equal to $LOG_PID, the kill silently fails (masked by 2>/dev/null || true), and the tail/grep children are left orphaned. The comment explicitly states the intent to "kill the entire process group so tail and grep children are also terminated," but this doesn't happen.
Reviewed by Cursor Bugbot for commit 93fda38. Configure here.


Summary
./scripts/evm_stress.sh, which initializes a localseidnode, patches genesis with deterministic sender accounts, starts the node, and runs the transfer workload.scripts/evm_stress/main.go, which generates deterministic sender keys, optionally dumps their derived Sei addresses for genesis funding, and sends nonce-0 EVM transfers from unique senders to a shared recipient at the target rate.evm_stressbuild artifact.This is split out from #3376 so the investigation tooling can be reviewed independently from logging and execution optimizations.
Test Plan
go test ./scripts/evm_stressgo run github.com/securego/gosec/v2/cmd/gosec@v2.22.11 ./scripts/evm_stress/...Note
Low Risk
Adds developer-only stress-testing scripts and a Go load generator without modifying production chain logic; risk is limited to local environment usage and potential resource-intensive runs.
Overview
Adds an
evm_stressworkload toolchain for local performance investigations: a newscripts/evm_stress.shscript initializes a localseid, bulk-patchesgenesis.jsonwith many deterministic sender accounts, starts the node while filtering key log lines, waits for the EVM JSON-RPC to come up, and then launches a transfer flood.Introduces
scripts/evm_stress/main.go, a deterministic key/address generator that can either dump Sei bech32 addresses for genesis funding or run a rate-limited EVM transfer sender (unique senders, nonce 0) to a single recipient at a target TPS. Updates.gitignoreto ignore the local./evm_stressartifact.Reviewed by Cursor Bugbot for commit 93fda38. Bugbot is set up for automated code reviews on this repo. Configure here.