feat(test): TestBenchmark drives seiload (WS-I load suite)#430
Conversation
Completes the load suite: after provisioning the chain + RPC fleet, render the platform seiload profile (from the seiload-profiles ConfigMap) with the fleet's EVM endpoints, apply seiload's own Job manifest as a decoupled unit, wait for it to run the full load, and assert the chain stayed live under it. - seiload runs from its own manifest (embedded template, parameterized) — its Job spec is not constructed in Go. Profile is read from the platform CM, not vendored. - Pass/fail = Job completion + post-load chain liveness. A throughput/regression gate belongs in telemetry (a PromQL query over the run's metrics); the Job carries the metrics scrape label so that gate can be added later. - Per-run profile CM + seiload Job carry sei.io/harness-run for the GC sweep; t.Cleanup deletes them on normal exit. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
PR SummaryMedium Risk Overview The harness renders a platform-owned profile from the cluster
Reviewed by Cursor Bugbot for commit 557897e. Bugbot is set up for automated code reviews on this repo. Configure here. |
- systems: capture the failed seiload pod log into the fatal (the failure-time signal a Job condition message can't give); add a self-terminating Job activeDeadlineSeconds independent of the harness ctx. - sei-network: widen the post-load liveness check to every follower, not just node-0 (a half-dead fleet would otherwise ship green). - k8s/dissenter + comment-register: soften the runLabelKey comment to stop claiming a label-GC sweep that isn't shipped yet (pending platform deliverable; DeletionPolicy cascade + t.Cleanup cover normal exit); use the chain's resolved namespace directly for the seiload Job (no env re-resolve); fix the stale namespace field comment. - idiom: trim the runSeiload doc to present-state. chainId 713714 confirmed correct (seid GetEVMChainID falls through to DefaultChainID for bench-* chains). RBAC Role + podMonitor selector flip + gc label sweep are platform prereqs, tracked separately. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
/xreview — 4 lenses (idiom · systems · k8s-dissenter · sei-network), RESOLVEDComprehensive blinded review; spine ratified, fixes applied in the latest commit.
Platform prereqs (tracked separately, NOT this PR): a harness-SA Role (configmaps/jobs/seinetworks create), the podMonitor selector flip to Live smoke of TestBenchmark on harbor in progress (the demonstration). |
WS-I — complete the load suite (TestBenchmark)
Builds on the merged foundation (#428) + SDK
Labels/DeletionPolicy(#429). After provisioning the chain + RPC fleet,TestBenchmarknow drives seiload and asserts the chain survived the load.Flow
seiload-profilesConfigMap) with the per-run chain id + the fleet's EVM endpoints; write a per-run profile CM stampedsei.io/harness-run.harness-run.WaitCaughtUpon node-0).Assert model (deliberate)
Pass/fail = Job completion + post-load chain liveness. A throughput/regression gate belongs in telemetry — a PromQL query over the run's metrics (the conventional path, like validate-release reads Grafana) — not parsed from the report. Left as a documented follow-up; the Job already carries the metrics scrape label so it's a drop-in.
Decoupling / cleanup
sei.io/harness-run;t.Cleanupdeletes them on normal exit, the label-GC sweep backstops abnormal exit.Verification
gofmtclean ·go build ./...clean (no integration code in prod deps) ·go vet -tags integrationclean · golangci-lint 0 issues ·go test -c -tags integration→TestBenchmark· skips withoutSEI_NODE_CLUSTER.Next
Live smoke on harbor (demonstration) + platform PR to point the load CronJob at the new image and update the podMonitor selector to
sei.io/harness-run.🤖 Generated with Claude Code