import pathlib import tempfile from agentmsgs.stores.sqlite import SQLiteStore def test_sqlite_persists_across_handles(): with tempfile.TemporaryDirectory() as d: p = pathlib.Path(d) / "test.db" s1 = SQLiteStore(p) try: a = s1.get_or_create_agent("Alice") b = s1.get_or_create_agent("Bob") t = s1.create_thread({a, b}) s1.append_message(t.id, a, "hi") # new handle same file s2 = SQLiteStore(p) try: a2 = s2.get_agent_by_name("Alice") assert a2 is not None assert a2.id == a.id assert len(s2.list_messages(t.id)) == 1 assert s2.find_threads({a})[0].id == t.id finally: s2.close() finally: s1.close() def test_sqlite_concurrent_append(): import pathlib import tempfile from agentmsgs.stores.sqlite import SQLiteStore with tempfile.TemporaryDirectory() as d: p = pathlib.Path(d) / "c.db" s1 = SQLiteStore(p) s2 = SQLiteStore(p) try: a = s1.get_or_create_agent("A") b = s1.get_or_create_agent("B") # s2 sees same agents via file a2 = s2.get_agent_by_name("A") b2 = s2.get_agent_by_name("B") assert a2 is not None assert b2 is not None assert a.id == a2.id assert b.id == b2.id t = s1.create_thread({a, b}) s1.append_message(t.id, a, "from s1") s2.append_message(t.id, b2, "from s2") assert len(s1.list_messages(t.id)) == 2 # verify seq uniqueness and monotonicity msgs = s1.list_messages(t.id) seqs = [m.seq for m in msgs] assert seqs == [1, 2] assert len(set(seqs)) == 2 finally: s2.close() s1.close()