test: refactor test

This commit is contained in:
2026-02-23 19:04:13 +00:00
parent 542aefb8c9
commit b57470a7d8

View File

@@ -14,7 +14,8 @@ from google.adk.events.event import Event
from google.cloud.firestore_v1.async_client import AsyncClient from google.cloud.firestore_v1.async_client import AsyncClient
from google.genai.types import Content, GenerateContentResponseUsageMetadata, Part from google.genai.types import Content, GenerateContentResponseUsageMetadata, Part
from va_agent.session import FirestoreSessionService, _try_claim_compaction_txn from va_agent.session import FirestoreSessionService
from va_agent.compaction import SessionCompactor, _try_claim_compaction_txn
pytestmark = pytest.mark.asyncio pytestmark = pytest.mark.asyncio
@@ -178,7 +179,9 @@ class TestCompactionEdgeCases:
await compaction_service.append_event(session, e) await compaction_service.append_event(session, e)
# Trigger compaction manually even though threshold wouldn't fire # Trigger compaction manually even though threshold wouldn't fire
await compaction_service._compact_session(session) events_ref = compaction_service._events_col(app_name, user_id, session.id)
session_ref = compaction_service._session_ref(app_name, user_id, session.id)
await compaction_service._compactor._compact_session(session, events_ref, session_ref)
mock_genai_client.aio.models.generate_content.assert_not_called() mock_genai_client.aio.models.generate_content.assert_not_called()
@@ -205,7 +208,9 @@ class TestCompactionEdgeCases:
) )
# Should not raise # Should not raise
await compaction_service._compact_session(session) events_ref = compaction_service._events_col(app_name, user_id, session.id)
session_ref = compaction_service._session_ref(app_name, user_id, session.id)
await compaction_service._compactor._compact_session(session, events_ref, session_ref)
# All events should still be present # All events should still be present
fetched = await compaction_service.get_session( fetched = await compaction_service.get_session(
@@ -268,7 +273,7 @@ class TestEventsToText:
invocation_id="inv-2", invocation_id="inv-2",
), ),
] ]
text = FirestoreSessionService._events_to_text(events) text = SessionCompactor._events_to_text(events)
assert "User: Hi there" in text assert "User: Hi there" in text
assert "Assistant: Hello!" in text assert "Assistant: Hello!" in text
@@ -280,7 +285,7 @@ class TestEventsToText:
invocation_id="inv-1", invocation_id="inv-1",
), ),
] ]
text = FirestoreSessionService._events_to_text(events) text = SessionCompactor._events_to_text(events)
assert text == "" assert text == ""
@@ -368,11 +373,15 @@ class TestGuardedCompact:
# Hold the in-process lock so _guarded_compact skips # Hold the in-process lock so _guarded_compact skips
key = f"{app_name}__{user_id}__{session.id}" key = f"{app_name}__{user_id}__{session.id}"
lock = compaction_service._compaction_locks.setdefault( lock = compaction_service._compactor._compaction_locks.setdefault(
key, asyncio.Lock() key, asyncio.Lock()
) )
events_ref = compaction_service._events_col(app_name, user_id, session.id)
session_ref = compaction_service._session_ref(app_name, user_id, session.id)
async with lock: async with lock:
await compaction_service._guarded_compact(session) await compaction_service._compactor.guarded_compact(
session, events_ref, session_ref
)
mock_genai_client.aio.models.generate_content.assert_not_called() mock_genai_client.aio.models.generate_content.assert_not_called()
@@ -399,7 +408,10 @@ class TestGuardedCompact:
) )
await session_ref.update({"compaction_lock": time.time()}) await session_ref.update({"compaction_lock": time.time()})
await compaction_service._guarded_compact(session) events_ref = compaction_service._events_col(app_name, user_id, session.id)
await compaction_service._compactor.guarded_compact(
session, events_ref, session_ref
)
mock_genai_client.aio.models.generate_content.assert_not_called() mock_genai_client.aio.models.generate_content.assert_not_called()
@@ -411,10 +423,18 @@ class TestGuardedCompact:
) )
with patch( with patch(
"va_agent.session._try_claim_compaction_txn", "va_agent.compaction._try_claim_compaction_txn",
side_effect=RuntimeError("Firestore down"), side_effect=RuntimeError("Firestore down"),
): ):
await compaction_service._guarded_compact(session) events_ref = compaction_service._events_col(
app_name, user_id, session.id
)
session_ref = compaction_service._session_ref(
app_name, user_id, session.id
)
await compaction_service._compactor.guarded_compact(
session, events_ref, session_ref
)
mock_genai_client.aio.models.generate_content.assert_not_called() mock_genai_client.aio.models.generate_content.assert_not_called()
@@ -427,11 +447,19 @@ class TestGuardedCompact:
# Make _compact_session raise an unhandled exception # Make _compact_session raise an unhandled exception
with patch.object( with patch.object(
compaction_service, compaction_service._compactor,
"_compact_session", "_compact_session",
side_effect=RuntimeError("unexpected crash"), side_effect=RuntimeError("unexpected crash"),
): ):
await compaction_service._guarded_compact(session) events_ref = compaction_service._events_col(
app_name, user_id, session.id
)
session_ref = compaction_service._session_ref(
app_name, user_id, session.id
)
await compaction_service._compactor.guarded_compact(
session, events_ref, session_ref
)
# Lock should be released even after failure # Lock should be released even after failure
session_ref = compaction_service._session_ref( session_ref = compaction_service._session_ref(
@@ -467,7 +495,11 @@ class TestGuardedCompact:
side_effect=patched_session_ref, side_effect=patched_session_ref,
): ):
# Should not raise despite lock release failure # Should not raise despite lock release failure
await compaction_service._guarded_compact(session) events_ref = compaction_service._events_col(app_name, user_id, session.id)
session_ref = compaction_service._session_ref(app_name, user_id, session.id)
await compaction_service._compactor.guarded_compact(
session, events_ref, session_ref
)
# ------------------------------------------------------------------ # ------------------------------------------------------------------