mirror of
https://github.com/outbackdingo/qdrant-helm.git
synced 2026-01-27 10:20:18 +00:00
Fix snapshot restoration and add integration test (#96)
* Fix snapshot restoration and add integration test * Fix updateConfigurationOnChange * Add retries to all curl commands to fix flakiness in kind
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -17,7 +17,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
{{- if (default .Values.updateConfigurationOnChange false) }}
|
||||
checksum/config: {{ tpl (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
|
||||
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
|
||||
{{- end }}
|
||||
{{- with .Values.podAnnotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
|
||||
@@ -43,6 +43,7 @@ data:
|
||||
set -xe
|
||||
echo 'connect-timeout = 5' > $HOME/.curlrc
|
||||
echo 'retry = 5' >> $HOME/.curlrc
|
||||
echo 'retry-all-errors' >> $HOME/.curlrc
|
||||
|
||||
if [ -d /mnt/secrets/certs ]; then
|
||||
cp /mnt/secrets/certs/ca.pem /usr/share/pki/trust/anchors/private-ca.pem
|
||||
|
||||
10
test/integration/assets/snapshot-pvc.yaml
Normal file
10
test/integration/assets/snapshot-pvc.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: snapshots-pvc
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
6
test/integration/assets/snapshot-values.yaml
Normal file
6
test/integration/assets/snapshot-values.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
updateConfigurationOnChange: true
|
||||
snapshotRestoration:
|
||||
enabled: true
|
||||
pvcName: snapshots-pvc
|
||||
# To be supplied via --set
|
||||
snapshots: []
|
||||
26
test/integration/snapshot_restore.bats
Normal file
26
test/integration/snapshot_restore.bats
Normal file
@@ -0,0 +1,26 @@
|
||||
# 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
|
||||
}
|
||||
|
||||
|
||||
@test "snapshot restoration works" {
|
||||
# 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')
|
||||
|
||||
# Delete the collection, then restore
|
||||
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
|
||||
|
||||
run kubectl exec -n default curl -- curl -s $QDRANT_URL/collections/test_collection/points/6 --fail-with-body
|
||||
[ $status -eq 0 ]
|
||||
[[ "${output}" =~ .*\"Mumbai\".* ]]
|
||||
}
|
||||
Reference in New Issue
Block a user