Types d’assertion
Référence canonique pour les assertions exécutées dans une VM de test provisionnée. Sauf mention, la cible est primary. Chaque assertion exige aussi une description lisible par un humain.
Assertions invité stables
| Type | params requis | Comportement optionnel |
|---|---|---|
user_exists | username | Exécute id |
user_password | username | Vérifie qu’un hash de mot de passe déverrouillé existe ; n’essaie pas une connexion interactive |
user_in_group | username, group | Accepte les équivalents administratifs Vyatta lors d’une vérification sudo/admin |
file_exists | path | Accepte un fichier ou un répertoire |
file_contains | path, pattern ou content | Utilise grep ; la valeur est un motif grep, pas une comparaison littérale seule |
file_permissions | path, mode | Compare le mode octal rapporté par stat |
service_running | service | Vérifie l’état actif systemd ; connaît un petit ensemble d’alias inter-distro |
service_enabled | service | Vérifie l’activation systemd |
package_installed | package | Vérifie la base du gestionnaire de paquets supporté de l’invité |
port_listening | port | protocol peut être tcp ou udp ; défaut TCP |
command_succeeds | command | Le code de sortie doit être zéro ; timeout_seconds/timeout est borné entre 1 et 1 800 secondes |
command_output | command plus une regex dans expected_pattern, pattern, expected, ou expected au niveau assertion | Fait correspondre stdout avec la sémantique regex Python |
network_reachable | host | count vaut 3 par défaut ; utilise ping ICMP |
http_responds | url | status vaut 200 par défaut |
Exemple :
{
"type": "command_output",
"description": "Application reports the expected release",
"params": {
"command": "/opt/acme/bin/acme --version",
"expected_pattern": "^acme 2\\.4\\.[0-9]+$"
}
}La commande et la sortie capturée peuvent devenir preuve de test. N’intégrez pas de secrets.
Assertions GUI
Les vérifications GUI dépendent d’une session affichage fonctionnelle et des aides capture ou entrée du runner. Elles sont plus sensibles à l’environnement que les vérifications commande invité.
| Type | Paramètres principaux | Ce qu’elle vérifie |
|---|---|---|
gui_application_opens | application (canonique) ; le handler accepte aussi des options spécifiques au lancement | Démarre une application et cherche une fenêtre |
gui_window_visible | paramètres titre fenêtre ou correspondance utilisés par le handler | Cherche une fenêtre existante |
gui_execute_command | command | Exécute une commande bureau ; peut capturer une capture d’écran |
gui_application_process | process_name | Cherche le processus comme repli headless |
gui_screenshot_matches | reference_id ; threshold, régions crop/mask optionnels | Compare la capture courante à une référence stockée |
gui_wallpaper_matches | wallpaper_path ; seuils et régions optionnels | Vérifie le chemin fond d’écran configuré et le résultat visuel |
desktop_wallpaper_matches | wallpaper_path | Exécute la vérification provenance/configuration/visuelle fond d’écran bureau plus stricte |
gui_click_element | x, y | Envoie une entrée pointeur par coordonnées |
gui_form_fill | fields | Remplit des champs de formulaire décrits par coordonnées |
gui_text_visible | text, contains, ou ocr_contains | Utilise OCR sur l’écran ou une région sélectionnée |
L’exécuteur accepte aussi des alias de compatibilité pour certains types OCR et fond d’écran. Préférez les noms canoniques ci-dessus dans les nouvelles recettes. Les tests par coordonnées sont sensibles à la résolution ; utilisez OCR ou vérifications de résultat lorsque possible.
Les vérifications benchmark sont un format séparé
cis_benchmark apparaît dans le vocabulaire historique d’assertion de recette, mais le dispatcher d’assertion ordinaire n’a pas de handler cis_benchmark. Les vérifications CIS et autres benchmarks sont fournies comme enregistrements benchmark avec un audit_script et s’exécutent via le runner benchmark. Utilisez le workflow benchmark CIS, pas une assertion personnalisée avec type: "cis_benchmark".
Interprétation des résultats
- Des données requises manquantes produisent
error, ou le planificateur peut abandonner l’assertion avec un avertissement avant exécution. - Une cible
on_vmindisponible produitskipped. - Un résultat non concordant produit
failed. - Seul
passedest une preuve affirmative pour cette assertion.
Voir Assertions personnalisées pour la rédaction.