Skip to main content

HAR-based load testing library for jac-scale applications

Project description

jac-loadtest

HAR-based load testing CLI for jac-scale applications. Capture real browser traffic via Chrome DevTools, export it as a .har file, and replay it under load — no scripting required.

The tool registers itself as a jac subcommand, so after installation you run jac loadtest alongside jac start, jac deploy, and the rest of the jac ecosystem.

Testing Modes

Monolith mode (default) — all requests go through a single --url. Use this for production-realistic load testing: it measures what users actually experience end-to-end through the gateway.

Microservice mode — route requests directly to individual service processes by URL path prefix. Use this locally or inside your cluster to isolate per-service latency and identify which service is the bottleneck — without gateway overhead masking the signal.

# Monolith: all traffic through the gateway (default, production-realistic)
jac loadtest recording.har --url http://localhost:8000 --vus 10 --duration 30s

# Microservice: bypass gateway, route by path prefix to individual services
jac loadtest recording.har --mode microservice \
  --url http://localhost:8000 \
  --services-map '{"order_service":"http://localhost:18001","inventory_service":"http://localhost:18002"}' \
  --vus 10 --duration 30s

Note: Microservice mode requires direct network access to service ports. This means it's only usable locally (jac serve) or from inside a Kubernetes cluster — not from outside production. For remote or production load testing, use monolith mode.

Quick Start

# Minimal: 1 VU, 30s
jac loadtest recording.har --url http://localhost:8000

# 50 VUs with 10s ramp-up
jac loadtest recording.har --url http://localhost:8000 --vus 50 --ramp-up 10s --duration 60s

# Authenticated test with per-VU credentials
jac loadtest recording.har --url http://localhost:8000 --vus 20 --credentials-file creds.csv

# CI-friendly with thresholds
jac loadtest recording.har --url http://localhost:8000 \
  --vus 10 --duration 30s --fail-on-p95 500 --fail-on-error-rate 1

Developer Setup

# 1. Create and activate a conda env (Python 3.12 required)
conda create -n load python=3.12
conda activate load

# 2. Install the package in editable mode (runtime deps only)
jac install -e .

# 3. Also install test dependencies (when running tests)
jac install -x test

# 4. Verify the command is registered
jac loadtest --help

Project Layout

jac_loadtest_cli/
├── plugin.jac     — registers `jac loadtest` via jaclang entry-points
├── cli.jac        — argument wiring and run orchestration
├── config.jac     — LoadTestConfig dataclass (three-layer resolution)
├── core/          — HAR parser, load engine, metrics (no jac-scale knowledge)
├── bridge/        — jac-scale-aware adapters (auth, topology)
└── output/        — console, JSON, HTML reporters

HAR Compatibility

Tested with HAR 1.1 and 1.2 (the format exported by Chrome DevTools, Firefox, Postman, and Insomnia). Files from other versions are parsed with a warning — open an issue if something breaks.

Documentation

  • Architecture — module map, data flow, design decisions
  • Roadmap — delivery phases and exit criteria
  • Verification — phase-by-phase manual and automated verification checklists

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jac_loadtest-0.3.0.tar.gz (22.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jac_loadtest-0.3.0-py3-none-any.whl (94.8 kB view details)

Uploaded Python 3

File details

Details for the file jac_loadtest-0.3.0.tar.gz.

File metadata

  • Download URL: jac_loadtest-0.3.0.tar.gz
  • Upload date:
  • Size: 22.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for jac_loadtest-0.3.0.tar.gz
Algorithm Hash digest
SHA256 87e7d41a22e9016fa20e31e5e21519506e20c428b7c198a968f19d89f14f5352
MD5 d562aefc057fc388befdef418a82b51f
BLAKE2b-256 8e4968849a2b831644ee9f0c31197242fba3ea373f41753ce2271843c7982b1d

See more details on using hashes here.

File details

Details for the file jac_loadtest-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: jac_loadtest-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 94.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for jac_loadtest-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5d24ed1cd1c045328673b9c1c7b0c89d1d67b9c795879179df58f740228bc007
MD5 8cfbae249cdc544236392b94b62896ac
BLAKE2b-256 516ef04dd5b6183af31026f8c5e2fbe93bde7f74a7ff085c85d2b9a67cd0cd99

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page