4.9 KiB
4.9 KiB
test_endpoints.py - APIエンドポイントテストモジュール
概要
VRCTアプリケーションのAPIエンドポイントを包括的にテストするためのモジュールです。メインループの各種機能をランダムアクセスでテストし、システムの安定性と堅牢性を検証します。
2025-10 更新点(commit a54538e 反映)
動的値が必要な /set/data/* エンドポイントに対し、事前に対応する /get/data/... エンドポイントを呼び出して最新値を取得し、self.config_dict にキャッシュしてからランダム選択する方式に変更しました。これにより以下が改善されています:
- 翻訳/転写エンジン選択時の存在しないキー送信防止
- 計算デバイス / 重みタイプ選択の安定化(リスト更新後に選択)
- マイク/スピーカー関連タイムアウト値の正常範囲チェック(取得した最新値を基準にバリデーション)
- Whisper / CTranslate2 重みタイプ辞書のキー集合変化への追従
例: "/set/data/selected_translation_engines" 試験前に "/get/data/selectable_translation_engines" を呼び、取得したリストから random.choice()。従来の初期キャッシュ依存から、実行時取得へ移行。
主要機能
Color クラス
- ANSIエスケープシーケンスを使用したコンソール出力色彩管理
- テスト結果の視覚的表示(成功・失敗・スキップ等)
TestMainloop クラス
- APIエンドポイントの包括的テスト実行
- ランダムアクセステスト
- テスト結果の記録・分析
- VRCTメインループとの統合テスト
主要メソッド
テスト実行メソッド
test_endpoints_on_off_all(): ON/OFF系エンドポイントの全テストtest_set_data_endpoints_all(): データ設定系エンドポイントの全テストtest_run_endpoints_all(): 実行系エンドポイントの全テストtest_endpoints_all_random(): 全エンドポイントのランダムアクセステスト
特定機能テスト
test_translate_all_language_pairs(): 全言語ペアでの翻訳テストtest_endpoints_on_off_continuous(): ON/OFF連続切り替えテストtest_endpoints_specific_random(): 特定エンドポイントのランダムテスト
結果分析
generate_summary(): テスト結果のサマリー生成record_test_result(): テスト結果の記録
使用方法
基本的な使い方
# テストインスタンスを作成
test = TestMainloop()
# 各種テストを実行
test.test_endpoints_on_off_all()
test.test_set_data_endpoints_all()
test.test_run_endpoints_all()
# テスト結果のサマリー表示
test.generate_summary()
ランダムテストの実行
# 全エンドポイントのランダムアクセステスト
test.test_endpoints_all_random()
# 特定エンドポイントのランダムテスト
test.test_endpoints_specific_random()
依存関係
mainloop: VRCTメインループモジュールrandom: ランダムテストデータ生成time: テスト間隔制御
テスト対象エンドポイント
制御系
/set/enable/*: 機能有効化/set/disable/*: 機能無効化
データ設定系
/set/data/*: 各種設定データの更新
動的取得対象(代表例):
selected_translation_engines→/get/data/selectable_translation_enginesselected_transcription_engine→/get/data/selectable_transcription_enginesselected_translation_compute_device→/get/data/selectable_translation_compute_device_listctranslate2_weight_type→/get/data/selectable_ctranslate2_weight_type_dictwhisper_weight_type→/get/data/selectable_whisper_weight_type_dictselected_mic_host/selected_mic_device→/get/data/selectable_mic_host_list//get/data/selectable_mic_device_listselected_speaker_device→/get/data/selectable_speaker_device_list
実行系
/run/*: 各種機能の実行
データ削除系
/delete/data/*: データの削除
注意事項
- テスト実行前に
config.jsonを削除して初期化 - 重いAIモデルを使用するテストは実行時間に注意
- ランダムテストは指定回数(デフォルト1000-10000回)実行される
- テスト終了時は自動的にすべての機能を無効化する
エラーハンドリング
- 各テストは独立して実行され、一つの失敗が全体に影響しない
- 期待されるステータスコードと実際の結果を比較
- VRAM不足等のリソースエラーも適切にハンドリング
テスト結果の分類
- PASS: 期待されるステータスコードと一致
- ERROR: 期待されるステータスコードと不一致
- SKIP: テスト実行不可(401ステータス)
- Invalid: 無効なエンドポイント(404ステータス)