import tempfile from unittest.mock import patch from app.redis_service import RedisSupervisor def test_redis_uses_aof_everysec_and_rdb_snapshot(): with tempfile.TemporaryDirectory() as td: supervisor = RedisSupervisor(True, td, port=6380, snapshot_seconds=900, aof=True) supervisor.executable = "/usr/bin/redis-server" with patch("app.redis_service.subprocess.Popen") as popen: process = popen.return_value process.poll.return_value = None process.pid = 123 supervisor._spawn() cmd = popen.call_args.args[0] assert cmd[cmd.index("--appendonly") + 1] == "yes" assert cmd[cmd.index("--appendfsync") + 1] == "everysec" assert cmd[cmd.index("--save") + 1:cmd.index("--save") + 3] == ["900", "100"] assert cmd[cmd.index("--dir") + 1] == td assert cmd[cmd.index("--maxmemory") + 1] == "0" assert cmd[cmd.index("--maxmemory-policy") + 1] == "noeviction" def test_redis_status_exposes_runtime_details_for_system_ui(): with tempfile.TemporaryDirectory() as td: supervisor = RedisSupervisor(True, td, port=6381, snapshot_seconds=1200, aof=True) supervisor.executable = "/usr/bin/redis-server" status = supervisor.status() assert status["managed"] is True assert status["port"] == 6381 assert status["data_dir"] == td assert status["snapshot_seconds"] == 1200 assert status["persistence"] == "AOF everysec + RDB"