Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
aerospike-ce-ecosystem avatar

Run Tests

  • 1 installs
  • Updated August 1, 2026
  • aerospike-ce-ecosystem/aerospike-py

run-tests is a Claude Code workflow skill that builds aerospike-py, ensures an Aerospike server is healthy, and runs unit, integration, concurrency, compat, or matrix tests.

About

run-tests is a Claude Code workflow skill for building and testing the aerospike-py client. It builds the extension, and for server-requiring test types it starts an Aerospike container and waits for the health check before running unit, integration, concurrency, compatibility, or matrix tests via Make and tox. Developers use it to run the right test suite and get a pass/fail summary with root-cause analysis on failures.

  • Builds aerospike-py and runs unit, integration, concurrency, compat, or matrix tests
  • Auto-starts an Aerospike container and waits for the health check when a server is needed
  • Maps each test type to a Makefile/tox target and the CI workflow

Run Tests by the numbers

  • 1 all-time installs (skills.sh)
  • Ranked #1,750 of 2,153 Testing & QA skills by installs in the Skillselion catalog
  • Data as of Aug 2, 2026 (Skillselion catalog sync)
At a glance

run-tests capabilities & compatibility

Free; needs uv, podman/docker, and the aerospike-py repo.

Capabilities
test runner · container orchestration · matrix testing
Works with
docker
Use cases
testing · ci cd
Pricing
Free
From the docs

What run-tests says it does

Build, ensure Aerospike server is healthy, and run tests
SKILL.md
Tests that require an Aerospike server automatically start a container and wait for the health check to pass before executing.
SKILL.md
npx skills add https://github.com/aerospike-ce-ecosystem/aerospike-py --skill run-tests

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1
Last updatedAugust 1, 2026
Repositoryaerospike-ce-ecosystem/aerospike-py

What it does

Build aerospike-py and run the chosen test suite, auto-starting an Aerospike container when a server is required.

Who is it for?

Running the correct aerospike-py test suite with automatic server startup and health gating.

Skip if: Tests unrelated to the aerospike-py client build.

When should I use this skill?

You need to build and run aerospike-py tests, including server-dependent suites.

By the numbers

  • 6 test types
  • Python 3.10 to 3.14 + 3.14t matrix
  • health check waits up to 30 seconds

Files

SKILL.mdMarkdownGitHub ↗

Run Tests

Runs aerospike-py tests. Tests that require an Aerospike server automatically start a container and wait for the health check to pass before executing.

Arguments

Invoke with /run-tests [test-type].

test-typeServer RequiredDescriptionMakefile Target
unitNoUnit tests (default)make test-unit
integrationYesIntegration testsmake test-integration
concurrencyYesThread/async safety testsmake test-concurrency
compatYesOfficial C client compatibility testsmake test-compat
allYesFull test suitemake test-all
matrixNoPython 3.10~3.14 + 3.14t matrix testsmake test-matrix

If no argument is provided, unit is run.

Steps

1. Build

make build

Internally runs uv sync --group dev --group bench && uv run maturin develop --release.

2. Ensure Aerospike Server (except unit, matrix)

unit and matrix don't require a server, so this step is skipped. For all other test types, ensure the server is available in this order:

2-1. Check Container Status
podman compose -f compose.local.yaml up -d

Container runtime is specified via the RUNTIME environment variable (default: podman, docker also supported). compose.local.yaml: Aerospike CE 8.1, host port 18710 -> container port 3000.

2-2. Health Check (wait up to 30 seconds)
for i in $(seq 1 30); do
  if podman exec aerospike asinfo -v status 2>/dev/null | grep -q 'ok'; then
    echo "Aerospike is ready"
    break
  fi
  echo "Waiting for Aerospike... ($i/30)"
  sleep 1
done

If the health check doesn't pass within 30 seconds, check the logs with podman logs aerospike and report the cause.

3. Run Tests

Execute the corresponding command based on the argument:

ArgumentCommandtox Environment
unituv run pytest tests/unit/ -v-
integrationuvx --with tox-uv tox -e integrationtest-integration dependency group
concurrencyuvx --with tox-uv tox -e concurrencydefault test dependency group
compatuvx --with tox-uv tox -e compattest-compat dependency group (includes official aerospike)
alluvx --with tox-uv tox -e alltest-all dependency group
matrixuvx --with tox-uv toxpy310~py314 + py314t full matrix

4. Report Results

  • Summary of passed/failed test counts
  • If any tests failed, provide error messages and root cause analysis

Environment Variables

VariableDefaultDescription
AEROSPIKE_HOST127.0.0.1Aerospike server host
AEROSPIKE_PORT18710Aerospike server port (for local development)
RUNTIMEpodmanContainer runtime (docker or podman)

CI environment: GitHub Actions uses service containers with AEROSPIKE_PORT=3000.

Test Infrastructure

Test Configuration (tests/__init__.py)

AEROSPIKE_CONFIG = {
    "hosts": [(os.environ.get("AEROSPIKE_HOST", "127.0.0.1"),
               int(os.environ.get("AEROSPIKE_PORT", "18710")))],
    "cluster_name": "docker",
}

Shared Fixtures (tests/conftest.py)

FixtureScopeDescription
clientmoduleSync client. Auto-skips via pytest.skip() if server unavailable
async_clientfunctionAsync client. Auto-skips via pytest.skip() if server unavailable
cleanupfunctionAppend keys to the keys list -> automatic client.remove() after test
async_cleanupfunctionAsync version of cleanup. Uses async_client.remove()

pytest Configuration (pyproject.toml)

  • asyncio_mode = "auto" -> no @pytest.mark.asyncio decorator needed for async tests.
  • pass_env = ["AEROSPIKE_HOST", "AEROSPIKE_PORT"] configured in tox environments for env variable passthrough.

Test Directory Structure

tests/
├── __init__.py           # AEROSPIKE_CONFIG definition
├── conftest.py           # Shared fixtures (client, async_client, cleanup)
├── unit/                 # No server required. Argument validation, type errors, disconnected error tests
├── integration/          # Server required. Actual CRUD, batch, query, etc. tests
│   └── conftest.py       # Integration-specific fixtures (autouse cleanup, etc.)
├── concurrency/          # Thread safety, async concurrency tests
│   └── test_freethreading.py  # Python 3.14t only (excluded from concurrency tox env)
├── compatibility/        # Behavior comparison with official C client (`aerospike` PyPI)
└── feasibility/          # Framework integration tests
    ├── test_fastapi.py   # AsyncClient usage in a FastAPI app
    └── test_gunicorn.py  # Client usage in Gunicorn multi-worker

CI Workflow (ci.yaml) Mapping

CI JobTest TypePythonServer
lintpre-commit (ruff, clippy, fmt)3.13No
buildunit (matrix)3.10~3.14No
build-freethreadedunit3.14tNo
integrationall3.13AS 7.2 + latest
test-concurrencyconcurrency3.13AS latest
test-concurrency-freethreadedfreethreading3.14tAS latest
feasibilityfastapi, gunicorn3.13AS latest
compatibilitycompat3.13AS latest

Related skills

FAQ

What runs if I pass no argument?

Unit tests run by default, and they do not require a server.

How is the server started?

podman compose brings up Aerospike CE 8.1 on host port 18710, then a health check waits up to 30 seconds.

Testing & QAtestingbackend

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.