JobStateMachine テスト実行結果
実行日: 2025年1月 テストファイル: tests/core/test_job_state_machine.py
テスト概要
JobStateMachine の実装を検証するため、以下のテストを実装しました:
実装されたテスト
- 基本機能テスト (
TestJobStateMachine)test_initial_state_is_pending: 初期状態が PendingState であることを確認test_transition_pending_to_running: Pending → Running の遷移をテストtest_transition_running_to_completed: Running → Completed の遷移をテストtest_transition_running_to_failed: Running → Failed の遷移をテストtest_invalid_transition_from_pending: 無効な遷移をテストtest_invalid_transition_from_completed: 終端状態からの遷移をテストtest_invalid_transition_from_failed: 終端状態からの遷移をテスト
- SessionController 統合テスト (
TestJobStateMachineWithSessionController)test_state_persisted_to_session: 状態遷移がセッションに保存されることを確認
- RunHistoryLogger 統合テスト (
TestJobStateMachineWithHistoryLogger)test_state_logged_to_history: 状態遷移が履歴に記録されることを確認test_failure_logged_to_history: 失敗が履歴に記録されることを確認
- 完全統合テスト (
TestJobStateMachineIntegration)test_full_integration: SessionController と RunHistoryLogger の完全統合テスト
合計テスト数: 11個
テスト実行方法
基本的な実行
cd /home/yn441611/NexusCore
source myenv_linux/bin/activate
PYTHONPATH=src python -m pytest tests/core/test_job_state_machine.py -v
詳細な出力
PYTHONPATH=src python -m pytest tests/core/test_job_state_machine.py -v --tb=short
特定のテストクラスのみ実行
PYTHONPATH=src python -m pytest tests/core/test_job_state_machine.py::TestJobStateMachine -v
実装の検証
1. インポート確認
以下のクラスが正しくインポートできることを確認:
from nexuscore.core.job_state_machine import (
JobStateMachine,
PendingState,
RunningState,
CompletedState,
FailedState,
)
2. 基本動作確認
# 初期状態の確認
machine = JobStateMachine(job_id="test-1")
assert machine.get_current_state() == "pending"
assert isinstance(machine.state, PendingState)
# 状態遷移の確認
machine.start() # Pending → Running
assert machine.get_current_state() == "running"
machine.complete() # Running → Completed
assert machine.get_current_state() == "completed"
3. エラーハンドリング確認
# 無効な遷移の確認
machine = JobStateMachine(job_id="test-2")
try:
machine.complete() # Pending から直接 Completed へは遷移不可
except ValueError:
pass # 期待されるエラー
期待される動作
状態遷移フロー
PendingState → RunningState → CompletedState (成功時)
↓
FailedState (失敗時)
状態遷移ルール
- PendingState:
start()で RunningState に遷移可能 - RunningState:
complete()で CompletedState に遷移可能、fail()で FailedState に遷移可能 - CompletedState: 終端状態(遷移不可)
- FailedState: 終端状態(遷移不可)
統合機能
SessionController との統合
状態遷移のたびに、セッション状態が .nexus/sessions/{session_id}.state.json に保存されます。
RunHistoryLogger との統合
ジョブの完了・失敗時に、履歴が .nexus/history/{kind}.log.jsonl に記録されます。
注意事項
- テスト実行時は
PYTHONPATH=srcを設定してください - 一時ファイルを使用するテストは、自動的にクリーンアップされます
- セッション状態と履歴ファイルは、テスト実行後に確認できます
トラブルシューティング
インポートエラー
# PYTHONPATH を設定
export PYTHONPATH=src:$PYTHONPATH
テストが見つからない
# テストファイルの存在を確認
ls -la tests/core/test_job_state_machine.py
依存関係エラー
# 必要なパッケージをインストール
pip install pytest
テスト実装者: NexusCore Development Team 最終更新: 2025年1月