Anpassade assertioner
Custom assertions gör om ett krav till ett kommando som VM-harnessen kan köra. Använd dem för beteende som den lilla standardsviten inte täcker.
Struktur
Varje custom-test group behöver description och en eller flera 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 krävs både på group och på varje assertion. on_vm väljer ett VM-ID
i en multi-VM test environment; utan det använder runnern primary. expected_visual
anger avsedd screenshot state när visual evidence gate är aktiv.
Utforma assertioner kring resultat
- Kontrollera en tjänst med
service_running, inte bara att paketet finns. - Kontrollera en lokal endpoint innan du testar en extern route.
- Använd
file_containsför ett stabilt konfigurationsfaktum, inte en complete-file snapshot som bryts vid harmlös formatering. - Använd
command_succeedsendast med deterministiska, non-interactive commands. - Ge långa commands
timeout_secondsbara när det behövs. Executorn begränsar command timeouts till 1–1.800 sekunder. - Lägg aldrig credentials i commands, descriptions, expected output eller URL; dessa fält kan synas i evidence och loggar.
Semantik vid fel
En unknown type accepteras för närvarande av recipe model men blir error när
executorn inte hittar någon handler. Kända assertions som saknar required parameters
kan tas bort under test-plan assembly med en varning. Validera därför receptet och
granska materialized test plan innan du startar en build.
Om on_vm namnger en VM som saknas är assertionen skipped. Behandla inte
skipped eller error som lyckad verification.
Multi-VM-exempel
{
"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 beror på test topology och dess discovered addresses. Bekräfta rendered topology och assertionens resolved command i run evidence.
För varje supported type och parameter, se Assertionstyper.