mirror of
https://github.com/qdrant/qdrant.git
synced 2026-09-21 05:27:39 -05:00
Fix flaky shard snapshot API CI readiness race (#10383)
* Fix flaky shard snapshot API CI readiness race Run the prebuilt binary and poll /readyz instead of cargo run + fixed sleep, which can miss startup when cargo recompiles. * Move shard snapshot API CI runner into a dedicated script Keep workflow YAML thin by starting Qdrant, waiting for /readyz, and invoking shard-snapshot-api.sh from tests/shard-snapshot-api-tests.sh.
This commit is contained in:
@@ -176,30 +176,18 @@ jobs:
|
||||
- name: Build
|
||||
run: cargo build --bin qdrant --features "staging" --locked
|
||||
- name: Run Shard Snapshot API Tests (local)
|
||||
shell: bash
|
||||
timeout-minutes: 15
|
||||
run: |
|
||||
cargo run --features "staging" &
|
||||
trap 'kill $(jobs -p) &>/dev/null || :' EXIT
|
||||
sleep 10
|
||||
|
||||
./tests/shard-snapshot-api.sh test-all
|
||||
run: ./tests/shard-snapshot-api-tests.sh
|
||||
- name: Run Shard Snapshot API Tests (s3)
|
||||
shell: bash
|
||||
timeout-minutes: 15
|
||||
run: |
|
||||
export QDRANT__STORAGE__SNAPSHOTS_CONFIG__SNAPSHOTS_STORAGE=s3
|
||||
export QDRANT__STORAGE__SNAPSHOTS_CONFIG__S3_CONFIG__BUCKET=test-bucket
|
||||
export QDRANT__STORAGE__SNAPSHOTS_CONFIG__S3_CONFIG__REGION=us-east-1
|
||||
export QDRANT__STORAGE__SNAPSHOTS_CONFIG__S3_CONFIG__ACCESS_KEY=minioadmin
|
||||
export QDRANT__STORAGE__SNAPSHOTS_CONFIG__S3_CONFIG__SECRET_KEY=minioadmin
|
||||
export QDRANT__STORAGE__SNAPSHOTS_CONFIG__S3_CONFIG__ENDPOINT_URL=http://127.0.0.1:9000
|
||||
|
||||
cargo run --features "staging" &
|
||||
trap 'kill $(jobs -p) &>/dev/null || :' EXIT
|
||||
sleep 10
|
||||
|
||||
./tests/shard-snapshot-api.sh test-all
|
||||
env:
|
||||
QDRANT__STORAGE__SNAPSHOTS_CONFIG__SNAPSHOTS_STORAGE: s3
|
||||
QDRANT__STORAGE__SNAPSHOTS_CONFIG__S3_CONFIG__BUCKET: test-bucket
|
||||
QDRANT__STORAGE__SNAPSHOTS_CONFIG__S3_CONFIG__REGION: us-east-1
|
||||
QDRANT__STORAGE__SNAPSHOTS_CONFIG__S3_CONFIG__ACCESS_KEY: minioadmin
|
||||
QDRANT__STORAGE__SNAPSHOTS_CONFIG__S3_CONFIG__SECRET_KEY: minioadmin
|
||||
QDRANT__STORAGE__SNAPSHOTS_CONFIG__S3_CONFIG__ENDPOINT_URL: http://127.0.0.1:9000
|
||||
run: ./tests/shard-snapshot-api-tests.sh
|
||||
|
||||
e2e-tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
# Start a prebuilt Qdrant binary, wait until it is ready, then run shard snapshot API tests.
|
||||
# Snapshot storage (local vs s3) is controlled via QDRANT__STORAGE__SNAPSHOTS_CONFIG__* env vars.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
cd "$(dirname "$0")/../"
|
||||
|
||||
QDRANT_EXECUTABLE="${QDRANT_EXECUTABLE:-./target/debug/qdrant}"
|
||||
QDRANT_HOST="${QDRANT_HOST:-localhost:6333}"
|
||||
READY_TIMEOUT_SEC="${READY_TIMEOUT_SEC:-60}"
|
||||
|
||||
"$QDRANT_EXECUTABLE" &
|
||||
PID=$!
|
||||
|
||||
clear_after_tests() {
|
||||
echo "server is going down"
|
||||
kill "$PID" &>/dev/null || :
|
||||
wait "$PID" &>/dev/null || :
|
||||
echo "END"
|
||||
}
|
||||
|
||||
trap clear_after_tests EXIT
|
||||
|
||||
for _ in $(seq 1 "$READY_TIMEOUT_SEC"); do
|
||||
if curl --output /dev/null --silent --get --fail "http://$QDRANT_HOST/readyz"; then
|
||||
echo "server ready to serve traffic"
|
||||
./tests/shard-snapshot-api.sh test-all
|
||||
exit 0
|
||||
fi
|
||||
printf 'waiting for server to start...\n'
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "server did not become ready within ${READY_TIMEOUT_SEC}s" >&2
|
||||
exit 1
|
||||
Reference in New Issue
Block a user