Aller au contenu

Tests

Pyramide de tests

graph BT
    U["Unitaires (pytest)<br/>1200+ tests"] --> M["Molecule<br/>Rôles Ansible isolés"]
    M --> E["E2E (pytest)<br/>Déploiement réel Incus"]
    E --> B["Behavior (behave)<br/>Scénarios utilisateur"]

    style U fill:#22c55e,color:#fff
    style M fill:#3b82f6,color:#fff
    style E fill:#6366f1,color:#fff
    style B fill:#8b5cf6,color:#fff
Niveau Outil Cible Nombre
Unitaires pytest Logique Python, engine, CLI 1200+
Molecule molecule Rôles Ansible dans conteneurs Incus variable
E2E pytest Déploiement réel (apply, destroy, idempotence) 22
Behavior behave Scénarios utilisateur de bout en bout 8

Commandes

# Tests unitaires
anklume dev test

# Tests Molecule (rôles Ansible)
anklume dev molecule

# Lint (ruff check + format)
anklume dev lint

Tests réels en VM KVM

anklume peut se tester lui-même dans une VM KVM isolée :

# Lancer les tests réels
anklume dev test-real

# Avec options
anklume dev test-real --keep --verbose --filter "test_driver"
sequenceDiagram
    participant H as Hôte
    participant VM as VM KVM (sandbox)

    H->>VM: Créer VM + installer anklume
    H->>VM: Pousser le code source
    H->>VM: Installer dépendances (uv sync)
    H->>VM: Lancer pytest
    VM->>VM: Tests E2E réels (Incus dans VM)
    VM->>H: Résultats
    H->>H: Rapport

Options

Option Description
--keep Conserver la VM après les tests
--filter/-k Filtre pytest
--verbose/-v Sortie complète
--memory Mémoire de la VM
--cpu CPUs de la VM
--timeout Timeout global

Scénarios testés

  • Driver CRUD (projet, réseau, instance, exec)
  • Snapshots (create, list, restore, rollback)
  • Réconciliateur (apply, idempotence, restart)
  • Destroy (protection ephemeral, --force)
  • Status, nftables, nesting, portal, disposable
  • Golden images, import, doctor, network status
  • Provisioner Ansible, console tmux