33This script tests the unified VectorEngine interface across different databases.
44"""
55
6+ import time
7+
68from dotenv import load_dotenv
79
810from crossvector import Document , SearchRequest , UpsertRequest , VectorEngine
3638]
3739
3840
39- def test_engine (db_name : str , db_adapter , embedding_adapter , collection_name : str , is_pgvector : bool = False ):
41+ def test_engine (db_name : str , db_adapter , embedding_adapter , collection_name : str ):
4042 """Test VectorEngine with a specific database adapter."""
4143 print (f"\n { '=' * 80 } " )
4244 print (f"Testing { db_name } with { embedding_adapter .model_name } " )
4345 print (f"{ '=' * 80 } " )
4446
45- # Initialize engine (PGVector uses table_name instead of collection_name)
46- if is_pgvector :
47- engine = VectorEngine (embedding_adapter = embedding_adapter , db_adapter = db_adapter , table_name = collection_name )
48- else :
49- engine = VectorEngine (
50- embedding_adapter = embedding_adapter , db_adapter = db_adapter , collection_name = collection_name
51- )
47+ engine = VectorEngine (embedding_adapter = embedding_adapter , db_adapter = db_adapter , collection_name = collection_name )
5248
5349 # Clean up existing data (if collection exists, drop it)
5450 try :
55- if hasattr ( db_adapter , "db" ) and collection_name in db_adapter . db . list_collection_names ():
56- db_adapter . db . drop_collection ( collection_name )
57- print (f"✓ Dropped existing collection '{ collection_name } '" )
51+ engine . drop_collection ( collection_name )
52+ time . sleep ( 1 )
53+ print (f"Dropped existing collection '{ collection_name } '" )
5854 except Exception as e :
5955 print (f"Note: Could not drop collection (may not exist): { e } " )
6056
6157 # Re-initialize after dropping
62- if is_pgvector :
63- engine = VectorEngine (embedding_adapter = embedding_adapter , db_adapter = db_adapter , table_name = collection_name )
64- else :
65- engine = VectorEngine (
66- embedding_adapter = embedding_adapter , db_adapter = db_adapter , collection_name = collection_name
67- )
58+ engine = VectorEngine (embedding_adapter = embedding_adapter , db_adapter = db_adapter , collection_name = collection_name )
6859
6960 # Test 1: Upsert documents
7061 print ("\n 1. Testing upsert..." )
7162 result = engine .upsert (UpsertRequest (documents = test_docs ))
72- print (f"✓ Inserted { result ['count' ]} documents" )
63+ print (f"Inserted { result ['count' ]} documents" )
7364
7465 # Test 2: Count documents
7566 print ("\n 2. Testing count..." )
7667 count = engine .count ()
77- print (f"✓ Total documents: { count } " )
68+ print (f"Total documents: { count } " )
7869 assert count == len (test_docs ), f"Expected { len (test_docs )} documents, got { count } "
7970
8071 # Test 3: Get document by ID
8172 print ("\n 3. Testing get..." )
8273 doc = engine .get ("doc1" )
83- print (f"✓ Retrieved document: { doc .get ('text' , 'N/A' )[:50 ]} ..." )
74+ print (f"Retrieved document: { doc .get ('text' , 'N/A' )[:50 ]} ..." )
8475 assert doc is not None , "Document not found"
8576
8677 # Test 4: Search
8778 print ("\n 4. Testing search..." )
8879 results = engine .search (SearchRequest (query = "AI and machine learning" , limit = 2 ))
89- print (f"✓ Found { len (results )} results" )
80+ print (f"Found { len (results )} results" )
9081 for i , result in enumerate (results , 1 ):
9182 score = result .get ("score" , "N/A" )
9283 text = result .get ("text" , "N/A" )
@@ -100,26 +91,26 @@ def test_engine(db_name: str, db_adapter, embedding_adapter, collection_name: st
10091 # Test 5: Delete one
10192 print ("\n 5. Testing delete_one..." )
10293 deleted = engine .delete_one ("doc1" )
103- print (f"✓ Deleted { deleted } document(s)" )
94+ print (f"Deleted { deleted } document(s)" )
10495
10596 # Verify deletion
10697 count_after_delete = engine .count ()
107- print (f"✓ Documents after deletion: { count_after_delete } " )
98+ print (f"Documents after deletion: { count_after_delete } " )
10899 assert count_after_delete == len (test_docs ) - 1 , (
109100 f"Expected { len (test_docs ) - 1 } documents, got { count_after_delete } "
110101 )
111102
112103 # Test 6: Delete many
113104 print ("\n 6. Testing delete_many..." )
114105 deleted = engine .delete_many (["doc2" , "doc3" ])
115- print (f"✓ Deleted { deleted } document(s)" )
106+ print (f"Deleted { deleted } document(s)" )
116107
117108 # Verify all deleted
118109 final_count = engine .count ()
119- print (f"✓ Final document count: { final_count } " )
110+ print (f"Final document count: { final_count } " )
120111 assert final_count == 0 , f"Expected 0 documents, got { final_count } "
121112
122- print (f"\n ✅ All tests passed for { db_name } !" )
113+ print (f"\n All tests passed for { db_name } !" )
123114
124115
125116def main ():
@@ -134,25 +125,25 @@ def main():
134125 try :
135126 test_engine ("AstraDB" , AstraDBAdapter (), openai_embedder , "test_crossvector_integration" )
136127 except Exception as e :
137- print (f"\n ❌ AstraDB test failed: { e } " )
128+ print (f"\n AstraDB test failed: { e } " )
138129
139130 # Test ChromaDB
140131 try :
141132 test_engine ("ChromaDB Cloud" , ChromaDBAdapter (), openai_embedder , "test_crossvector_integration" )
142133 except Exception as e :
143- print (f"\n ❌ ChromaDB test failed: { e } " )
134+ print (f"\n ChromaDB test failed: { e } " )
144135
145136 # Test Milvus
146137 try :
147138 test_engine ("Milvus" , MilvusDBAdapter (), openai_embedder , "test_crossvector_integration" )
148139 except Exception as e :
149- print (f"\n ❌ Milvus test failed: { e } " )
140+ print (f"\n Milvus test failed: { e } " )
150141
151142 # Test PGVector (if available)
152143 try :
153- test_engine ("PGVector" , PGVectorAdapter (), openai_embedder , "test_crossvector_integration" , is_pgvector = True )
144+ test_engine ("PGVector" , PGVectorAdapter (), openai_embedder , "test_crossvector_integration" )
154145 except Exception as e :
155- print (f"\n ❌ PGVector test failed: { e } " )
146+ print (f"\n PGVector test failed: { e } " )
156147
157148 # Test with Gemini embeddings (optional)
158149 try :
@@ -163,7 +154,7 @@ def main():
163154
164155 test_engine ("AstraDB with Gemini" , AstraDBAdapter (), gemini_embedder , "test_crossvector_gemini" )
165156 except Exception as e :
166- print (f"\n ❌ Gemini embedding test failed: { e } " )
157+ print (f"\n Gemini embedding test failed: { e } " )
167158
168159 print ("\n " + "=" * 80 )
169160 print ("Integration tests completed!" )
0 commit comments