Skip to content

Commit 8fc01a4

Browse files
korbonitsclaude
authored andcommitted
test: expand MilvusOnlineStore integration test coverage
Adds three cases to test_retrieve_online_milvus_documents that exercise code paths adjacent to recent MilvusOnlineStore bug fixes (#6275): 1. Empty-store query before any writes — verifies the v2 retrieval path returns 0 rows instead of raising when the collection exists but is empty. 2. Oversized top_k (top_k=5 on a 3-row dataset) — verifies the hit-parsing loop handles a result set smaller than the requested top_k and returns all available rows. 3. Cosine-metric variant via a second FeatureView with vector_search_metric="COSINE" — verifies the cosine index path end to end (write, index creation, retrieval). No new imports; all types were already imported in the module. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Signed-off-by: Alex Korbonits <alex@korbonits.com>
1 parent 92ffbb9 commit 8fc01a4

1 file changed

Lines changed: 63 additions & 5 deletions

File tree

sdk/python/tests/integration/online_store/test_universal_online.py

Lines changed: 63 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -921,13 +921,27 @@ def test_retrieve_online_milvus_documents(environment, fake_document_data):
921921
df, data_source = fake_document_data
922922
item_embeddings_feature_view = create_item_embeddings_feature_view(data_source)
923923
fs.apply([item_embeddings_feature_view, item()])
924+
925+
features = [
926+
"item_embeddings:embedding_float",
927+
"item_embeddings:item_id",
928+
"item_embeddings:string_feature",
929+
]
930+
931+
# Empty-store query: collection exists but has no rows yet.
932+
empty = fs.retrieve_online_documents_v2(
933+
features=features,
934+
query=[1.0, 2.0],
935+
top_k=2,
936+
distance_metric="L2",
937+
).to_dict()
938+
assert len(empty["embedding_float"]) == 0
939+
assert len(empty["item_id"]) == 0
940+
924941
fs.write_to_online_store("item_embeddings", df)
942+
925943
documents = fs.retrieve_online_documents_v2(
926-
features=[
927-
"item_embeddings:embedding_float",
928-
"item_embeddings:item_id",
929-
"item_embeddings:string_feature",
930-
],
944+
features=features,
931945
query=[1.0, 2.0],
932946
top_k=2,
933947
distance_metric="L2",
@@ -948,6 +962,50 @@ def test_retrieve_online_milvus_documents(environment, fake_document_data):
948962
f"Integration test: embedding {i} has {len(embedding)} dimensions, expected {query_dim}"
949963
)
950964

965+
# Oversized top_k: dataset has 3 rows, request 5 -> expect 3 back.
966+
all_docs = fs.retrieve_online_documents_v2(
967+
features=features,
968+
query=[1.0, 2.0],
969+
top_k=5,
970+
distance_metric="L2",
971+
).to_dict()
972+
assert len(all_docs["embedding_float"]) == 3
973+
assert sorted(all_docs["item_id"]) == [1, 2, 3]
974+
975+
# Cosine-metric variant: separate FV so the Milvus collection is created
976+
# with COSINE as its index metric.
977+
cosine_fv = FeatureView(
978+
name="item_embeddings_cosine",
979+
entities=[item()],
980+
schema=[
981+
Field(
982+
name="embedding_float",
983+
dtype=Array(Float32),
984+
vector_index=True,
985+
vector_search_metric="COSINE",
986+
),
987+
Field(name="string_feature", dtype=String),
988+
Field(name="float_feature", dtype=Float32),
989+
],
990+
source=data_source,
991+
ttl=timedelta(hours=2),
992+
)
993+
fs.apply([cosine_fv])
994+
fs.write_to_online_store("item_embeddings_cosine", df)
995+
996+
cosine_docs = fs.retrieve_online_documents_v2(
997+
features=[
998+
"item_embeddings_cosine:embedding_float",
999+
"item_embeddings_cosine:item_id",
1000+
"item_embeddings_cosine:string_feature",
1001+
],
1002+
query=[1.0, 2.0],
1003+
top_k=2,
1004+
distance_metric="COSINE",
1005+
).to_dict()
1006+
assert len(cosine_docs["embedding_float"]) == 2
1007+
assert len(cosine_docs["item_id"]) == 2
1008+
9511009

9521010
@pytest.mark.integration
9531011
@pytest.mark.universal_online_stores(only=["milvus"])

0 commit comments

Comments
 (0)