Vlastní aserce
Custom assertions změní požadavek na příkaz, který může VM harness spustit. Použijte je pro chování, které malá výchozí sada nepokrývá.
Struktura
Každá skupina custom-test potřebuje description a jednu nebo více 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é u skupiny i u každé assertion. on_vm
vybere ID VM v testovacím prostředí s více VM; bez něj runner použije
primary. expected_visual udává zamýšlený stav snímku obrazovky, když je aktivní
visual evidence gate.
Navrhujte aserce podle výsledků
- Službu ověřte pomocí
service_running, ne jen existenci balíčku. - Před testem externí trasy ověřte lokální endpoint.
- Pro jeden stabilní konfigurační údaj použijte
file_contains, ne complete-file snapshot, který selže kvůli neškodnému formátování. command_succeedspoužívejte jen s deterministickými, non-interactive commands.- Dlouhým příkazům dejte
timeout_secondsjen když je to potřeba. Executor omezuje command timeouts na 1–1 800 sekund. - Nikdy nedávejte credentials do commands, descriptions, expected output ani URL; tato pole se mohou objevit v evidenci a logách.
Sémantika selhání
Neznámý type recipe model momentálně přijme, ale pokud executor nenajde handler,
skončí jako error. U známých assertions bez required parameters může během
test-plan assembly dojít k vyřazení s varováním. Před spuštěním buildu recepturu
ověřte a prohlédněte materialized test plan.
Pokud on_vm pojmenuje VM, která není k dispozici, assertion je skipped. skipped
ani error nepovažujte za úspěšné verification.
Příklad s více 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í na test topology a objevených adresách. V run evidence ověřte rendered topology a resolved command assertion.
U každého supported type a parametru viz Typy asercí.