Core API
// Minimal test (no wallet)
TestFramework::new()
.validators(10)
.run()
.await;
// Infrastructure test (no transactions)
TestFramework::new()
.validators(30)
.executors(10)
.with_chaos(ChaosProfile::Realistic)
.expect_system_health()
.run()
.await;
TestFramework::new()
.validators(30)
.executors(10)
.network_layout(NetworkLayout::Full)
.initialize_wallet(funds: 100000, users: 50)
.test_transactions()
.rate(per_second: 500)
.mix(TransactionMix {
transfers: 60,
inscriptions: 20,
blobs: 20,
})
.gas_price(100)
.apply()
.test_da()
.blob_rate(per_minute: 50)
.blob_size(256..1024)
.da_network(dispersal: 2, subnets: 20)
.apply()
.chaos()
.kill_nodes(5, after_minutes: 10)
.rolling_restart(batch: 3, interval: 2.minutes)
.partition_network([[0..15], [15..30]], duration: 5.minutes)
.random_failures(rate: 0.1, duration: 1.hour)
.maintenance_downtime(nodes: [0,1,2], duration: 10.minutes)
.apply()
.test_cryptarchia()
.security_param(10)
.active_slot_coeff(0.9)
.apply()
.expect_consensus_liveness(blocks_per_hour: 300)
.expect_transaction_throughput(tps: 100)
.expect_da_system_health(success_rate: 95)
.expect_network_connectivity(min_peers: 8)
.expect_partition_recovery(max_minutes: 2)
.expect_restart_recovery(max_minutes: 5)
.expect_system_integrity()
.overnight_test()
.run()
.await;
Transaction Generation (Requires Wallet)
.test_transactions()
.rate(per_second: 1000)
.mix(TransactionMix {
transfers: 60,
inscriptions: 20,
blobs: 20,
})
.gas_price(100)
Data Availability
.test_da_system()
.blob_rate(per_minute: 50)
.blob_size(256..1024)
.da_network(dispersal: 2, subnets: 20)
Chaos Engineering
.chaos()
.kill_nodes(5, after_minutes: 10)
.rolling_restart(batch: 3, interval: 2.minutes) stration
.partition_network([[0..15], [15..30]], duration: 5.minutes)
.random_failures(rate: 0.1)
System Validation
.expect_consensus_liveness(blocks_per_hour: 300)
.expect_da_system_health(success_rate: 95)
.expect_network_connectivity(min_peers: 8)
.expect_partition_recovery(max_minutes: 2)
.expect_transaction_throughput(tps: 100)
YAML Configuration
network:
validators: 30
executors: 10
wallet:
initialize: true
total_funds: 100000
num_users: 50
transactions:
rate_per_second: 500
mix:
transfers: 60
inscriptions: 20
blobs: 20
chaos:
- kill_nodes: {count: 5, after: 10m}
- partition: {groups: [[0,15],[15,30]], duration: 5m}
- rolling_restart: {batch: 3, interval: 2m}
expectations:
min_blocks_per_hour: 300
da_success_rate: 95
max_recovery_time: 2m
duration: 4h
TestFramework::from_file("config.yaml").run().await;