stress-test: add HOP stress test scenarios#445
Open
x3c41a wants to merge 6 commits into
Open
Conversation
Add Rust-based HOP (Hand-off Protocol) stress tests to the existing stress-test framework. Pure RPC tests (no subxt/authorization needed). Scenarios: submit-only, full-cycle, group, pool-fill, mixed, errors, all Usage: bulletin-stress-test --ws-url ws://collator:port hop [SCENARIO] Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Run nightly cargo fmt - Show actual RPC error details instead of generic "hop_submit RPC" - Add hop-results.png with throughput/latency/mixed charts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
LatencyStats now records p90 alongside p50/p95/p99. The text report prints all four. Existing JSON files without `p90` deserialize cleanly because the field is `#[serde(default)]`. Re-ran `hop all --items 200` against a local 2-collator zombienet on hop-stable; updated hop-results.png with the new percentiles. A small matplotlib helper (plot-hop-results.py) reads --output-file JSON and produces the chart. Submit throughput / inclusion latency: 1 KB: 3,078 ops/s, 3.0 MB/s p50=1ms p90=2ms p95=2ms p99=3ms 10 KB: 1,269 ops/s, 12.4 MB/s p50=2ms p90=2ms p95=2ms p99=4ms 100 KB: 140 ops/s, 13.7 MB/s p50=11ms p90=26ms p95=27ms p99=32ms 1 MB: 13 ops/s, 13.3 MB/s p50=103ms p90=289ms p95=302ms p99=310ms Group ×10 100 KB: 326 ops/s, 31.7 MB/s, p50=10ms p99=13ms Mixed 30s 10 KB: 639 reads & writes/s, 6.24 MB/s each
Two-panel layout: left = throughput (ops/s + MB/s), right = stacked latency where each colour band shows the additional time at the next percentile (p50 / p90 - p50 / p95 - p90 / p99 - p95). The stacked top is annotated with the overall p99.
The text table and the plot now show p50 / p90 / p99 only, which is the percentile set the reviewers want. p95 is removed from the struct since no scenario in this crate read it.
Adds three submit-only data points between the original 100 KB and 1 MB so the saturation curve is visible. The plot now spans 1 / 10 / 100 / 128 / 256 / 512 KB / 1 MB.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rust HOP (Hand-off Protocol) stress test scenarios in
stress-test/. Talks to collators directly overhop_submit/hop_claim/hop_poolStatus(no extrinsics).LatencyStatsreports p50 / p90 / p99.Results (local 2-collator zombienet, hop-stable, --items 200)
Usage
Scenarios:
submit-only,full-cycle,group,pool-fill,mixed,errors,all.