adc-locust
adc-locust is a Textual terminal UI for
load-testing the load balancing and content switching behavior of Citrix ADC
(NetScaler) appliances. It reads existing configuration read-only through the
Citrix Nitro API SDK and drives traffic with Locust to confirm
whether load is actually distributed the way the configuration implies.
Full documentation: https://mmackenna.github.io/adc-locust/
Installation
adc-locust is published on PyPI: https://pypi.org/project/adc-locust/
pip install adc-locust
adc-locust
Note:
adc-locustdepends on the Citrix Nitro API SDK (nitro-python), which Citrix does not publish to PyPI. See Vendored dependency below — installing from PyPI requires either the vendored wheel from this repository or your own copy ofnitro-pythoninstalled separately.
Setup (from source)
poetry install
poetry run adc-locust
adc-locust needs Nitro API credentials and the NetScaler address to test,
read from a .env file in the current directory:
NITRO_URL=netscaler.example.com
NITRO_USER=nitro-api-user
NITRO_PASS=change-me
NITRO_VERIFY_TLS=false
Copy .env.example to get started, or just run adc-locust — if no usable
.env is found it walks you through creating one interactively before
loading the vserver list. Use --env-file /path/to/.env or
ADC_LOCUST_ENV_FILE to use a different path. Never commit a real .env
file; it's already excluded in .gitignore.
What it does
- Lists LB vservers on the NetScaler that balance traffic across more than one bound service (read-only Nitro queries).
- Lets you pick one and configure a Locust load test against it — either fairness mode (clears cookies every request, reveals the raw LB algorithm) or persistence mode (keeps cookies, confirms stickiness). Vservers reachable only through Content Switching are automatically routed through their CS vserver.
- Runs Locust headless and reports aggregate stats plus a per-service
traffic delta (via Nitro
service_stats), flagging services that received far less traffic than expected.
See the docs for details, including how content-switched vservers and persistence-vs-fairness modes are handled.
Development
poetry install
poetry run pytest
poetry run ruff check .
poetry run mypy src/adc_locust
poetry run mkdocs build --strict
Vendored dependency
The Nitro Python SDK (nitro-python) is not published on PyPI. Its wheel
is vendored in vendor/ and referenced as a local path dependency in
pyproject.toml, matching how the source Nitro scripts this project is
built from vendor it for uv.
Metadata
Release files for adc-locust 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| adc_locust-0.2.0.tar.gz | 15.4 kB | Without provenance | Details for adc_locust-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| adc_locust-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for adc_locust-0.2.0-py3-none-any.whl |
Total release size: 34.0 kB
Release files / adc_locust-0.2.0.tar.gz
| Download URL | adc_locust-0.2.0.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
94fc2d909bc558a3029afc13af19deab057137189ec37a7799babc7af287338f
|
|
BLAKE2b-256 checksum How to use checksums |
01b0b7a3f27c2b6d963533fe360723b76cefb09350579c8df6f621e9c5bd9ff5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.14.7 Linux/5.14.0-687.25.1.el9_8.x86_64
|
Release files / adc_locust-0.2.0-py3-none-any.whl
| Download URL | adc_locust-0.2.0-py3-none-any.whl |
|---|---|
| Size | 18.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
226991b79b2d38cd33a2141d048f1b078d8891ce926e7678107faf53c7071b5d
|
|
BLAKE2b-256 checksum How to use checksums |
7f0abc8d3e166fc282b2ba6c79607eb3d4b331f7551ee2b1fd5e4beeaad14682
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.14.7 Linux/5.14.0-687.25.1.el9_8.x86_64
|
Security for adc-locust 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.