Skip to main content

adc-locust

PyPI Python versions License

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-locust depends 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 of nitro-python installed 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

  1. Lists LB vservers on the NetScaler that balance traffic across more than one bound service (read-only Nitro queries).
  2. 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.
  3. 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)

Source distribution for adc-locust 0.2.0
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)

Table of built distributions (wheels) for adc-locust 0.2.0
File Interpreter ABI Platform Actions
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.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page