カスタムアサーション
カスタム アサーションは、要件を VM ハーネスが実行できるコマンドに変換します。 これらは、小規模なデフォルト スイートではカバーされていない動作に使用します。
構造
各カスタム テスト グループには説明と 1 つ以上の構造化されたテストが必要です。 アサーション:
{
"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 はグループと各アサーションの両方で必要です。 on_vm
マルチ VM テスト環境で VM ID を選択します。それがなければランナーは使用します
primary。 expected_visual は、意図したスクリーンショットの状態を提供します。
視覚的証拠ゲートがアクティブです。
結果に関するアサーションを設計する
- 単にパッケージが存在するかどうかだけでなく、
service_runningでサービスを確認します。 - 外部ルートをテストする前に、ローカル エンドポイントを確認します。
- 完全なファイルではなく、1 つの安定した構成ファクトに
file_containsを使用します 無害なフォーマットで壊れるスナップショット。 command_succeedsは、確定的で非対話型のコマンドでのみ使用してください。- 長いコマンド
timeout_secondsは必要な場合にのみ実行してください。エグゼキュータークランプ コマンドのタイムアウトは 1 ~ 1,800 秒です。 - コマンド、説明、予想される出力、または URL に資格情報を決して入れないでください。 これらのフィールドは証拠やログに現れる可能性があります。
失敗のセマンティクス
不明な型は現在レシピ モデルで受け入れられていますが、
error 実行者がハンドラを見つけられない場合。省略された既知のアサーション
必要なパラメータは、テスト計画の組み立て中に警告とともに削除される可能性があります。
したがって、事前にレシピを検証し、具体化されたテスト計画を検査してください。
ビルドを開始します。
on_vm が存在しない VM を指定した場合、アサーションは skipped になります。しないでください
skipped または error を検証が成功したものとして扱います。
マルチ 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 名の解決は、テスト トポロジとその検出されたアドレスによって異なります。 レンダリングされたトポロジとアサーションの解決されたコマンドを実行時に確認します。 証拠。
サポートされているすべての型とパラメータについては、次を参照してください。 Assertion types。