Skip to content

Commit b5ad3a0

Browse files
Merge pull request #1205 from percona/K8SPG-715
Add pgvector extension test
2 parents 1e421a5 + 14d0021 commit b5ad3a0

13 files changed

+268
-0
lines changed

e2e-tests/run-minikube.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ custom-tls
44
demand-backup
55
finalizers
66
init-deploy
7+
pgvector-extension
78
one-pod
89
operator-self-healing
910
scaling

e2e-tests/run-pr.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ monitoring
88
monitoring-pmm3
99
one-pod
1010
operator-self-healing
11+
pgvector-extension
1112
pitr
1213
scaling
1314
scheduled-backup

e2e-tests/run-release.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ monitoring
1010
monitoring-pmm3
1111
one-pod
1212
operator-self-healing
13+
pgvector-extension
1314
pitr
1415
scaling
1516
scheduled-backup
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 120
4+
---
5+
apiVersion: apiextensions.k8s.io/v1
6+
kind: CustomResourceDefinition
7+
metadata:
8+
name: perconapgclusters.pgv2.percona.com
9+
spec:
10+
group: pgv2.percona.com
11+
names:
12+
kind: PerconaPGCluster
13+
listKind: PerconaPGClusterList
14+
plural: perconapgclusters
15+
singular: perconapgcluster
16+
scope: Namespaced
17+
---
18+
apiVersion: kuttl.dev/v1beta1
19+
kind: TestAssert
20+
metadata:
21+
name: check-operator-deploy-status
22+
timeout: 120
23+
commands:
24+
- script: kubectl assert exist-enhanced deployment percona-postgresql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 10
4+
commands:
5+
- script: |-
6+
set -o errexit
7+
set -o xtrace
8+
9+
source ../../functions
10+
init_temp_dir # do this only in the first TestStep
11+
12+
deploy_operator
13+
deploy_client
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 300
4+
---
5+
kind: StatefulSet
6+
apiVersion: apps/v1
7+
metadata:
8+
labels:
9+
postgres-operator.crunchydata.com/cluster: pgvector-extension
10+
postgres-operator.crunchydata.com/data: postgres
11+
postgres-operator.crunchydata.com/instance-set: instance1
12+
ownerReferences:
13+
- apiVersion: postgres-operator.crunchydata.com/v1beta1
14+
kind: PostgresCluster
15+
name: pgvector-extension
16+
controller: true
17+
blockOwnerDeletion: true
18+
status:
19+
observedGeneration: 1
20+
replicas: 1
21+
readyReplicas: 1
22+
updatedReplicas: 1
23+
collisionCount: 0
24+
---
25+
kind: Deployment
26+
apiVersion: apps/v1
27+
metadata:
28+
name: pgvector-extension-pgbouncer
29+
labels:
30+
postgres-operator.crunchydata.com/cluster: pgvector-extension
31+
postgres-operator.crunchydata.com/role: pgbouncer
32+
annotations:
33+
deployment.kubernetes.io/revision: '1'
34+
ownerReferences:
35+
- apiVersion: postgres-operator.crunchydata.com/v1beta1
36+
kind: PostgresCluster
37+
name: pgvector-extension
38+
controller: true
39+
blockOwnerDeletion: true
40+
status:
41+
observedGeneration: 1
42+
replicas: 3
43+
updatedReplicas: 3
44+
readyReplicas: 3
45+
---
46+
apiVersion: postgres-operator.crunchydata.com/v1beta1
47+
kind: PostgresCluster
48+
metadata:
49+
name: pgvector-extension
50+
ownerReferences:
51+
- apiVersion: pgv2.percona.com/v2
52+
kind: PerconaPGCluster
53+
name: pgvector-extension
54+
controller: true
55+
blockOwnerDeletion: true
56+
finalizers:
57+
- postgres-operator.crunchydata.com/finalizer
58+
spec:
59+
backups:
60+
pgbackrest: {}
61+
status:
62+
instances:
63+
- name: instance1
64+
readyReplicas: 3
65+
replicas: 3
66+
updatedReplicas: 3
67+
observedGeneration: 1
68+
proxy:
69+
pgBouncer:
70+
readyReplicas: 3
71+
replicas: 3
72+
---
73+
apiVersion: pgv2.percona.com/v2
74+
kind: PerconaPGCluster
75+
metadata:
76+
name: pgvector-extension
77+
status:
78+
pgbouncer:
79+
ready: 3
80+
size: 3
81+
postgres:
82+
instances:
83+
- name: instance1
84+
ready: 3
85+
size: 3
86+
ready: 3
87+
size: 3
88+
state: ready
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 10
4+
commands:
5+
- script: |-
6+
set -o errexit
7+
set -o xtrace
8+
9+
source ../../functions
10+
11+
get_cr "pgvector-extension" ${RANDOM} \
12+
| kubectl -n "${NAMESPACE}" apply -f -
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
commands:
4+
- script: |-
5+
set -o errexit
6+
set -o xtrace
7+
8+
source ../../functions
9+
10+
result=$(run_psql_local \
11+
"SELECT * FROM pg_extension WHERE extname = '\''vector'\'';" \
12+
"postgres:$(get_psql_user_pass pgvector-extension-pguser-postgres)@$(get_psql_user_host pgvector-extension-pguser-postgres)/postgres")
13+
14+
if [[ "$result" = *"vector"* ]]; then
15+
echo "pgvector extension is not disabled by default"
16+
exit 1
17+
fi
18+
timeout: 360
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 10
4+
commands:
5+
- script: |-
6+
set -o errexit
7+
set -o xtrace
8+
9+
source ../../functions
10+
11+
get_cr "pgvector-extension" ${RANDOM} \
12+
| yq '.spec.extensions.builtin.pgvector=true' \
13+
| kubectl -n "${NAMESPACE}" apply -f -
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
commands:
4+
- script: |-
5+
set -o errexit
6+
set -o xtrace
7+
8+
source ../../functions
9+
10+
retries=10
11+
wait_seconds=5
12+
13+
for i in $(seq 1 $retries); do
14+
15+
result=$(run_psql_local \
16+
"SELECT * FROM pg_extension WHERE extname = '\''vector'\'';" \
17+
"postgres:$(get_psql_user_pass pgvector-extension-pguser-postgres)@$(get_psql_user_host pgvector-extension-pguser-postgres)/postgres")
18+
19+
if [[ "$result" = *"vector"* ]]; then
20+
echo "pgvector extension is enabled, verifying extension"
21+
run_psql_local \
22+
"SELECT '\''[1,2,3]'\''::vector <-> '\''[3,2,1]'\''::vector;" \
23+
"postgres:$(get_psql_user_pass pgvector-extension-pguser-postgres)@$(get_psql_user_host pgvector-extension-pguser-postgres)/postgres"
24+
25+
exit 0
26+
fi
27+
28+
echo "pgvector extension not enabled, retrying in $wait_seconds seconds..."
29+
sleep $wait_seconds
30+
done
31+
32+
echo "pgvector extension is not properly enabled"
33+
exit 1
34+
timeout: 360

0 commit comments

Comments
 (0)