78 lines
2.3 KiB
Python
78 lines
2.3 KiB
Python
"""Tests for RolloutAgent."""
|
|
|
|
import pytest
|
|
|
|
from app.agents.rollout_agent import RolloutAgent
|
|
|
|
|
|
@pytest.fixture
|
|
def rollout_agent():
|
|
return RolloutAgent()
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_rollout_agent_initialization(rollout_agent):
|
|
"""Test RolloutAgent initializes correctly."""
|
|
assert rollout_agent.name == "rollout_agent"
|
|
assert rollout_agent.version == "1.0.0"
|
|
assert rollout_agent._current_stage == 0
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_rollout_agent_health_check(rollout_agent):
|
|
"""Test RolloutAgent health check."""
|
|
result = await rollout_agent.health_check()
|
|
assert result is True
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_rollout_agent_get_status(rollout_agent):
|
|
"""Test RolloutAgent get status."""
|
|
result = await rollout_agent._get_status()
|
|
assert result.success
|
|
assert "current_stage" in result.data
|
|
assert result.data["stage_name"] == "development"
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_rollout_agent_promote(rollout_agent):
|
|
"""Test RolloutAgent promote."""
|
|
result = await rollout_agent._promote_to_next_stage()
|
|
assert result.success
|
|
assert result.data["stage_name"] == "3_users"
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_rollout_agent_rollback(rollout_agent):
|
|
"""Test RolloutAgent rollback."""
|
|
await rollout_agent._promote_to_next_stage()
|
|
result = await rollout_agent._rollback(0)
|
|
assert result.success
|
|
assert result.data.get("rollback_history")
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_rollout_agent_pause_resume(rollout_agent):
|
|
"""Test RolloutAgent pause and resume."""
|
|
pause_result = await rollout_agent._pause_rollout()
|
|
assert pause_result.success
|
|
|
|
resume_result = await rollout_agent._resume_rollout()
|
|
assert resume_result.success
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_rollout_agent_health_check_metrics(rollout_agent):
|
|
"""Test RolloutAgent health check."""
|
|
result = await rollout_agent._check_stage_health()
|
|
assert hasattr(result, "success")
|
|
assert "metrics" in result.data
|
|
assert "issues" in result.data
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_rollout_agent_final_stage_cannot_promote(rollout_agent):
|
|
"""Test RolloutAgent cannot promote past final stage."""
|
|
rollout_agent._current_stage = 5
|
|
result = await rollout_agent._promote_to_next_stage()
|
|
assert result.success is False |