Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion e2e-tests/functions
Original file line number Diff line number Diff line change
Expand Up @@ -1153,11 +1153,12 @@ get_container_image() {
local component=$1
local pgVersion=$2

if [[ ${IMAGE} == percona/* ]] || [[ -n ${FORCE_RELEASE_RUN} ]]; then
if [[ ${IMAGE} == percona/* || ${IMAGE} == docker.io/percona/* ]] || [[ -n ${FORCE_RELEASE_RUN} ]]; then
local key
case $component in
pgbouncer) key="IMAGE_PGBOUNCER${pgVersion}" ;;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[shfmt] reported by reviewdog 🐶

Suggested change
pgbouncer) key="IMAGE_PGBOUNCER${pgVersion}" ;;
pgbouncer) key="IMAGE_PGBOUNCER${pgVersion}" ;;

pgbackrest) key="IMAGE_BACKREST${pgVersion}" ;;
postgis) key="IMAGE_POSTGIS${pgVersion}" ;;
*) key="IMAGE_POSTGRESQL${pgVersion}" ;;
Comment on lines +1161 to 1162
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[shfmt] reported by reviewdog 🐶

Suggested change
postgis) key="IMAGE_POSTGIS${pgVersion}" ;;
*) key="IMAGE_POSTGRESQL${pgVersion}" ;;
postgis) key="IMAGE_POSTGIS${pgVersion}" ;;
*) key="IMAGE_POSTGRESQL${pgVersion}" ;;

esac
get_release_image "$key"
Expand Down
4 changes: 4 additions & 0 deletions e2e-tests/run-release.csv
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ major-upgrade-14-to-15
major-upgrade-15-to-16
major-upgrade-16-to-17
major-upgrade-17-to-18
major-upgrade-14-to-15-postgis
major-upgrade-15-to-16-postgis
major-upgrade-16-to-17-postgis
major-upgrade-17-to-18-postgis
ldap
ldap-tls
monitoring
Expand Down
24 changes: 24 additions & 0 deletions e2e-tests/tests/major-upgrade-14-to-15-postgis/00-assert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: kuttl.dev/v1beta1
kind: TestAssert
timeout: 120
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: perconapgclusters.pgv2.percona.com
spec:
group: pgv2.percona.com
names:
kind: PerconaPGCluster
listKind: PerconaPGClusterList
plural: perconapgclusters
singular: perconapgcluster
scope: Namespaced
---
apiVersion: kuttl.dev/v1beta1
kind: TestAssert
metadata:
name: check-operator-deploy-status
timeout: 120
commands:
- script: kubectl assert exist-enhanced deployment percona-postgresql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- script: |-
set -o errexit
set -o xtrace

source ../../functions
init_temp_dir # do this only in the first TestStep

deploy_operator
deploy_client
deploy_s3_secrets
135 changes: 135 additions & 0 deletions e2e-tests/tests/major-upgrade-14-to-15-postgis/01-assert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
apiVersion: kuttl.dev/v1beta1
kind: TestAssert
timeout: 120
---
kind: StatefulSet
apiVersion: apps/v1
metadata:
name: major-upgrade-14-to-15-postgis-repo-host
labels:
postgres-operator.crunchydata.com/cluster: major-upgrade-14-to-15-postgis
postgres-operator.crunchydata.com/data: pgbackrest
postgres-operator.crunchydata.com/pgbackrest: ''
postgres-operator.crunchydata.com/pgbackrest-dedicated: ''
ownerReferences:
- apiVersion: postgres-operator.crunchydata.com/v1beta1
kind: PostgresCluster
name: major-upgrade-14-to-15-postgis
controller: true
blockOwnerDeletion: true
status:
observedGeneration: 1
replicas: 1
readyReplicas: 1
currentReplicas: 1
updatedReplicas: 1
collisionCount: 0
---
kind: StatefulSet
apiVersion: apps/v1
metadata:
labels:
postgres-operator.crunchydata.com/cluster: major-upgrade-14-to-15-postgis
postgres-operator.crunchydata.com/data: postgres
postgres-operator.crunchydata.com/instance-set: instance1
ownerReferences:
- apiVersion: postgres-operator.crunchydata.com/v1beta1
kind: PostgresCluster
name: major-upgrade-14-to-15-postgis
controller: true
blockOwnerDeletion: true
status:
observedGeneration: 1
replicas: 1
readyReplicas: 1
currentReplicas: 1
updatedReplicas: 1
collisionCount: 0
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: major-upgrade-14-to-15-postgis-pgbouncer
labels:
postgres-operator.crunchydata.com/cluster: major-upgrade-14-to-15-postgis
postgres-operator.crunchydata.com/role: pgbouncer
annotations:
deployment.kubernetes.io/revision: '1'
ownerReferences:
- apiVersion: postgres-operator.crunchydata.com/v1beta1
kind: PostgresCluster
name: major-upgrade-14-to-15-postgis
controller: true
blockOwnerDeletion: true
status:
observedGeneration: 1
replicas: 3
updatedReplicas: 3
readyReplicas: 3
---
kind: Job
apiVersion: batch/v1
metadata:
labels:
postgres-operator.crunchydata.com/cluster: major-upgrade-14-to-15-postgis
postgres-operator.crunchydata.com/pgbackrest: ''
postgres-operator.crunchydata.com/pgbackrest-backup: replica-create
postgres-operator.crunchydata.com/pgbackrest-repo: repo1
ownerReferences:
- apiVersion: pgv2.percona.com/v2
kind: PerconaPGBackup
controller: true
blockOwnerDeletion: true
status:
succeeded: 1
---
apiVersion: postgres-operator.crunchydata.com/v1beta1
kind: PostgresCluster
metadata:
name: major-upgrade-14-to-15-postgis
ownerReferences:
- apiVersion: pgv2.percona.com/v2
kind: PerconaPGCluster
name: major-upgrade-14-to-15-postgis
controller: true
blockOwnerDeletion: true
finalizers:
- postgres-operator.crunchydata.com/finalizer
status:
instances:
- name: instance1
readyReplicas: 3
replicas: 3
updatedReplicas: 3
observedGeneration: 1
pgbackrest:
repoHost:
apiVersion: apps/v1
kind: StatefulSet
ready: true
repos:
- bound: true
name: repo1
replicaCreateBackupComplete: true
stanzaCreated: true
proxy:
pgBouncer:
readyReplicas: 3
replicas: 3
---
apiVersion: pgv2.percona.com/v2
kind: PerconaPGCluster
metadata:
name: major-upgrade-14-to-15-postgis
status:
pgbouncer:
ready: 3
size: 3
postgres:
instances:
- name: instance1
ready: 3
size: 3
ready: 3
size: 3
state: ready
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
timeout: 10
commands:
- script: |-
set -o errexit
set -o xtrace
source ../../functions
postgres_image=$(get_container_image "postgis" 14)
pgbouncer_image=$(get_container_image "pgbouncer" 14)
pgbackrest_image=$(get_container_image "pgbackrest" 14)
get_cr \
| yq eval "
.spec.postgresVersion = 14 |
.spec.image = \"${postgres_image}\" |
.spec.instances[0].dataVolumeClaimSpec.resources.requests.storage = \"3Gi\" |
.spec.proxy.pgBouncer.image = \"${pgbouncer_image}\" |
.spec.backups.pgbackrest.image = \"${pgbackrest_image}\" |
.spec.patroni.removeDataDirectoryOnDivergedTimelines = true |
.spec.patroni.dynamicConfiguration.postgresql.parameters.shared_preload_libraries = \"pg_cron\" |
.spec.extensions.builtin.pg_stat_monitor = true |
.spec.extensions.builtin.pg_stat_statements = false |
.spec.extensions.builtin.pg_audit = true |
.spec.extensions.builtin.pgvector = true |
.spec.extensions.builtin.pg_repack = true |
.spec.extensions.custom += [{\"name\": \"pg_cron\", \"version\": \"1.6.6\"}]" \
| kubectl -n "${NAMESPACE}" apply -f -
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- script: |-
set -o errexit
set -o xtrace

source ../../functions

run_psql_local \
'CREATE DATABASE myapp; \c myapp \\\ CREATE TABLE IF NOT EXISTS myApp (id int PRIMARY KEY);' \
"postgres:$(get_psql_user_pass major-upgrade-14-to-15-postgis-pguser-postgres)@$(get_psql_user_host major-upgrade-14-to-15-postgis-pguser-postgres)"

run_psql_local \
'\c myapp \\\ INSERT INTO myApp (id) VALUES (100500)' \
"postgres:$(get_psql_user_pass major-upgrade-14-to-15-postgis-pguser-postgres)@$(get_psql_user_host major-upgrade-14-to-15-postgis-pguser-postgres)"

primary=$(get_pod_by_role major-upgrade-14-to-15-postgis primary name)
kubectl -n ${NAMESPACE} exec ${primary} -- \
psql -v ON_ERROR_STOP=1 -d postgres -c 'CREATE DATABASE mygisdata'
kubectl -n ${NAMESPACE} exec ${primary} -- \
psql -v ON_ERROR_STOP=1 -d mygisdata -c 'CREATE SCHEMA gis'
kubectl -n ${NAMESPACE} exec ${primary} -- \
psql -v ON_ERROR_STOP=1 -d mygisdata -c 'CREATE EXTENSION postgis'
kubectl -n ${NAMESPACE} exec ${primary} -- \
psql -v ON_ERROR_STOP=1 -d mygisdata -c 'CREATE TABLE gis.locations (id int PRIMARY KEY, geom geometry(Point, 4326))'
kubectl -n ${NAMESPACE} exec ${primary} -- \
psql -v ON_ERROR_STOP=1 -d mygisdata -c 'INSERT INTO gis.locations (id, geom) VALUES (1, ST_GeomFromText($$POINT(30 10)$$, 4326))'

run_psql_local \
'\c postgres \\\ CREATE EXTENSION pg_cron' \
"postgres:$(get_psql_user_pass major-upgrade-14-to-15-postgis-pguser-postgres)@$(get_psql_user_host major-upgrade-14-to-15-postgis-pguser-postgres)"
11 changes: 11 additions & 0 deletions e2e-tests/tests/major-upgrade-14-to-15-postgis/03-assert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: kuttl.dev/v1beta1
kind: TestAssert
timeout: 30
---
kind: ConfigMap
apiVersion: v1
metadata:
name: 03-read-from-primary
data:
data: ' 100500'
postgis: ' POINT(30 10)'
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- script: |-
set -o errexit
set -o xtrace

source ../../functions
data=$(run_psql_local '\c myapp \\\ SELECT * from myApp;' "postgres:$(get_psql_user_pass major-upgrade-14-to-15-postgis-pguser-postgres)@$(get_psql_user_host major-upgrade-14-to-15-postgis-pguser-postgres)")
postgis=$(run_psql_local '\c mygisdata \\\ SELECT ST_AsText(geom) FROM gis.locations ORDER BY id;' "postgres:$(get_psql_user_pass major-upgrade-14-to-15-postgis-pguser-postgres)@$(get_psql_user_host major-upgrade-14-to-15-postgis-pguser-postgres)")

kubectl create configmap -n "${NAMESPACE}" 03-read-from-primary --from-literal=data="${data}" --from-literal=postgis="${postgis}"
61 changes: 61 additions & 0 deletions e2e-tests/tests/major-upgrade-14-to-15-postgis/04-assert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
apiVersion: kuttl.dev/v1beta1
kind: TestAssert
timeout: 360
commands:
- script: |-
kubectl -n ${NAMESPACE} get cm \
-l app.kubernetes.io/instance=major-upgrade-14-to-15-postgis \
-l app.kubernetes.io/component=pg -o yaml
kubectl -n ${NAMESPACE} get pg,pod,job
sleep 5
---
apiVersion: pgv2.percona.com/v2
kind: PerconaPGCluster
metadata:
name: major-upgrade-14-to-15-postgis
spec:
postgresVersion: 15
status:
pgbouncer:
ready: 3
size: 3
postgres:
instances:
- name: instance1
ready: 3
size: 3
ready: 3
size: 3
state: ready
---
apiVersion: pgv2.percona.com/v2
kind: PerconaPGUpgrade
metadata:
name: 14-to-15-postgis
status:
conditions:
- type: Progressing
reason: PGUpgradeCompleted
status: "False"
observedGeneration: 1
- type: Succeeded
reason: PGUpgradeSucceeded
status: "True"
observedGeneration: 1
observedGeneration: 1
---
kind: Job
apiVersion: batch/v1
metadata:
labels:
postgres-operator.crunchydata.com/cluster: major-upgrade-14-to-15-postgis
postgres-operator.crunchydata.com/pgbackrest: ''
postgres-operator.crunchydata.com/pgbackrest-backup: replica-create
postgres-operator.crunchydata.com/pgbackrest-repo: repo1
ownerReferences:
- apiVersion: pgv2.percona.com/v2
kind: PerconaPGBackup
controller: true
blockOwnerDeletion: true
status:
succeeded: 1
23 changes: 23 additions & 0 deletions e2e-tests/tests/major-upgrade-14-to-15-postgis/04-upgrade.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- script: |-
set -o errexit
set -o xtrace

source ../../functions

kubectl apply -n ${NAMESPACE} -f - <<-EOF
apiVersion: pgv2.percona.com/v2
kind: PerconaPGUpgrade
metadata:
name: 14-to-15-postgis
spec:
postgresClusterName: major-upgrade-14-to-15-postgis
image: ${IMAGE_UPGRADE}
fromPostgresVersion: 14
toPostgresVersion: 15
toPostgresImage: $(get_container_image "postgis" 15)
toPgBouncerImage: $(get_container_image "pgbouncer" 15)
toPgBackRestImage: $(get_container_image "pgbackrest" 15)
EOF
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- script: |-
set -o errexit
set -o xtrace

source ../../functions

primary=$(get_pod_by_role major-upgrade-14-to-15-postgis primary name)
kubectl -n ${NAMESPACE} exec ${primary} -- vacuumdb --all --analyze-in-stages
kubectl -n ${NAMESPACE} exec ${primary} -- vacuumdb --all --analyze-only
kubectl -n ${NAMESPACE} exec ${primary} -- /pgdata/delete_old_cluster.sh
Loading
Loading