Skip to content

HeliosDB Load Testing Framework

HeliosDB Load Testing Framework

Comprehensive load testing and chaos engineering framework for Phase 2 Milestone 1 validation.

Features

  • Concurrent Load Testing: 1K, 10K, 100K concurrent requests
  • Chaos Engineering: Failure injection (node failures, partitions, disk full, etc.)
  • Performance Metrics: Latency percentiles (P50, P95, P99), throughput, error rates
  • Comprehensive Reporting: Terminal, HTML, and JSON reports
  • Feature-Specific Tests: All 8 Phase 2 M1 features tested

Quick Start

Terminal window
# Run a quick smoke test
cargo run --bin load-test smoke
# Run 1K concurrent users load test (60 seconds)
cargo run --bin load-test load --level 1k --duration 60
# Run 10K concurrent users load test (120 seconds)
cargo run --bin load-test load --level 10k --duration 120
# Run 100K concurrent users load test (300 seconds)
cargo run --bin load-test load --level 100k --duration 300
# Run chaos engineering tests
cargo run --bin load-test chaos --scenarios all
# Run specific chaos scenario
cargo run --bin load-test chaos --scenarios node
# Run full test suite
cargo run --bin load-test full

Usage

Load Testing

Terminal window
# Basic load test
cargo run --bin load-test load --level 1k
# Custom configuration
cargo run --bin load-test load \
--level 1k \
--duration 120 \
--users 1000 \
--mode mixed
# Test modes:
# - read: Read-only queries
# - write: Write-only operations
# - mixed: 70% reads, 30% writes
# - complex: Complex queries (joins, aggregations)

Chaos Engineering

Terminal window
# Run all chaos scenarios
cargo run --bin load-test chaos --scenarios all
# Run specific scenario
cargo run --bin load-test chaos --scenarios node
cargo run --bin load-test chaos --scenarios partition
cargo run --bin load-test chaos --scenarios disk
cargo run --bin load-test chaos --scenarios memory
cargo run --bin load-test chaos --scenarios slow
cargo run --bin load-test chaos --scenarios connection
cargo run --bin load-test chaos --scenarios cpu
cargo run --bin load-test chaos --scenarios cascade

Report Generation

Terminal window
# Generate terminal report
cargo run --bin load-test report --input ./load-test-results/report-20251031-200000.json
# Generate HTML report
cargo run --bin load-test report \
--input ./load-test-results/report-20251031-200000.json \
--format html
# View JSON report
cargo run --bin load-test report \
--input ./load-test-results/report-20251031-200000.json \
--format json

Chaos Scenarios

ScenarioDescriptionExpected Behavior
Node FailureKill 1-3 nodes randomlyAutomatic failover within 5 minutes
Network PartitionSplit cluster into partitionsPartition tolerance, eventual consistency
Disk FullSimulate storage exhaustionGraceful degradation, alerts triggered
Memory PressureForce OOM conditionsMemory management, swap usage
Slow DependencyInject 500-2000ms latencyRequest timeout, retry logic
Connection LossDrop database connectionsConnection pool recovery
CPU SaturationSaturate CPU to 95%+Resource throttling, queue management
Cascading FailureTrigger chain of failuresCircuit breakers, isolation

Performance Targets

1K Concurrent Users

  • Success Rate: ≥99.9%
  • P99 Latency: <100ms
  • Throughput: ≥1,000 req/s

10K Concurrent Users

  • Success Rate: ≥99.9%
  • P99 Latency: <500ms
  • Throughput: ≥10,000 req/s

100K Concurrent Users

  • Success Rate: ≥99%
  • P99 Latency: <2000ms
  • Throughput: ≥50,000 req/s

Report Formats

Terminal Report

Colored, formatted output to terminal with key metrics.

HTML Report

Comprehensive HTML report with:

  • Performance metrics table
  • Chaos engineering results
  • Visual formatting and charts
  • Export-ready format

JSON Report

Machine-readable JSON format for:

  • CI/CD integration
  • Historical tracking
  • Automated analysis

Architecture

heliosdb-load-test/
├── src/
│ ├── lib.rs # Library entry point
│ ├── main.rs # CLI application
│ ├── config.rs # Configuration types
│ ├── executor.rs # Load test execution engine
│ ├── metrics.rs # Performance metrics collection
│ ├── scenarios.rs # Test scenarios
│ ├── chaos.rs # Chaos engineering
│ └── reporter.rs # Report generation
├── Cargo.toml
└── README.md

Integration with CI/CD

Terminal window
# Run in CI pipeline
cargo run --bin load-test smoke || exit 1
cargo run --bin load-test load --level 1k --duration 30 || exit 1
# Check results programmatically
if [ -f ./load-test-results/latest.json ]; then
success_rate=$(jq '.metrics.error_rate' ./load-test-results/latest.json)
if [ "$success_rate" -lt "0.001" ]; then
echo "Success rate within SLA"
else
echo "Success rate below SLA"
exit 1
fi
fi

Development

Terminal window
# Build
cargo build --release
# Run tests
cargo test
# Run with verbose logging
cargo run --bin load-test load --level 1k --verbose
# Clean up old reports
rm -rf ./load-test-results/*

Future Enhancements

  • Real database integration (currently simulated)
  • Distributed load generation across multiple machines
  • Real-time monitoring dashboard
  • Automated performance regression detection
  • Cloud provider integration (AWS, Azure, GCP)
  • Custom scenario DSL for complex workflows

License

Copyright © 2025 HeliosDB. All rights reserved.