Skip to content

Commit

Permalink
improve: Improved test_facet
Browse files Browse the repository at this point in the history
  • Loading branch information
hh-space-invader committed Mar 11, 2025
1 parent be8c380 commit 38cfcf5
Show file tree
Hide file tree
Showing 7 changed files with 179 additions and 148 deletions.
14 changes: 11 additions & 3 deletions tests/congruence_tests/conftest.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import uuid
import pytest

from qdrant_client import QdrantClient
from tests.congruence_tests.test_common import (
delete_fixture_collection,
init_local,
init_remote,
initialize_fixture_collection,
)


Expand All @@ -22,14 +22,22 @@ def prefer_grpc() -> bool:
@pytest.fixture(scope="session")
def local_client(storage: str) -> QdrantClient:
client: QdrantClient = init_local(storage=storage)
# initialize_fixture_collection(client)
yield client
delete_fixture_collection(client)


@pytest.fixture(scope="session")
def remote_client(prefer_grpc: bool) -> QdrantClient:
client: QdrantClient = init_remote(prefer_grpc=prefer_grpc)
# initialize_fixture_collection(client)
yield client
delete_fixture_collection(client)


@pytest.fixture(scope="session")
def collection_name() -> str:
return f"collection_1_{uuid.uuid4().hex}"


@pytest.fixture(scope="session")
def secondary_collection_name() -> str:
return f"collection_2_{uuid.uuid4().hex}"
5 changes: 1 addition & 4 deletions tests/congruence_tests/test_aliases.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import uuid

from qdrant_client.client_base import QdrantBase
from qdrant_client.http import models
from tests.congruence_tests.test_common import (
Expand All @@ -25,12 +23,11 @@ def list_collection_aliases(
return sorted(aliases.aliases, key=lambda x: x.alias_name)


def test_alias_changes(local_client: QdrantBase, remote_client: QdrantBase):
def test_alias_changes(local_client: QdrantBase, remote_client: QdrantBase, collection_name: str):
fixture_points = generate_fixtures(10)

retriever = TestAliasRetriever()

collection_name = f"{COLLECTION_NAME}_{uuid.uuid4().hex}"
init_client(local_client, fixture_points, collection_name)
init_client(remote_client, fixture_points, collection_name)

Expand Down
29 changes: 9 additions & 20 deletions tests/congruence_tests/test_collections.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import uuid
from time import sleep
from typing import Callable, Any

Expand All @@ -13,16 +12,13 @@
)


COLLECTION_NAME = "test_collection"


def test_get_collection():
def test_get_collection(collection_name: str):
# when running tests in parallel, it will fail because other tests create collections
# and the length of collections will be different
wait_for(test_recreate_collection)
wait_for(test_collection_exists)
wait_for(test_init_from)
wait_for(test_config_variations)
wait_for(test_recreate_collection, collection_name)
wait_for(test_collection_exists, collection_name)
wait_for(test_init_from, collection_name)
wait_for(test_config_variations, collection_name)

fixture_points = generate_fixtures()

Expand All @@ -33,10 +29,8 @@ def test_get_collection():
for collection in remote_collections.collections:
remote_client.delete_collection(collection.name)

collection_name = f"{COLLECTION_NAME}_{uuid.uuid4().hex}"
local_client = init_local()
init_client(local_client, fixture_points, collection_name)

init_client(remote_client, fixture_points, collection_name)

local_collections = local_client.get_collections()
Expand All @@ -61,15 +55,14 @@ def test_get_collection():
)


def test_recreate_collection():
def test_recreate_collection(collection_name: str):
# this method has been marked as deprecated and should be removed in qdrant-client v1.12
local_client = init_local()
http_client = init_remote()
grpc_client = init_remote(prefer_grpc=True)

vector_params = models.VectorParams(size=20, distance=models.Distance.COSINE)

collection_name = f"{COLLECTION_NAME}_{uuid.uuid4().hex}"
local_client.recreate_collection(collection_name, vectors_config=vector_params)
http_client.recreate_collection(collection_name, vectors_config=vector_params)

Expand All @@ -81,11 +74,10 @@ def test_recreate_collection():
assert grpc_client.collection_exists(collection_name)


def test_collection_exists():
def test_collection_exists(collection_name: str):
remote_client = init_remote()
local_client = init_local()

