Vlastné asercie
Custom assertions zmenia požiadavku na príkaz, ktorý môže VM harness spustiť. Použite ich pre správanie, ktoré malá predvolená sada nepokrýva.
Štruktúra
Každá skupina custom-test potrebuje description a jednu alebo viac structured assertions:
{
"description": "Verify the web service",
"category": "application",
"assertions": [
{
"type": "service_running",
"description": "Nginx is active",
"params": { "service": "nginx" },
"expected_visual": "The evidence panel shows nginx active"
},
{
"type": "http_responds",
"description": "Local health endpoint responds",
"params": { "url": "http://localhost/health", "status": 200 }
}
]
}description je povinné pri skupine aj pri každej assertion. on_vm
vyberie ID VM v testovacom prostredí s viacerými VM; bez neho runner použije
primary. expected_visual udáva zamýšľaný stav snímky obrazovky, keď je aktívna
visual evidence gate.
Navrhujte asercie podľa výsledkov
- Službu overte pomocou
service_running, nie len existenciu balíka. - Pred testom externej trasy overte lokálny endpoint.
- Pre jeden stabilný konfiguračný údaj použite
file_contains, nie complete-file snapshot, ktorý zlyhá pri neškodnom formátovaní. command_succeedspoužívajte len s deterministickými, non-interactive commands.- Dlhým príkazom dajte
timeout_secondslen keď je to potrebné. Executor obmedzuje command timeouts na 1–1 800 sekúnd. - Nikdy nedávajte credentials do commands, descriptions, expected output ani URL; tieto polia sa môžu objaviť v evidencii a logoch.
Sémantika zlyhania
Neznámy type recipe model momentálne prijme, ale ak executor nenájde handler,
skončí ako error. Pri známych assertions bez required parameters môže počas
test-plan assembly dôjsť k vyradeniu s varovaním. Pred spustením buildu receptúru
overte a prezrite materialized test plan.
Ak on_vm pomenuje VM, ktorá nie je k dispozícii, assertion je skipped. skipped
ani error nepovažujte za úspešné verification.
Príklad s viacerými VM
{
"description": "Client reaches the API node",
"assertions": [
{
"type": "http_responds",
"description": "API health is reachable from the client",
"on_vm": "client",
"params": { "url": "http://api:8080/health", "status": 200 }
}
],
"environment": {
"vms": [
{ "vm_id": "client", "role": "client", "networks": ["lan"] },
{ "vm_id": "api", "role": "server", "networks": ["lan"] }
],
"networks": [
{ "network_id": "lan", "type": "isolated", "dhcp": true }
]
}
}VM-name resolution závisí od test topology a objavených adries. V run evidence overte rendered topology a resolved command assertion.
Pre každý supported type a parameter pozrite Typy asercií.