Skip to content

test: Storage + Arcade e2e load test suite#244

Draft
sambabbage wants to merge 1 commit into
bsv-blockchain:mainfrom
sambabbage:test/storage-arcade-e2e
Draft

test: Storage + Arcade e2e load test suite#244
sambabbage wants to merge 1 commit into
bsv-blockchain:mainfrom
sambabbage:test/storage-arcade-e2e

Conversation

@sambabbage

Copy link
Copy Markdown

Summary

  • Adds StorageE2E.man.test.ts with 8 tests across 3 suites covering the full concurrency matrix (sequential / single-user-parallel / multi-user-parallel) for read TPS, write TPS, and Arcade SSE proof delivery
  • Adds e2e/storage/README.md documenting env vars, pre-funding requirements, run commands, Docker TODO, and observed baselines
  • Originally opened as test: Storage + Arcade e2e load test suite #243 targeting codex/monitor-arc-resilience (now merged); retargeted to main

Test Suites

Suite Tests What it covers
1 · Read TPS 1a–1e Raw HTTP sequential, user-parallel, BRC-100 listOutputs, multi-user, babbage baseline
2 · Write TPS 2a–2c createAction sequential, single-user-parallel (noSend + concurrent Arcade broadcast), multi-user parallel
3 · SSE throughput 3a–3c Sequential delivery, concurrent Arcade ingestion, ceiling escalation (doubles batch until ≥20% fail)

Key design choices

  • noSend + Arcade pattern (suites 2b, 3): createAction({ noSend: true, acceptDelayedBroadcast: true }) → AtomicBEEF → arcade.postBeef(beef, [txid]). Routes through Arcade directly, triggering SSE callbacks to the storage server's /arc-ingest endpoint.
  • Deterministic multi-user keys: deriveUserKey(rootHex, i) uses BIP-32 m/0/i child derivation so the user pool is reproducible across runs.
  • acceptDelayedBroadcast: true throughout so tests run even when all UTXOs are unconfirmed (common after consecutive runs against the same key).

Validated baselines (mainnet, 2026-06-27)

Metric Result
Sequential write TPS 0.60–0.68 tx/s
Arcade broadcast latency avg 138ms, p95 318ms, 7.2 tx/s
SSE delivery (10 txs) 10/10 proofs, ~6 min to mine

Run

export STORAGE_E2E_ROOT_KEY=<funded_key_hex>
export STORAGE_E2E_ARCADE_TOKEN=<callback_token>
cd packages/wallet/wallet-toolbox
node_modules/.bin/jest --runTestsByPath src/services/__tests/StorageE2E.man.test.ts --verbose --testTimeout=900000

See e2e/storage/README.md for full details.

🤖 Generated with Claude Code

Adds StorageE2E.man.test.ts with 8 tests across 3 suites covering read
TPS (sequential/parallel/BRC-100/multi-user), write TPS
(sequential/single-user-parallel/multi-user), and SSE throughput
(sequential delivery, concurrent ingestion, ceiling escalation via
noSend + Arcade postBeef pattern).

Also adds e2e/storage/README.md documenting env vars, pre-funding,
run commands, and observed baselines from initial mainnet validation
(10/10 proofs delivered, 7.2 tx/s broadcast, 0.60 tx/s sequential write).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@sambabbage sambabbage marked this pull request as draft June 29, 2026 15:38
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant