Files
Hydra-Engine/tests/test_dr.py
2026-03-30 13:19:11 +09:00

42 lines
1.4 KiB
Python

import pytest
from unittest.mock import MagicMock, AsyncMock
from hydra.resilience.graceful import GracefulManager
@pytest.mark.asyncio
async def test_l1_graceful_shutdown_saves_state():
"""프로세스 종료 전 상태 저장 확인 (systemd Restart=always가 L1 보장)."""
order_queue = MagicMock()
order_queue.block_new_orders = MagicMock()
position_tracker = AsyncMock()
position_tracker.snapshot.return_value = {"positions": [{"symbol": "005930"}]}
redis_client = MagicMock()
manager = GracefulManager(order_queue, position_tracker, redis_client)
await manager.shutdown("SIGTERM")
order_queue.block_new_orders.assert_called_once()
redis_client.set.assert_called_once()
args = redis_client.set.call_args[0]
assert "last_snapshot" in args[0]
def test_l2_watchdog_health_url_configurable():
"""Lambda 워치독 환경변수 설정 확인."""
import importlib
import os
import sys
os.environ["HYDRA_HEALTH_URL"] = "http://192.168.1.100:8000/health"
# boto3/requests가 없을 경우 mock 처리
mock_boto3 = MagicMock()
mock_requests = MagicMock()
sys.modules.setdefault("boto3", mock_boto3)
sys.modules.setdefault("requests", mock_requests)
import scripts.dr_watchdog as wd
importlib.reload(wd)
assert "192.168.1.100" in wd.HEALTH_URL
del os.environ["HYDRA_HEALTH_URL"]