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.

Download files

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

Source Distribution

adc_locust-0.2.0.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

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

adc_locust-0.2.0-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

Details for the file adc_locust-0.2.0.tar.gz.

File metadata

  • Download URL: adc_locust-0.2.0.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.7 Linux/5.14.0-687.25.1.el9_8.x86_64

File hashes

Hashes for adc_locust-0.2.0.tar.gz
Algorithm Hash digest
SHA256 94fc2d909bc558a3029afc13af19deab057137189ec37a7799babc7af287338f
MD5 8481155ea77638aa67ff6d70f2a8f2b7
BLAKE2b-256 01b0b7a3f27c2b6d963533fe360723b76cefb09350579c8df6f621e9c5bd9ff5

See more details on using hashes here.

File details

Details for the file adc_locust-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: adc_locust-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.7 Linux/5.14.0-687.25.1.el9_8.x86_64

File hashes

Hashes for adc_locust-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 226991b79b2d38cd33a2141d048f1b078d8891ce926e7678107faf53c7071b5d
MD5 49b9d5b4ce77c273bc1adc1c1c53f02c
BLAKE2b-256 7f0abc8d3e166fc282b2ba6c79607eb3d4b331f7551ee2b1fd5e4beeaad14682

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.0

2 files

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