Project detail · Load Testing

Flux

A container-native load tester for repeatable YAML scenarios, live metrics, quality gates, and portable reports.

Status
Completed
Started
Jan 2026
Role
Creator and maintainer — Rust execution engine, scenario model, metrics, reports, and Docker workflow.
Stack
Rust · Tokio · Docker · YAML · Prometheus

Run the same realistic performance test locally and in CI with one container and a versioned config.

What it is

Flux runs load tests from a Docker container and a YAML file. Its Rust execution engine supports high-concurrency async traffic, controlled sync runs, multipart uploads, and chained multi-step scenarios that extract values from one response for use in the next request.

Why I built it

Load-test setups can be hard to reproduce across laptops and CI, especially when scenarios need authentication, uploads, retries, or report tooling.

How it addresses the problem

Flux puts the runner and report stack inside Docker and keeps the workload in versionable YAML. Tokio drives concurrent requests, JSONPath connects scenario steps, and aggregate assertions turn latency and error targets into CI-friendly pass/fail gates.

What the project actually does

01

Async and sync execution

Tokio-based async workers maximize throughput while sync mode supports controlled rate-limit testing.

02

Multi-step scenarios

JSONPath extraction and variable templates connect login, profile, upload, and other dependent request flows.

03

Real workload controls

Concurrency, duration, ramp-up, think time, timeouts, retries, retryable statuses, and environment variables are configurable.

04

Quality gates

Error-rate, average, p95, and p99 assertions return a failing exit code when a target misses its performance budget.

05

Live and portable output

Exposes Prometheus metrics during a run and writes JSON, interactive HTML, and optional per-request CSV reports.

06

Container-native workflow

Configuration, test data, and results are mounted into one Docker invocation with no local runtime installation.

How the pieces connect

  1. 01 YAML scenario
  2. 02 Config validator
  3. 03 Tokio workers
  4. 04 HTTP target
  5. 05 Metrics engine
  6. 06 Reports / Prometheus

From zero to a useful result

  1. 01

    Describe the workload

    Create a YAML config with the target, concurrency, duration, assertions, and report paths.

  2. 02

    Run the container

    Mount the config and results directories into Flux.

    docker run --rm -v ./config.yaml:/app/config.yaml -v ./results:/app/results ragilhadi/flux
  3. 03

    Read the result

    Open the HTML report, inspect latency and error metrics, and let quality-gate failures stop CI when targets are missed.

Start from the terminal

docker run --rm -v ./config.yaml:/app/config.yaml ragilhadi/flux:latest