Files
LangBot/tests/unit_tests/persistence/test_conversation_page_index.py
T
BiFangKNT f12490bc73 perf(monitoring): load execution details on demand
- Load overview first and fetch secondary sections when expanded
- Add a covering index and select conversation IDs before loading page payloads
- Preserve full-detail API compatibility and add pagination and lazy-loading tests
2026-10-17 21:10:55 +08:00

43 lines
1.9 KiB
Python

"""Conversation paging index is safe for existing and fresh databases."""
import importlib
import sqlalchemy as sa
from alembic.migration import MigrationContext
from alembic.operations import Operations
from langbot.pkg.entity.persistence.monitoring import MonitoringMessage
def test_conversation_index_migration_preserves_history_and_matches_metadata():
migration = importlib.import_module('langbot.pkg.persistence.alembic.versions.0040_conversation_page_index')
engine = sa.create_engine('sqlite:///:memory:')
metadata = sa.MetaData()
table = sa.Table(
'monitoring_messages',
metadata,
*[
sa.Column(name, sa.String, primary_key=name == 'id')
for name in ('id', 'workspace_uuid', 'bot_id', 'session_id', 'timestamp', 'message_content')
],
)
sa.Index('existing_index', table.c.workspace_uuid)
try:
with engine.begin() as connection:
metadata.create_all(connection)
connection.execute(table.insert().values(id='history', message_content='inline media'))
with Operations.context(MigrationContext.configure(connection)):
migration.upgrade()
migration.upgrade()
indexes = {
index['name']: index['column_names'] for index in sa.inspect(connection).get_indexes(table.name)
}
expected = next(index for index in MonitoringMessage.__table__.indexes if index.name == migration.INDEX)
assert indexes[migration.INDEX] == [column.name for column in expected.columns]
migration.downgrade()
assert {index['name'] for index in sa.inspect(connection).get_indexes(table.name)} == {'existing_index'}
assert connection.scalar(sa.select(table.c.message_content)) == 'inline media'
migration.upgrade()
finally:
engine.dispose()