This repository provides an opinionated, end-to-end harness for performance testing web/API workloads on Azure Container Apps. It bundles infrastructure-as-code templates, a Python-based CLI orchestrator, Azure Load Testing integrations, and a simulation app so customers can iterate on cost and performance quickly.
| Method | What You Need | Time to First Test |
|---|---|---|
| AZD Deployment | Azure CLI + AZD | ~15 minutes |
| Docker Quickstart | Docker Desktop | ~5 minutes |
| AI-Guided Setup | Copilot Chat + Azure CLI | ~10 minutes |
- Python 3.11+ (for the CLI harness)
- Azure CLI with an active subscription (
az login) - Docker Desktop (for the local quickstart only)
- AZD CLI (optional — for
azd updeployment)
# Install AZD if you haven't: https://aka.ms/azd
azd auth login
azd up
# Choose an environment name and region when promptedThat's it — AZD provisions the Container Apps environment, simulation app, and Azure Load Testing resource. The post-deploy hook prints your app URL and next steps.
# Clone and set up
git clone https://github.com/simonjj/aca-scaler-lab.git
cd aca-scaler-lab
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
# Generate a test config
cd src
python -m cli init --output my-test.yaml
# Edit my-test.yaml to set your container image and Azure settings, then:
python -m cli --config my-test.yaml runcd quickstart
docker compose up --build
# Dashboard at http://localhost:9090 after the test completesNote: The default container image (
simon.azurecr.io/simulation-app:latest) is the built-in simulation app. For custom workloads, push your image to your own ACR and update the config.
src/ # CLI, orchestrator, models, services
infrastructure/ # Bicep templates for Azure resources
infra/ # AZD-compatible infrastructure
load-tests/ # JMeter scenarios and ALT parameter files
simulation-app/ # Configurable FastAPI simulation target
scale-lab-ui/ # Web UI for guided multi-fabric tests
quickstart/ # Docker-based local preview (no Azure needed)
docs/ # Guides and reference material
tests/ # Unit and integration tests
| Issue | Fix |
|---|---|
az login fails |
Run az account clear && az login |
| Deployment timeout | Check region availability for your workload profile |
| WorkloadProfile not found | Ensure all needed profiles are in the same deployment (multi-fabric bug fixed in Bicep) |
| Docker out of memory | Allocate ≥ 4 GB RAM to Docker Desktop |
See docs/user-manual.md for the full CLI reference and configuration schema.

