Typy asercji
Kanoniczna referencja dla asercji wykonywanych w przygotowanej maszynie wirtualnej testowej.
Jeśli nie zaznaczono inaczej, celem jest primary. Każda asercja wymaga też czytelnego
pola description.
Stabilne asercje gościa
| Typ | Wymagane params | Opcjonalne zachowanie |
|---|---|---|
user_exists | username | Uruchamia id |
user_password | username | Sprawdza, czy istnieje odblokowany hash hasła; nie próbuje interaktywnego logowania |
user_in_group | username, group | Akceptuje odpowiedniki administracyjne Vyatta przy sprawdzaniu sudo/admin |
file_exists | path | Akceptuje plik lub katalog |
file_contains | path, pattern lub content | Używa grep; wartość to wzorzec grep, nie porównanie wyłącznie dosłowne |
file_permissions | path, mode | Porównuje tryb ósemkowy zgłaszany przez stat |
service_running | service | Sprawdza stan active systemd; zna mały zestaw aliasów między dystrybucjami |
service_enabled | service | Sprawdza włączenie w systemd |
package_installed | package | Sprawdza obsługiwaną bazę menedżera pakietów gościa |
port_listening | port | protocol może być tcp lub udp; domyślnie TCP |
command_succeeds | command | Kod wyjścia musi być zero; timeout_seconds/timeout jest ograniczony do 1–1800 sekund |
command_output | command plus regex w expected_pattern, pattern, expected lub expected na poziomie asercji | Dopasowuje stdout z semantyką wyrażeń regularnych Pythona |
network_reachable | host | count domyślnie 3; używa ping ICMP |
http_responds | url | status domyślnie 200 |
Przykład:
{
"type": "command_output",
"description": "Application reports the expected release",
"params": {
"command": "/opt/acme/bin/acme --version",
"expected_pattern": "^acme 2\\.4\\.[0-9]+$"
}
}Polecenie i przechwycone wyjście mogą stać się dowodem testowym. Nie osadzaj sekretów.
Asercje GUI
Kontrole GUI zależą od działającej sesji wyświetlania oraz helperów zrzutu ekranu lub wejścia runnera. Są bardziej wrażliwe na środowisko niż kontrole poleceń gościa.
| Typ | Główne parametry | Co sprawdza |
|---|---|---|
gui_application_opens | application (kanoniczne); handler akceptuje też opcje specyficzne dla uruchomienia | Uruchamia aplikację i szuka okna |
gui_window_visible | parametry tytułu okna lub dopasowania używane przez handler | Szuka istniejącego okna |
gui_execute_command | command | Wykonuje polecenie pulpitu; może przechwycić zrzut ekranu |
gui_application_process | process_name | Szuka procesu jako rezerwowy wariant headless |
gui_screenshot_matches | reference_id; opcjonalnie threshold, regiony crop/mask | Porównuje bieżący zrzut z zapisaną referencją |
gui_wallpaper_matches | wallpaper_path; opcjonalne progi i regiony | Sprawdza skonfigurowaną ścieżkę tapety i wynik wizualny |
desktop_wallpaper_matches | wallpaper_path | Uruchamia surowszą kontrolę pochodzenia/konfiguracji/wyglądu tapety pulpitu |
gui_click_element | x, y | Wysyła wejście wskaźnika oparte na współrzędnych |
gui_form_fill | fields | Wypełnia pola formularza opisane współrzędnymi |
gui_text_visible | text, contains lub ocr_contains | Używa OCR na ekranie lub wybranym regionie |
Executor akceptuje też aliasy zgodności dla niektórych typów OCR i tapet. W nowych recipes preferuj kanoniczne nazwy powyżej. Testy współrzędnych są wrażliwe na rozdzielczość; tam, gdzie to możliwe, używaj OCR lub kontrol wyniku.
Kontrole benchmarków to osobny format
cis_benchmark występuje w historycznym słowniku asercji recipe, ale
zwykły dispatcher asercji nie ma handlera cis_benchmark. CIS i
inne kontrole benchmarków są dostarczane jako rekordy benchmarków z audit_script
i wykonują się przez benchmark runner. Użyj
workflow CIS benchmark, a nie własnej asercji z
type: "cis_benchmark".
Interpretacja wyniku
- Brak wymaganych danych daje
error, albo planner może usunąć asercję z ostrzeżeniem przed wykonaniem. - Niedostępny cel
on_vmdajeskipped. - Niedopasowany wynik daje
failed. - Tylko
passedjest twierdzącym dowodem dla tej asercji.
Patrz Custom assertions, aby poznać wskazówki przy autorstwie.