diff --git a/tests/unit/array/mixins/test_content.py b/tests/unit/array/mixins/test_content.py index ea4535c9d00..3758df40f5e 100644 --- a/tests/unit/array/mixins/test_content.py +++ b/tests/unit/array/mixins/test_content.py @@ -40,6 +40,9 @@ def test_content_empty_getter_return_none(cls, content_attr, start_storage): da = cls() assert getattr(da, content_attr) is None + if cls == DocumentArrayAnnlite: + da._annlite.close() + @pytest.mark.parametrize( 'cls', @@ -77,6 +80,9 @@ def test_content_empty_setter(cls, content_attr, start_storage): setattr(da, content_attr[0], content_attr[1]) assert getattr(da, content_attr[0]) is None + if cls == DocumentArrayAnnlite: + da._annlite.close() + @pytest.mark.parametrize( 'cls,config', @@ -111,6 +117,9 @@ def test_content_getter_setter(cls, content_attr, config, start_storage): da.contents = None assert da.contents is None + if cls == DocumentArrayAnnlite: + da._annlite.close() + @pytest.mark.parametrize('da_len', [0, 1, 2]) @pytest.mark.parametrize( @@ -149,6 +158,9 @@ def test_content_empty(da_len, da_cls, config, start_storage): assert not da.tensors assert da.blobs == [b''] * da_len + if da_cls == DocumentArrayAnnlite: + da._annlite.close() + @pytest.mark.parametrize('da_len', [0, 1, 2]) @pytest.mark.parametrize( @@ -171,3 +183,6 @@ def test_embeddings_setter(da_len, da_cls, config, start_storage): da.embeddings = np.random.rand(da_len, 5) for doc in da: assert doc.embedding.shape == (5,) + + if da_cls == DocumentArrayAnnlite: + da._annlite.close() diff --git a/tests/unit/array/mixins/test_empty.py b/tests/unit/array/mixins/test_empty.py index 0ba3da06e93..ea58b0769be 100644 --- a/tests/unit/array/mixins/test_empty.py +++ b/tests/unit/array/mixins/test_empty.py @@ -33,6 +33,9 @@ def test_empty_non_zero(da_cls, config, start_storage): assert len(da) == 0 + if da_cls == DocumentArrayAnnlite: + da._annlite.close() + # Assert .empty provides a da of the correct length if config: da = da_cls.empty(10, config=config) diff --git a/tests/unit/array/mixins/test_io.py b/tests/unit/array/mixins/test_io.py index e51b16f628c..514791b49c6 100644 --- a/tests/unit/array/mixins/test_io.py +++ b/tests/unit/array/mixins/test_io.py @@ -43,20 +43,31 @@ def test_document_save_load( ): tmp_file = os.path.join(tmp_path, 'test') da = da_cls(docs, config=config()) + da.insert(2, Document(id='new')) da.save(tmp_file, file_format=method, encoding=encoding) + da_info = { + 'id': [d.id for d in da], + 'embedding': [d.embedding for d in da], + 'content': [d.content for d in da], + } + + if da_cls == DocumentArrayAnnlite: + da._annlite.close() + da_r = type(da).load( tmp_file, file_format=method, encoding=encoding, config=config() ) assert type(da) is type(da_r) - assert len(da) == len(da_r) + assert len(da) == len(da_info['id']) assert da_r[2].id == 'new' - for d, d_r in zip(da, da_r): - assert d.id == d_r.id - np.testing.assert_equal(d.embedding, d_r.embedding) - assert d.content == d_r.content + + for idx, d_r in enumerate(da_r): + assert da_info['id'][idx] == d_r.id + np.testing.assert_equal(da_info['embedding'][idx], d_r.embedding) + assert da_info['content'][idx] == d_r.content @pytest.mark.parametrize('flatten_tags', [True, False]) @@ -200,13 +211,24 @@ def test_from_to_pd_dataframe(da_cls, config, start_storage): ) def test_from_to_bytes(da_cls, config, start_storage): # simple - assert len(da_cls.load_binary(bytes(da_cls.empty(2, config=config)))) == 2 + if da_cls == DocumentArrayAnnlite: + da = da_cls.empty(2, config=config) + da_bytes = da.to_bytes() + da._annlite.close() + + db = da_cls.from_bytes(da_bytes, config=config) + assert len(db) == 2 + db._annlite.close() + else: + assert len(da_cls.load_binary(bytes(da_cls.empty(2, config=config)))) == 2 da = da_cls.empty(2, config=config) da[:, 'embedding'] = [[1, 2, 3], [4, 5, 6]] da[:, 'tensor'] = [[1, 2], [2, 1]] da[0, 'tags'] = {'hello': 'world'} + if da_cls == DocumentArrayAnnlite: + da._annlite.close() da2 = da_cls.load_binary(bytes(da)) assert da2.tensors == [[1, 2], [2, 1]] import numpy as np diff --git a/tests/unit/array/mixins/test_plot.py b/tests/unit/array/mixins/test_plot.py index 858cd082630..a6020810d79 100644 --- a/tests/unit/array/mixins/test_plot.py +++ b/tests/unit/array/mixins/test_plot.py @@ -24,8 +24,7 @@ [ (DocumentArray, None), (DocumentArraySqlite, None), - # TODO: restore this after annlite issue is fixed in #622 - # (DocumentArrayAnnlite, AnnliteConfig(n_dim=128)), + (DocumentArrayAnnlite, AnnliteConfig(n_dim=128)), # (DocumentArrayWeaviate, WeaviateConfig(n_dim=128)), (DocumentArrayQdrant, QdrantConfig(n_dim=128, scroll_batch_size=8)), (DocumentArrayElastic, ElasticConfig(n_dim=128)), @@ -57,6 +56,9 @@ def test_sprite_fail_tensor_success_uri( da.save_gif(tmpdir / 'sprint_da.gif', show_index=show_index, channel_axis=0) assert os.path.exists(tmpdir / 'sprint_da.png') + if da_cls == DocumentArrayAnnlite: + da._annlite.close() + @pytest.mark.parametrize('image_source', ['tensor', 'uri']) @pytest.mark.parametrize( diff --git a/tests/unit/array/mixins/test_text.py b/tests/unit/array/mixins/test_text.py index 0f7481a7e0d..312bd715c71 100644 --- a/tests/unit/array/mixins/test_text.py +++ b/tests/unit/array/mixins/test_text.py @@ -50,6 +50,9 @@ def test_da_vocabulary(da_cls, config, docs, min_freq, start_storage): assert not vocab.values() assert not vocab.keys() + if da_cls == DocumentArrayAnnlite: + da._annlite.close() + @pytest.mark.parametrize( 'da_cls,config', diff --git a/tests/unit/array/test_advance_indexing.py b/tests/unit/array/test_advance_indexing.py index 666ae8596b9..7b0038621cf 100644 --- a/tests/unit/array/test_advance_indexing.py +++ b/tests/unit/array/test_advance_indexing.py @@ -239,6 +239,9 @@ def test_sequence_int(docs, nparray, storage, config, start_storage): assert docs[5].text == 'new' assert docs[9].text == 'new' + if storage == 'annlite': + docs._annlite.close() + @pytest.mark.parametrize( 'storage,config', @@ -705,16 +708,23 @@ def test_offset2ids_persistence(storage, config, start_storage): assert da_ids == [str(i) for i in range(5)] da.sync() + if storage == 'annlite': + da._annlite.close() + da1 = DocumentArray(storage=storage, config=config) assert da1[:, 'id'] == da_ids with da1: da1.extend([Document(id=i) for i in 'abc']) + da1_ids = da1[:, 'id'] assert len(da1) == 8 + if storage == 'annlite': + da1._annlite.close() + da2 = DocumentArray(storage=storage, config=config) - assert da2[:, 'id'] == da1[:, 'id'] + assert da2[:, 'id'] == da1_ids def test_dam_conflicting_ids(): diff --git a/tests/unit/array/test_construct.py b/tests/unit/array/test_construct.py index 251e8459b16..592975db5c3 100644 --- a/tests/unit/array/test_construct.py +++ b/tests/unit/array/test_construct.py @@ -28,33 +28,53 @@ def test_construct_docarray(da_cls, config, start_storage): if config: da = da_cls(config=config) assert len(da) == 0 + if da_cls == DocumentArrayAnnlite: + da._annlite.close() da = da_cls(Document(), config=config) assert len(da) == 1 + if da_cls == DocumentArrayAnnlite: + da._annlite.close() da = da_cls([Document(), Document()], config=config) assert len(da) == 2 + if da_cls == DocumentArrayAnnlite: + da._annlite.close() da = da_cls((Document(), Document()), config=config) assert len(da) == 2 + if da_cls == DocumentArrayAnnlite: + da._annlite.close() da = da_cls((Document() for _ in range(10)), config=config) assert len(da) == 10 + if da_cls == DocumentArrayAnnlite: + da._annlite.close() else: da = da_cls() assert len(da) == 0 + if da_cls == DocumentArrayAnnlite: + da._annlite.close() da = da_cls(Document()) assert len(da) == 1 + if da_cls == DocumentArrayAnnlite: + da._annlite.close() da = da_cls([Document(), Document()]) assert len(da) == 2 + if da_cls == DocumentArrayAnnlite: + da._annlite.close() da = da_cls((Document(), Document())) assert len(da) == 2 + if da_cls == DocumentArrayAnnlite: + da._annlite.close() da = da_cls((Document() for _ in range(10))) assert len(da) == 10 + if da_cls == DocumentArrayAnnlite: + da._annlite.close() if da_cls is DocumentArrayInMemory: da1 = da_cls(da) diff --git a/tests/unit/document/test_plot.py b/tests/unit/document/test_plot.py index c14d7bbc51c..be0aa719053 100644 --- a/tests/unit/document/test_plot.py +++ b/tests/unit/document/test_plot.py @@ -72,6 +72,9 @@ def test_matches_sprites( da[0].plot_matches_sprites(top_k, output=tmpdir / 'sprint_da.png') assert os.path.exists(tmpdir / 'sprint_da.png') + if da_cls == DocumentArrayAnnlite: + das._annlite.close() + @pytest.mark.parametrize('image_source', ['tensor', 'uri']) @pytest.mark.parametrize(