Skip to content

Commit

Permalink
Fix snapshot restoration and add integration test
Browse files Browse the repository at this point in the history
  • Loading branch information
mac-chaffee committed Oct 12, 2023
1 parent 46e0d1f commit 93981b3
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 1 deletion.
2 changes: 1 addition & 1 deletion charts/qdrant/templates/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ data:
SET_INDEX=${HOSTNAME##*-}
{{- if and (.Values.snapshotRestoration.enabled) (eq (.Values.replicaCount | quote) (1 | quote)) }}
echo "Starting initializing for pod $SET_INDEX and snapshots restoration"
./entrypoint.sh {{ range .Values.snapshotRestoration.snapshots }} --snapshot {{ . }} {{ end }}
exec ./entrypoint.sh --uri 'http://{{ include "qdrant.fullname" . }}-0.{{ include "qdrant.fullname" . }}-headless:6335' {{ range .Values.snapshotRestoration.snapshots }} --snapshot {{ . }} {{ end }}
{{- else }}
echo "Starting initializing for pod $SET_INDEX"
if [ "$SET_INDEX" = "0" ]; then
Expand Down
10 changes: 10 additions & 0 deletions test/integration/assets/snapshot-pvc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: snapshots-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
6 changes: 6 additions & 0 deletions test/integration/assets/snapshot-values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
updateConfigurationOnChange: true
snapshotRestoration:
enabled: true
pvcName: snapshots-pvc
# To be supplied via --set
snapshots: []
27 changes: 27 additions & 0 deletions test/integration/snapshot_restore.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Inspired by https://github.com/qdrant/qdrant/blob/v1.6.1/tests/snapshots/snapshots-recovery.sh

QDRANT_URL="http://qdrant.qdrant-helm-integration:6333"

setup_file() {
# Create the PVC, then helm upgrade with no snapshots so that the PVC gets mounted
kubectl apply -f test/integration/assets/snapshot-pvc.yaml -n qdrant-helm-integration
helm upgrade --install qdrant charts/qdrant -n qdrant-helm-integration -f test/integration/assets/snapshot-values.yaml --set snapshotRestoration.snapshots=null --wait
kubectl rollout status statefulset qdrant -n qdrant-helm-integration

# Create the test data and create a snapshot
helm test qdrant -n qdrant-helm-integration --logs
SNAPSHOT_NAME=$(kubectl exec -n default curl -- curl -X POST "$QDRANT_URL/collections/test_collection/snapshots" | grep -o 'test_collection.*\.snapshot')
}


@test "snapshot restoration works" {
kubectl exec -n default curl -- curl -X DELETE "$QDRANT_URL/collections/test_collection?wait"

helm upgrade --install qdrant charts/qdrant -n qdrant-helm-integration -f test/integration/assets/snapshot-values.yaml --set snapshotRestoration.snapshots="{/qdrant/snapshots/test_collection/$SNAPSHOT_NAME\:test_collection}" --wait
kubectl rollout status statefulset qdrant -n qdrant-helm-integration
# Wait for snapshot restoration step to finish
sleep 2
run kubectl exec -n default curl -- curl -s $QDRANT_URL/collections/test_collection/points/6 --fail-with-body
[ $status -eq 0 ]
[[ "${output}" =~ .*\"Mumbai\".* ]]
}

0 comments on commit 93981b3

Please sign in to comment.