def test_memmap_save_reload(tmpdir): docs = list(random_docs(100)) dam = DocumentArrayMemmap(tmpdir, buffer_pool_size=100) dam.extend(docs) dam1 = DocumentArrayMemmap(tmpdir) for doc in docs: doc.content = 'new' for doc in dam: # from memory assert doc.content == 'new' # from disk assert dam._get_doc_by_key(doc.id).content == 'hello world' # dam1 from disk (empty memory buffer + dam not persisted) for doc in dam1: assert doc.content == 'hello world' dam.flush() dam1.reload() # dam from disk for doc in dam: assert dam._get_doc_by_key(doc.id).content == 'new' # dam1 up-to-date for doc in dam1: assert doc.content == 'new'
def test_persist(tmpdir): dam = DocumentArrayMemmap(tmpdir) docs = list(random_docs(100)) for doc in docs: doc.scores['score'] = 50 doc.evaluations['eval'] = 100 dam.extend(docs) dam2 = DocumentArrayMemmap(tmpdir) assert len(dam2) == 100 assert dam == dam2 for d1, d2 in zip(dam, dam2): assert d1.proto == d2.proto assert '1' in dam del dam['1'] assert len(dam2) == 100 dam2.reload() assert len(dam2) == 99 for doc2 in dam2: assert doc2.scores['score'].value == 50 assert doc2.evaluations['eval'].value == 100 dam.clear() assert len(dam2) == 99 dam2.reload() assert len(dam2) == 0