Skip to content

Latest commit

 

History

History
75 lines (55 loc) · 3.16 KB

File metadata and controls

75 lines (55 loc) · 3.16 KB

Test Application

Reference implementation of a key-value store rollup using ev-node. Includes a KV executor, HTTP server for transaction submission, and a stress test tool targeting 10M req/s.

Build

# Build the testapp binary
go build -o testapp .

# Build the stress test tool
go build -o stress-test ./kv/bench/

Quick Start

You need 3 terminals: one for the local DA, one for the testapp node, and one for the stress test.

# Terminal 1: Start local DA (defaults to localhost:7980)
go run ../../tools/local-da

# Terminal 2: Initialize and start the testapp
./testapp init --evnode.node.aggregator --evnode.signer.passphrase_file examples/passphrase.txt
./testapp start --kv-endpoint localhost:9090 --evnode.node.aggregator --evnode.signer.passphrase_file examples/passphrase.txt

# Terminal 3: Run the stress test
./stress-test --addr localhost:9090 --duration 10s --workers 10000

Commands

Command Description
testapp init Initialize configuration and genesis
testapp start Run the node (aliases: run, node)
testapp rollback Rollback state by one height
testapp version Show version info
testapp keys Manage signing keys
testapp net-info Get info from a running node via RPC

Key Flags for start

Flag Description
--kv-endpoint <addr> Enable the KV HTTP server (e.g. localhost:9090)
--evnode.node.aggregator Run as aggregator (block producer)
--evnode.node.block_time Block interval (default 1s)
--evnode.da.address DA layer address
--home <dir> Data directory (default ~/.testapp)

HTTP Endpoints

When --kv-endpoint is set, the following endpoints are available:

Method Path Description
POST /tx Submit a transaction (key=value body)
GET /kv?key=<key> Retrieve latest value for a key
GET /store List all key-value pairs
GET /stats Get injected/executed tx counts and blocks produced

Stress Test

./stress-test --addr localhost:9090 --duration 10s --workers 1000
Flag Default Description
-addr localhost:9090 Server host:port
-duration 10s Test duration
-workers 1000 Concurrent TCP workers

The test sends transactions via raw persistent TCP connections, reports live RPS, and prints a summary table with avg/peak req/s, server-side block stats, and whether the 10M req/s goal was reached.