持久化设备留言待收听状态并支持重启恢复

This commit is contained in:
stu2not
2026-05-19 14:06:16 +08:00
parent 3164d81bb0
commit 6e104201fb
21 changed files with 1147 additions and 68 deletions

View File

@@ -0,0 +1,42 @@
import pytest
from services import database_service_base
from services.database_service_base import DatabaseServiceBase
@pytest.mark.asyncio
async def test_database_init_success_log_is_once_per_service(monkeypatch):
logs = []
async def fake_get_db_manager():
return object()
def fake_info(device_id, session_id, message):
logs.append((device_id, session_id, message))
DatabaseServiceBase._logged_initialized_services.clear()
monkeypatch.setattr(database_service_base, "get_db_manager", fake_get_db_manager)
monkeypatch.setattr(database_service_base.session_logger, "info", fake_info)
first = DatabaseServiceBase(service_name="binding_service")
second = DatabaseServiceBase(service_name="binding_service")
await first._init_database()
await second._init_database()
assert logs == [
(
"system",
"binding_service",
"binding_service数据库连接初始化成功",
)
]
def test_binding_service_singleton_is_used_by_router_and_mqtt_handler():
from banban.routers import bindings
from banban.service.binding import binding_service
from handlers import mqtt_handler
assert bindings.binding_service is binding_service
assert mqtt_handler.binding_service is binding_service