- Add e2e_vm_http_status_404/500 tests to verify HTTP status handling - ResultBox properly returns Ok(Response) for HTTP errors, Err for connection failures - Create dynamic-plugin-flow.md documenting MIR→VM→Registry→Plugin flow - Add vm-stats test files for HTTP 404/500 status codes - Update net-plugin.md with HTTP error handling clarification - Create E2E_TESTS.md documenting all E2E test behaviors - Add mir-26-instruction-diet.md for MIR optimization plans - Add vm-stats-cookbook.md for VM statistics usage guide - Update MIR verifier to properly track self-assignment patterns 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2.3 KiB
2.3 KiB
E2E Tests Documentation
最終更新: 2025-08-23
E2E Plugin Net Tests (e2e_plugin_net.rs)
HTTP Tests
基本的なHTTP通信
e2e_http_ok_test- 基本的なHTTP通信の成功ケースe2e_http_post_and_headers- POSTリクエストとヘッダー処理e2e_http_empty_body- 空ボディのレスポンス処理e2e_http_multiple_requests_order- 複数リクエストの順序処理
HTTPステータスコード処理
e2e_vm_http_status_404- 404 Not Found レスポンス処理- サーバーが404ステータスで応答 → クライアントは
Result.Ok(HttpResponseBox)を受信 response.getStatus()で 404、response.readBody()で "NF" を取得
- サーバーが404ステータスで応答 → クライアントは
e2e_vm_http_status_500- 500 Internal Server Error レスポンス処理- サーバーが500ステータスで応答 → クライアントは
Result.Ok(HttpResponseBox)を受信 response.getStatus()で 500、response.readBody()で "ERR" を取得
- サーバーが500ステータスで応答 → クライアントは
HTTPエラー処理
e2e_vm_http_client_error_result- 接続失敗時のエラー処理- ポート8099への接続失敗 →
Result.Err(ErrorBox)を返す - エラーメッセージ: "connect failed for 127.0.0.1:8099/nope"
- ポート8099への接続失敗 →
Socket Tests
e2e_socket_echo- ソケットエコーサーバーe2e_socket_timeout- ソケットタイムアウト処理
E2E Plugin Net Additional Tests (e2e_plugin_net_additional.rs)
高度なHTTPエラー処理
e2e_vm_http_client_error_result- VM環境での接続エラー処理e2e_vm_http_empty_body- VM環境での空ボディ処理
HTTPエラーハンドリングの重要な区別
接続失敗(Transport Layer Error)
- 状況: サーバーに到達できない(unreachable)
- 結果:
Result.Err(ErrorBox) - 例: ポートが閉じている、ホストが存在しない
HTTPステータスエラー(Application Layer Error)
- 状況: サーバーに到達したがアプリケーションエラー
- 結果:
Result.Ok(HttpResponseBox) - 例: 404 Not Found、500 Internal Server Error
- 理由: トランスポート層は成功、HTTPプロトコルとして正常な応答
この区別により、ネットワークレベルのエラーとアプリケーションレベルのエラーを適切に処理できます。