Files
opensquilla--opensquilla/tests/test_session/test_finish_evicts_runtime_state.py
2026-07-13 13:12:33 +08:00

50 lines
1.6 KiB
Python

"""SessionManager.finish drops module-level subagent + routing bookkeeping."""
from __future__ import annotations
import pytest
from opensquilla.engine.steps.squilla_router import _history_store
from opensquilla.gateway.subagent_announce import _tracker
from opensquilla.session.manager import SessionManager
from opensquilla.session.models import SessionStatus
class _MemoryStorage:
def __init__(self) -> None:
self._sessions: dict[str, object] = {}
async def get_session(self, session_key: str):
return self._sessions.get(session_key)
async def upsert_session(self, node) -> None:
self._sessions[node.session_key] = node
@pytest.mark.asyncio
async def test_finish_evicts_spawn_group_tracker_and_routing_history() -> None:
from opensquilla.session.models import SessionNode
storage = _MemoryStorage()
node = SessionNode(
session_key="agent:main:main",
session_id="abc",
agent_id="main",
created_at=1,
updated_at=1,
started_at=1,
status=SessionStatus.RUNNING,
)
await storage.upsert_session(node)
_tracker.mark_closed("agent:main:main", "task-X")
_history_store.set("agent:main:main", [{"turn_index": 0}])
assert _tracker.is_closed("agent:main:main", "task-X")
assert _history_store.get("agent:main:main") is not None
mgr = SessionManager(storage) # type: ignore[arg-type]
await mgr.finish("agent:main:main", status=SessionStatus.DONE)
assert not _tracker.is_closed("agent:main:main", "task-X")
assert _history_store.get("agent:main:main") is None