30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
from deerflow.agents.memory.thread_storage import SqliteThreadMemoryStorage
|
|
|
|
|
|
def _payload():
|
|
return {
|
|
"ownerId": None,
|
|
"profile": {"name": "A", "role": None, "expertise": [], "language": None, "context": None},
|
|
"preferences": {"tone": None, "verbosity": None, "codeStyle": None, "other": None},
|
|
"facts": [],
|
|
}
|
|
|
|
|
|
def test_sqlite_thread_memory_compare_and_swap(tmp_path):
|
|
storage = SqliteThreadMemoryStorage(str(tmp_path / "thread-memory.db"))
|
|
thread_id = "thread-1"
|
|
|
|
assert storage.save(thread_id, _payload(), expected_version=0) is True
|
|
loaded = storage.load(thread_id)
|
|
assert loaded is not None
|
|
assert loaded["memoryVersion"] == 0
|
|
|
|
# wrong expected version should fail
|
|
assert storage.save(thread_id, _payload(), expected_version=9) is False
|
|
# correct version should pass and increment
|
|
assert storage.save(thread_id, _payload(), expected_version=0) is True
|
|
loaded2 = storage.load(thread_id)
|
|
assert loaded2 is not None
|
|
assert loaded2["memoryVersion"] == 1
|
|
|