Skip to main content

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

License

Apache-2.0 - Copyright (c) 2024-2026, Abilian SAS

Project details


Download files

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

Source Distribution

hop3_testing-0.6.2.tar.gz (166.0 kB view details)

Uploaded Source

Built Distribution

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

hop3_testing-0.6.2-py3-none-any.whl (205.9 kB view details)

Uploaded Python 3

File details

Details for the file hop3_testing-0.6.2.tar.gz.

File metadata

  • Download URL: hop3_testing-0.6.2.tar.gz
  • Upload date:
  • Size: 166.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for hop3_testing-0.6.2.tar.gz
Algorithm Hash digest
SHA256 fc6de95a01089f595fc20edd1aa7a2250ddb8f6ace3e69cd4f1aa48cb31a3713
MD5 370dc8c5d4f69ca08f15024628a29d5b
BLAKE2b-256 718c087ba43947cb7e92bca6e533eba1d906fb8aff4f7fdb2b0e39210a6eb9fa

See more details on using hashes here.

File details

Details for the file hop3_testing-0.6.2-py3-none-any.whl.

File metadata

  • Download URL: hop3_testing-0.6.2-py3-none-any.whl
  • Upload date:
  • Size: 205.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for hop3_testing-0.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 23f2fbcc249cef937dc01e9a2cb94b496bf5fc8b9e3e2d0a4b2b10c8194123c0
MD5 86ea9f61c806c4e1e24c202074c609bb
BLAKE2b-256 27818d656406b751ca7d4cda12e22c047e07700df4eaf5b6800736717914c757

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page