Skip to content

Commit 929a98d

Browse files
committed
test
1 parent 9a9eca7 commit 929a98d

File tree

8 files changed

+151
-0
lines changed

8 files changed

+151
-0
lines changed

e2e-tests/functions

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ deploy_operator() {
5454
disable_telemetry=false
5555
fi
5656
yq eval '.spec.template.spec.containers[0].image = "'${IMAGE}'"' "${DEPLOY_DIR}/${cw_prefix}operator.yaml" \
57+
| yq eval '.spec.template.spec.containers[0].imagePullPolicy = "IfNotPresent"' - \
5758
| yq eval '(.spec.template.spec.containers[] | select(.name=="operator") | .env[] | select(.name=="DISABLE_TELEMETRY") | .value) = "'${disable_telemetry}'"' - \
5859
| kubectl -n "${OPERATOR_NS:-$NAMESPACE}" apply -f -
5960
}
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: 120
4+
---
5+
apiVersion: apps/v1
6+
kind: Deployment
7+
metadata:
8+
name: percona-postgresql-operator
9+
status:
10+
readyReplicas: 1
11+
replicas: 1
12+
updatedReplicas: 1
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+
init_temp_dir # do this only in the first TestStep
11+
12+
deploy_operator
13+
deploy_client
14+
deploy_s3_secrets
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 120
4+
---
5+
apiVersion: pgv2.percona.com/v2
6+
kind: PerconaPGCluster
7+
metadata:
8+
name: pgbouncer-failover
9+
status:
10+
postgres:
11+
ready: 2
12+
size: 2
13+
pgbouncer:
14+
ready: 2
15+
size: 2
16+
state: ready
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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 eval '
13+
.spec.proxy.pgBouncer.replicas=2 |
14+
.spec.instances[].replicas=2' - \
15+
| kubectl -n "${NAMESPACE}" apply -f -
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 120
4+
---
5+
apiVersion: pgv2.percona.com/v2
6+
kind: PerconaPGCluster
7+
metadata:
8+
name: pgbouncer-failover
9+
status:
10+
postgres:
11+
ready: 2
12+
size: 2
13+
pgbouncer:
14+
# PgBouncer should be back to ready state with 2 replicas
15+
ready: 2
16+
size: 2
17+
state: ready
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 60
4+
commands:
5+
- script: |-
6+
set -o errexit
7+
set -o xtrace
8+
9+
source ../../functions
10+
11+
LEADER=$(kubectl get pods -n "${NAMESPACE}" \
12+
-l postgres-operator.crunchydata.com/role=primary \
13+
-o jsonpath='{.items[0].metadata.name}')
14+
15+
echo "Current leader: $LEADER"
16+
17+
REPLICA=$(kubectl get pods -n "${NAMESPACE}" \
18+
-l postgres-operator.crunchydata.com/role=replica \
19+
-o jsonpath='{.items[0].metadata.name}')
20+
21+
echo "Replica to promote: $REPLICA"
22+
23+
kubectl get pods -n "${NAMESPACE}" \
24+
-l postgres-operator.crunchydata.com/role=pgbouncer \
25+
-o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' \
26+
> /tmp/pgbouncer-pods-before.txt
27+
28+
echo "PgBouncer pods before switchover:"
29+
cat /tmp/pgbouncer-pods-before.txt
30+
31+
kubectl exec "$LEADER" -c database -n "${NAMESPACE}" -- \
32+
patronictl switchover \
33+
--leader "$LEADER" \
34+
--candidate "$REPLICA" \
35+
--force
36+
37+
echo "Switchover triggered successfully"
38+
39+
# Wait for PgBouncer pods to be recreated (they should be deleted and recreated)
40+
sleep 15
41+
42+
kubectl get pods -n "${NAMESPACE}" \
43+
-l postgres-operator.crunchydata.com/role=pgbouncer \
44+
-o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' \
45+
> /tmp/pgbouncer-pods-after.txt
46+
47+
echo "PgBouncer pods after switchover:"
48+
cat /tmp/pgbouncer-pods-after.txt
49+
50+
if diff /tmp/pgbouncer-pods-before.txt /tmp/pgbouncer-pods-after.txt > /dev/null; then
51+
echo "ERROR: PgBouncer pods were NOT recreated after failover!"
52+
exit 1
53+
else
54+
echo "SUCCESS: PgBouncer pods were recreated after failover"
55+
fi
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
delete:
4+
- apiVersion: pgv2.percona.com/v2
5+
kind: PerconaPGCluster
6+
metadata:
7+
name: pgbouncer-failover
8+
- apiVersion: postgres-operator.crunchydata.com/v1beta1
9+
kind: PostgresCluster
10+
metadata:
11+
name: pgbouncer-failover
12+
commands:
13+
- script: |-
14+
set -o errexit
15+
set -o xtrace
16+
17+
source ../../functions
18+
19+
remove_all_finalizers
20+
destroy_operator
21+
timeout: 60

0 commit comments

Comments
 (0)