diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 58801c8e73..21bf5195bb 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -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 diff --git a/tests/shard-snapshot-api-tests.sh b/tests/shard-snapshot-api-tests.sh new file mode 100755 index 0000000000..e5da2f65f5 --- /dev/null +++ b/tests/shard-snapshot-api-tests.sh @@ -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