chore: 迁移服务器前同步本地修改

This commit is contained in:
2026-08-05 21:26:13 +08:00
parent aa47a19e98
commit 1a914a2517
73 changed files with 908 additions and 1961 deletions
+94
View File
@@ -0,0 +1,94 @@
"""进程内 actor 运行时(``kilostar.utils.actor``)单元测试。
覆盖:注册/寻址/注销;句柄对同步与异步方法都返回 awaitable;便捷 getter;
未注册抛 KeyError。
"""
from __future__ import annotations
import pytest
from kilostar.utils import actor as actor_mod
from kilostar.utils.actor import (
clear_actors,
get_actor,
get_gsm,
get_gwm,
get_postgres,
register_actor,
unregister_actor,
)
@pytest.fixture(autouse=True)
def _clean_registry():
clear_actors()
yield
clear_actors()
class _Sample:
def __init__(self) -> None:
self.value = 7
def sync_method(self, x):
return x + 1
async def async_method(self, x):
return x * 2
@pytest.mark.asyncio
async def test_sync_method_is_awaitable_through_handle():
register_actor("sample", _Sample())
handle = get_actor("sample")
assert await handle.sync_method(41) == 42
@pytest.mark.asyncio
async def test_async_method_forwards_through_handle():
register_actor("sample", _Sample())
handle = get_actor("sample")
assert await handle.async_method(21) == 42
def test_non_callable_attribute_passthrough():
register_actor("sample", _Sample())
assert get_actor("sample").value == 7
def test_get_unregistered_raises_keyerror():
with pytest.raises(KeyError):
get_actor("does_not_exist")
def test_unregister_then_missing():
register_actor("sample", _Sample())
assert get_actor("sample") is not None
unregister_actor("sample")
with pytest.raises(KeyError):
get_actor("sample")
# 幂等:再次注销不报错
unregister_actor("sample")
def test_convenience_getters_resolve_named_actors():
register_actor("postgres_database", _Sample())
register_actor("global_state_machine", _Sample())
register_actor("global_workflow_manager", _Sample())
assert get_postgres() is get_actor("postgres_database")
assert get_gsm() is get_actor("global_state_machine")
assert get_gwm() is get_actor("global_workflow_manager")
@pytest.mark.asyncio
async def test_reregister_overwrites_underlying_instance():
first = _Sample()
first.value = 100
register_actor("sample", first)
assert get_actor("sample").value == 100
second = _Sample()
second.value = 200
register_actor("sample", second)
assert get_actor("sample").value == 200