collection_name = f"{COLLECTION_NAME}_{uuid.uuid4().hex}"
assert not remote_client.collection_exists(collection_name + "_not_exists")
assert not local_client.collection_exists(collection_name + "_not_exists")

Expand All @@ -109,7 +101,7 @@ def test_collection_exists():
assert local_client.collection_exists(collection_name)


def test_init_from():
def test_init_from(collection_name: str):
vector_size = 2

remote_client = init_remote()
Expand All @@ -118,7 +110,6 @@ def test_init_from():
points = generate_fixtures(vectors_sizes=vector_size)
vector_params = models.VectorParams(size=vector_size, distance=models.Distance.COSINE)

collection_name = f"{COLLECTION_NAME}_{uuid.uuid4().hex}"
if remote_client.collection_exists(collection_name):
remote_client.delete_collection(collection_name=collection_name)
remote_client.create_collection(collection_name=collection_name, vectors_config=vector_params)
Expand Down Expand Up @@ -179,9 +170,7 @@ def test_init_from():
)


def test_config_variations():
collection_name = f"{COLLECTION_NAME}_{uuid.uuid4().hex}"

def test_config_variations(collection_name: str):
def check_variation(vectors_config, sparse_vectors_config):
if remote_client.collection_exists(collection_name):
remote_client.delete_collection(collection_name)
Expand Down
12 changes: 4 additions & 8 deletions tests/congruence_tests/test_count.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import uuid

from qdrant_client.client_base import QdrantBase
from qdrant_client.http import models
from tests.congruence_tests.test_common import (
Expand All @@ -8,8 +6,6 @@
generate_fixtures,
generate_sparse_fixtures,
init_client,
init_local,
init_remote,
sparse_vectors_config,
)
from tests.fixtures.filters import one_random_filter_please
Expand All @@ -31,10 +27,9 @@ def filter_count(
).count


def test_simple_count(local_client: QdrantBase, remote_client: QdrantBase):
def test_simple_count(local_client: QdrantBase, remote_client: QdrantBase, collection_name: str):
fixture_points = generate_fixtures()

collection_name = f"{COLLECTION_NAME}_{uuid.uuid4().hex}"
init_client(local_client, fixture_points, collection_name)
init_client(remote_client, fixture_points, collection_name)

Expand All @@ -55,10 +50,11 @@ def test_simple_count(local_client: QdrantBase, remote_client: QdrantBase):
raise e


def test_simple_sparse_search(local_client: QdrantBase, remote_client: QdrantBase):
def test_simple_sparse_search(
local_client: QdrantBase, remote_client: QdrantBase, collection_name: str
):
fixture_points = generate_sparse_fixtures()

collection_name = f"{COLLECTION_NAME}_{uuid.uuid4().hex}"
init_client(
local_client, fixture_points, collection_name, sparse_vectors_config=sparse_vectors_config
)
Expand Down
8 changes: 4 additions & 4 deletions tests/congruence_tests/test_delete_points.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,10 @@
)


def test_delete_points(local_client: QdrantBase, remote_client: QdrantBase):
def test_delete_points(local_client: QdrantBase, remote_client: QdrantBase, collection_name: str):
points = generate_fixtures(100)
vector = points[0].vector["image"]

collection_name = f"{COLLECTION_NAME}_{uuid.uuid4().hex}"
initialize_fixture_collection(local_client, collection_name)
initialize_fixture_collection(remote_client, collection_name)
local_client.upload_points(collection_name, points)
Expand Down Expand Up @@ -65,11 +64,12 @@ def test_delete_points(local_client: QdrantBase, remote_client: QdrantBase):
)


def test_delete_sparse_points(local_client: QdrantBase, remote_client: QdrantBase):
def test_delete_sparse_points(
local_client: QdrantBase, remote_client: QdrantBase, collection_name: str
):
points = generate_sparse_fixtures(100)
vector = points[0].vector["sparse-image"]

collection_name = f"{COLLECTION_NAME}_{uuid.uuid4().hex}"
init_client(local_client, [], collection_name, sparse_vectors_config=sparse_vectors_config)
init_client(remote_client, [], collection_name, sparse_vectors_config=sparse_vectors_config)

Expand Down
Loading

0 comments on commit 38cfcf5

Please sign in to comment.