Testing utilities for Hop3
Project description
hop3-testing
Testing framework for Hop3 deployment validation.
Overview
hop3-testing provides utilities and fixtures for testing Hop3 deployments. It supports running tests against Docker containers or remote servers, with a catalog of test applications covering various languages and frameworks.
Features
- Multiple targets: Test against Docker containers or remote SSH servers
- App catalog: Pre-built test applications for various languages
- Deployment sessions: Automated deploy/verify/cleanup workflow
- pytest fixtures: Integration with pytest for E2E testing
- Category filtering: Run tests by language or framework
Installation
pip install hop3-testing
Quick Start
# List available tests
hop3-test list
# Run system tests on Docker
hop3-test system --docker
# Test specific apps
hop3-test apps 010-flask-pip-wsgi
# Test against remote server
hop3-test apps --host server.example.com
# Run CI tests
hop3-test ci
Commands
| Command | Description |
|---|---|
hop3-test system |
Deploy Hop3 and run system tests |
hop3-test apps |
Test apps against pre-deployed Hop3 |
hop3-test list |
List available tests |
hop3-test show <name> |
Show test details |
hop3-test ci |
Run CI tests (fast+medium, P0) |
hop3-test dev |
Run developer tests (fast, P0 only) |
hop3-test hetzner |
Run E2E tests on Hetzner Cloud |
hop3-test multi-distro |
Test across multiple Linux distributions |
Common Options
| Option | Description |
|---|---|
-v, --verbose |
Verbose output |
--fail-fast |
Stop on first failure |
--keep |
Keep apps deployed after testing |
--docker |
Use Docker target |
--host HOST |
Remote server hostname |
Architecture
hop3-testing/
├── src/hop3_testing/
│ ├── cli/ # CLI commands
│ │ └── commands/ # Click command implementations
│ ├── catalog/ # Test discovery
│ │ ├── scanner.py # Discovers test.toml files
│ │ └── models.py # TestDefinition, Category
│ ├── apps/
│ │ ├── catalog.py # AppSource dataclass
│ │ └── deployment.py # DeploymentSession
│ ├── targets/
│ │ ├── base.py # DeploymentTarget ABC
│ │ ├── docker.py # DockerTarget
│ │ └── remote.py # RemoteTarget
│ └── results/ # Result storage and reporting
└── tests/
Test Categories
| Category | Languages/Frameworks |
|---|---|
python |
Flask, FastAPI, Django |
nodejs |
Express, Fastify |
ruby |
Sinatra, Rails |
go |
Fiber, Gin |
rust |
Actix-web, Axum |
static |
HTML, Hugo, Jekyll |
Hetzner Cloud Testing
Run full E2E tests on real Hetzner Cloud servers. Requires HETZNER_API_TOKEN environment variable.
# List available images
hop3-test multi-distro --list-images
# Run tests on a single distribution
hop3-test hetzner --image ubuntu-24.04 --suites test-apps
# Run tests across multiple distributions
hop3-test multi-distro --images ubuntu-24.04 debian-13 fedora-42
# Use local code instead of git
hop3-test hetzner --use-local-repo
# Skip phases for debugging
hop3-test hetzner --skip-reset # Keep existing server state
hop3-test hetzner --skip-deploy # Use existing Hop3 installation
hop3-test hetzner --skip-tests # Only reset and deploy
Hetzner Options
| Option | Description |
|---|---|
--server-id ID |
Use specific Hetzner server |
--image IMAGE |
OS image (e.g., ubuntu-24.04) |
--branch BRANCH |
Git branch to test (default: devel) |
--use-local-repo |
Deploy from local code |
--skip-reset |
Skip server reset |
--skip-deploy |
Skip Hop3 deployment |
--suites SUITE |
Test suites to run |
--continue-on-failure |
Don't stop on first failure (multi-distro) |
Development
# Run tests
uv run pytest tests/ -v
# Lint and format
uv run ruff check src/
uv run ruff format src/
Documentation
Related Packages
- hop3-server - The server being tested
- hop3-cli - CLI used for deployments in tests
License
Apache-2.0 - Copyright (c) 2024-2026, Abilian SAS
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hop3_testing-0.5.0.dev1.tar.gz.
File metadata
- Download URL: hop3_testing-0.5.0.dev1.tar.gz
- Upload date:
- Size: 120.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7461b7f1715cc6523ad07f1de757b147634da888fd5873232a5e74c6a7515317
|
|
| MD5 |
c3f78fe1d9146833db38a9da226f33b1
|
|
| BLAKE2b-256 |
ae97508745fa4f5af24ef7669cac665970987bb3b2186b33e6a4c09636b70867
|
File details
Details for the file hop3_testing-0.5.0.dev1-py3-none-any.whl.
File metadata
- Download URL: hop3_testing-0.5.0.dev1-py3-none-any.whl
- Upload date:
- Size: 156.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa6f508fad493c4f997d0cc7fe8fe313ebbdd3812e370c6628cd6efd42678a71
|
|
| MD5 |
ff410b49febe3c87c1a0dd503efedd38
|
|
| BLAKE2b-256 |
d78025e5849d51cf030d8220212ac71777b4c6f38e36420adb2b96a0d0704236
|