ADK-gateway/backend/tests/test_agent_repo.py
2026-08-04 17:20:08 +08:00

55 lines
1.8 KiB
Python

"""Agent 池存储层单元测试。"""
import time
import pytest
from app.constants import AgentStatus
from app.models.schemas import AgentInfo
@pytest.mark.asyncio
async def test_upsert_and_get(agent_repo):
a = AgentInfo(agent_id="a1", endpoint="agent-1:5000", agent_tags=["compile", "test"], max_concurrent=2)
created = await agent_repo.upsert(a)
assert created is True
got = await agent_repo.get("a1")
assert got is not None
assert got.agent_tags == ["compile", "test"]
assert got.status == AgentStatus.ONLINE
@pytest.mark.asyncio
async def test_beat_and_stale(agent_repo):
a = AgentInfo(agent_id="a1", endpoint="agent-1:5000", agent_tags=["compile"])
await agent_repo.upsert(a)
assert await agent_repo.beat("a1", 1) is True
# 心跳为最新,不应 stale
stale = await agent_repo.stale_agents(1)
assert "a1" not in stale
@pytest.mark.asyncio
async def test_by_tags(agent_repo):
a1 = AgentInfo(agent_id="a1", endpoint="e1", agent_tags=["compile"], max_concurrent=2)
a2 = AgentInfo(agent_id="a2", endpoint="e2", agent_tags=["compile", "test"], max_concurrent=2)
a3 = AgentInfo(agent_id="a3", endpoint="e3", agent_tags=["test"], max_concurrent=2)
await agent_repo.upsert(a1)
await agent_repo.upsert(a2)
await agent_repo.upsert(a3)
ids = {a.agent_id for a in await agent_repo.by_tags(["compile"])}
assert ids == {"a1", "a2"}
ids = {a.agent_id for a in await agent_repo.by_tags(["compile", "test"])}
assert ids == {"a2"}
@pytest.mark.asyncio
async def test_remove(agent_repo):
a1 = AgentInfo(agent_id="a1", endpoint="e1", agent_tags=["compile"])
await agent_repo.upsert(a1)
await agent_repo.remove("a1")
assert await agent_repo.get("a1") is None
assert await agent_repo.by_tags(["compile"]) == []