33# Skye End-to-End Test Script
44# =============================================================================
55# Tests the full Skye flow:
6- # 1. Health checks on all Skye services
6+ # 1. Health checks on all Skye services (admin, serving, qdrant, consumers)
77# 2. Register store, frequency, entity, model, variant via skye-admin
88# 3. Create Qdrant collection directly
99# 4. Insert test vectors into Qdrant
10- # 5. Query similar candidates via skye-serving (gRPC)
10+ # 5. Send 3 embedding events to Kafka (skye-consumers consume them)
11+ # 6. Verify Qdrant search
12+ # 7. Query similar candidates via skye-serving (gRPC)
1113# =============================================================================
1214
1315ADMIN_URL=" http://localhost:8092"
1416SERVING_URL=" localhost:8094"
1517QDRANT_URL=" http://localhost:6333"
18+ CONSUMERS_URL=" http://localhost:8093"
19+ BROKER_CONTAINER=" ${BROKER_CONTAINER:- broker} "
20+ SKYE_EMBEDDING_TOPIC=" ${SKYE_EMBEDDING_TOPIC:- skye.embedding} "
1621
1722GREEN=' \033[0;32m'
1823RED=' \033[0;31m'
@@ -52,6 +57,7 @@ info "Checking service health..."
5257curl -sf " ${ADMIN_URL} /health" > /dev/null && pass " skye-admin is healthy" || fail " skye-admin is not reachable at ${ADMIN_URL} "
5358curl -sf " http://${SERVING_URL} /health/self" > /dev/null && pass " skye-serving is healthy" || fail " skye-serving is not reachable at ${SERVING_URL} "
5459curl -sf " ${QDRANT_URL} /healthz" > /dev/null && pass " Qdrant is healthy" || fail " Qdrant is not reachable at ${QDRANT_URL} "
60+ curl -sf " ${CONSUMERS_URL} /health" > /dev/null && pass " skye-consumers is healthy" || fail " skye-consumers is not reachable at ${CONSUMERS_URL} "
5561
5662echo " "
5763
@@ -94,7 +100,7 @@ admin_post "Register model" "/api/v1/model/register-model" '{
94100 },
95101 "model_type": "RESET",
96102 "kafka_id": 0,
97- "training_data_path": "",
103+ "training_data_path": "gs://test ",
98104 "metadata": {
99105 "entity": "test-products",
100106 "key-type": "product_id"
@@ -114,8 +120,8 @@ admin_post "Register variant" "/api/v1/model/register-variant" '{
114120 "variant": "v1",
115121 "vector_db_type": "QDRANT",
116122 "vector_db_config": {
117- "read_host": "qdrant:6334 ",
118- "write_host": "qdrant:6334 ",
123+ "read_host": "172.18.0.3 ",
124+ "write_host": "172.18.0.3 ",
119125 "port": "6334",
120126 "http2config": {
121127 "deadline": 5000,
@@ -182,7 +188,31 @@ echo " Response: ${RESP}"
182188pass " Test vectors inserted (upserted)"
183189
184190# ---------------------------------------------------------------------------
185- # Step 8: Verify vectors via Qdrant search (sanity check)
191+ # Step 8: Send 3 embedding events to Kafka (skye-consumers will consume them)
192+ # ---------------------------------------------------------------------------
193+ info " Sending 3 embedding events to topic ${SKYE_EMBEDDING_TOPIC} ..."
194+ # Minimal valid event JSON (one line each) for entity=test-products, model=product-embeddings, vector_dim=4
195+ EVT1=' {"candidate_id":"1","entity":"test-products","model_name":"product-embeddings","environment":"local","embedding_store_version":1,"partition":"","index_space":{"embedding":[0.1,0.2,0.3,0.4],"variants_version_map":{"v1":1},"variants_index_map":{"v1":true},"operation":"ADD","payload":{"portfolio_id":"0"}},"search_space":{"embedding":[0.1,0.2,0.3,0.4]}}'
196+ EVT2=' {"candidate_id":"2","entity":"test-products","model_name":"product-embeddings","environment":"local","embedding_store_version":1,"partition":"","index_space":{"embedding":[0.2,0.3,0.4,0.5],"variants_version_map":{"v1":1},"variants_index_map":{"v1":true},"operation":"ADD","payload":{"portfolio_id":"0"}},"search_space":{"embedding":[0.2,0.3,0.4,0.5]}}'
197+ EVT3=' {"candidate_id":"3","entity":"test-products","model_name":"product-embeddings","environment":"local","embedding_store_version":1,"partition":"","index_space":{"embedding":[0.9,0.8,0.7,0.6],"variants_version_map":{"v1":1},"variants_index_map":{"v1":true},"operation":"ADD","payload":{"portfolio_id":"0"}},"search_space":{"embedding":[0.9,0.8,0.7,0.6]}}'
198+
199+ if docker exec -i " ${BROKER_CONTAINER} " /opt/kafka/bin/kafka-console-producer.sh --bootstrap-server broker:29092 --topic " ${SKYE_EMBEDDING_TOPIC} " 2> /dev/null << EOF
200+ ${EVT1}
201+ ${EVT2}
202+ ${EVT3}
203+ EOF
204+ then
205+ pass " Produced 3 messages to ${SKYE_EMBEDDING_TOPIC} "
206+ else
207+ fail " Failed to produce messages (is container ${BROKER_CONTAINER} running?)"
208+ fi
209+
210+ info " Waiting 5s for skye-consumers to process..."
211+ sleep 5
212+ pass " Check skye-consumers logs for 'Processing N embedding events' to confirm consumption"
213+
214+ # ---------------------------------------------------------------------------
215+ # Step 9: Verify vectors via Qdrant search (sanity check)
186216# ---------------------------------------------------------------------------
187217info " Verifying Qdrant search works..."
188218RESP=$( curl -s -X POST " ${QDRANT_URL} /collections/${COLLECTION_NAME} /points/search" \
@@ -196,11 +226,10 @@ echo " Response: ${RESP}"
196226pass " Qdrant search verified"
197227
198228# ---------------------------------------------------------------------------
199- # Step 9 : Query via skye-serving gRPC
229+ # Step 10 : Query via skye-serving gRPC
200230# ---------------------------------------------------------------------------
201231info " Querying similar candidates via skye-serving gRPC..."
202232
203- # Check if grpcurl is available
204233if command -v grpcurl & > /dev/null; then
205234 RESP=$( grpcurl -plaintext \
206235 -H " skye-caller-id: test-script" \
@@ -217,9 +246,7 @@ if command -v grpcurl &> /dev/null; then
217246 echo " Response: ${RESP} "
218247 pass " gRPC query completed"
219248else
220- echo -e " ${YELLOW} ⚠️ grpcurl not installed. Install it to test gRPC:${NC} "
221- echo " brew install grpcurl"
222- echo " "
249+ warn " grpcurl not installed. Install it to test gRPC: brew install grpcurl"
223250 echo " Then run manually:"
224251 echo ' grpcurl -plaintext -H "skye-caller-id: test" -H "skye-auth-token: test" -d ' " '" ' {"entity":"test-products","modelName":"product-embeddings","variant":"v1","limit":3,"embeddings":[{"embedding":[0.1,0.2,0.3,0.4]}]}' " '" ' localhost:8094 SkyeSimilarCandidateService/getSimilarCandidates'
225252fi
0 commit comments