Tipos de asserção
Referência canônica para asserções executadas dentro de VM de teste provisionada. Salvo nota, alvo é primary. Cada asserção também exige description legível por humanos.
Asserções estáveis no guest
| Type | Required params | Optional behavior |
|---|---|---|
user_exists | username | Runs id |
user_password | username | Verifies an unlocked password hash exists; it does not attempt an interactive login |
user_in_group | username, group | Accepts Vyatta administrative equivalents when checking sudo/admin |
file_exists | path | Accepts a file or directory |
file_contains | path, pattern or content | Uses grep; the value is a grep pattern, not a literal-only comparison |
file_permissions | path, mode | Compares the octal mode reported by stat |
service_running | service | Checks systemd active state; knows a small cross-distro alias set |
service_enabled | service | Checks systemd enablement |
package_installed | package | Checks the guest’s supported package-manager database |
port_listening | port | protocol may be tcp or udp; default is TCP |
command_succeeds | command | Exit code must be zero; timeout_seconds/timeout is clamped to 1–1,800 seconds |
command_output | command plus a regex in expected_pattern, pattern, expected, or the assertion-level expected | Matches stdout with Python regular-expression semantics |
network_reachable | host | count defaults to 3; uses ICMP ping |
http_responds | url | status defaults to 200 |
Exemplo:
{
"type": "command_output",
"description": "Application reports the expected release",
"params": {
"command": "/opt/acme/bin/acme --version",
"expected_pattern": "^acme 2\\.4\\.[0-9]+$"
}
}Comando e saída capturada podem virar evidência de teste. Não embuta segredos.
Asserções GUI
Checagens GUI dependem de sessão de display funcional e helpers de screenshot ou input do runner. São mais sensíveis ao ambiente que checagens de comando no guest.
| Type | Principal parameters | What it checks |
|---|---|---|
gui_application_opens | application (canonical); handler also accepts launch-specific options | Starts an application and looks for a window |
gui_window_visible | window-title or matching parameters used by the handler | Looks for an existing window |
gui_execute_command | command | Executes a desktop command; can capture a screenshot |
gui_application_process | process_name | Looks for the process as a headless fallback |
gui_screenshot_matches | reference_id; optional threshold, crop/mask regions | Compares the current screenshot with a stored reference |
gui_wallpaper_matches | wallpaper_path; optional thresholds and regions | Checks the configured wallpaper path and visual result |
desktop_wallpaper_matches | wallpaper_path | Runs the stricter desktop-wallpaper provenance/configuration/visual check |
gui_click_element | x, y | Sends coordinate-based pointer input |
gui_form_fill | fields | Fills coordinate-described form inputs |
gui_text_visible | text, contains, or ocr_contains | Uses OCR on the screen or a selected region |
Executor também aceita aliases de compatibilidade para alguns tipos OCR e wallpaper. Prefira nomes canônicos acima em receitas novas. Testes por coordenada são sensíveis à resolução; use OCR ou checagens de resultado quando possível.
Checagens de benchmark são formato separado
cis_benchmark aparece no vocabulário histórico de asserção da receita, mas dispatcher comum de asserção não tem handler cis_benchmark. Checagens CIS e outros benchmarks são fornecidas como registros de benchmark com audit_script e executam pelo benchmark runner. Use workflow de benchmark CIS, não asserção custom com type: "cis_benchmark".
Interpretação de resultado
- Dados obrigatórios faltando produzem
error, ou planner pode descartar asserção com aviso antes da execução. - Alvo
on_vmindisponível produzskipped. - Resultado não correspondente produz
failed. - Só
passedé evidência afirmativa para aquela asserção.
Veja Asserções personalizadas para orientação de autoria.