Skip to content

Commit d165850

Browse files
Merge pull request #1215 from percona/K8SPG-590
K8SPG-590 Add e2e test for database init sql functionality
2 parents ef7bef9 + bd68b66 commit d165850

11 files changed

+201
-0
lines changed

e2e-tests/run-minikube.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
backup-enable-disable
22
custom-extensions
33
custom-tls
4+
database-init-sql
45
demand-backup
56
finalizers
67
init-deploy

e2e-tests/run-pr.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
backup-enable-disable
22
custom-extensions
33
custom-tls
4+
database-init-sql
45
demand-backup
56
finalizers
67
init-deploy

e2e-tests/run-release.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
backup-enable-disable
22
custom-extensions
33
custom-tls
4+
database-init-sql
45
demand-backup
56
finalizers
67
init-deploy
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: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 30
4+
---
5+
apiVersion: v1
6+
kind: ConfigMap
7+
metadata:
8+
name: init-database-sql
9+
data:
10+
init.sql: |
11+
CREATE TABLE e2e_init_table(id INT PRIMARY KEY);
12+
INSERT INTO e2e_init_table VALUES (42);
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: init-database-sql
5+
data:
6+
init.sql: |
7+
CREATE TABLE e2e_init_table(id INT PRIMARY KEY);
8+
INSERT INTO e2e_init_table VALUES (42);
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: database-init-sql
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: database-init-sql
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: database-init-sql-pgbouncer
29+
labels:
30+
postgres-operator.crunchydata.com/cluster: database-init-sql
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: database-init-sql
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: database-init-sql
50+
ownerReferences:
51+
- apiVersion: pgv2.percona.com/v2
52+
kind: PerconaPGCluster
53+
name: database-init-sql
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: database-init-sql
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: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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 \
12+
| yq '.spec.databaseInitSQL.name = "init-database-sql"' \
13+
| yq '.spec.databaseInitSQL.key = "init.sql"' \
14+
| 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 id FROM e2e_init_table WHERE id = 42" \
12+
"postgres:$(get_psql_user_pass database-init-sql-pguser-postgres)@$(get_psql_user_host database-init-sql-pguser-postgres)/postgres")
13+
14+
if [[ "$result" != *"42"* ]]; then
15+
echo "Database has not been initialized"
16+
exit 1
17+
fi
18+
timeout: 360

0 commit comments

Comments
 (0)