mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-04 23:17:20 +08:00
refactor(runtime): activate managed resources on demand (#6334)
This commit is contained in:
@@ -366,7 +366,6 @@ def _patch_module_shutdown_dependencies(monkeypatch) -> dict:
|
||||
for name, method_name in (
|
||||
("ModuleManager", "shutdown"),
|
||||
("EventManager", "stop"),
|
||||
("DisplayHelper", "stop"),
|
||||
("DohHelper", "shutdown"),
|
||||
("ThreadHelper", "shutdown"),
|
||||
("RedisHelper", "close"),
|
||||
@@ -381,11 +380,24 @@ def _patch_module_shutdown_dependencies(monkeypatch) -> dict:
|
||||
key = name.removesuffix("Helper").removesuffix("Manager").lower()
|
||||
dependencies[key] = getattr(instance, method_name)
|
||||
|
||||
for name in ("stop_message", "stop_frontend", "clear_temp"):
|
||||
for name in (
|
||||
"close_browser_sessions",
|
||||
"stop_message",
|
||||
"stop_frontend",
|
||||
"clear_temp",
|
||||
):
|
||||
dependency = MagicMock()
|
||||
monkeypatch.setattr(modules_initializer, name, dependency)
|
||||
dependencies[name] = dependency
|
||||
|
||||
stop_managed_resources = AsyncMock()
|
||||
monkeypatch.setattr(
|
||||
modules_initializer,
|
||||
"stop_managed_resources",
|
||||
stop_managed_resources,
|
||||
)
|
||||
dependencies["stop_managed_resources"] = stop_managed_resources
|
||||
|
||||
async_redis = MagicMock()
|
||||
async_redis.close = AsyncMock()
|
||||
monkeypatch.setattr(
|
||||
@@ -400,6 +412,23 @@ def _patch_module_shutdown_dependencies(monkeypatch) -> dict:
|
||||
return dependencies
|
||||
|
||||
|
||||
def test_browser_sessions_close_before_managed_resources(monkeypatch) -> None:
|
||||
"""显示等宿主资源必须晚于浏览器会话释放,避免存活上下文失去依赖。"""
|
||||
calls: list[str] = []
|
||||
monkeypatch.setattr(modules_initializer, "stop_agent", AsyncMock())
|
||||
dependencies = _patch_module_shutdown_dependencies(monkeypatch)
|
||||
dependencies["close_browser_sessions"].side_effect = lambda: calls.append("browser")
|
||||
|
||||
async def stop_resources() -> None:
|
||||
calls.append("resources")
|
||||
|
||||
dependencies["stop_managed_resources"].side_effect = stop_resources
|
||||
|
||||
asyncio.run(modules_initializer.stop_modules())
|
||||
|
||||
assert calls == ["browser", "resources"]
|
||||
|
||||
|
||||
def test_shared_http_close_waits_for_real_lru_eviction(monkeypatch):
|
||||
"""最终 HTTP 关闭必须等待真实 LRU 淘汰任务并消费其异常"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user