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
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ spec:
extensions:
- name: pg_search
ensure: absent
version: "0.15.21"
version: "0.19.11"
schema: test-schema

---
Expand Down Expand Up @@ -75,5 +75,5 @@ spec:
extensions:
- name: pg_search
ensure: absent
version: "0.15.21"
version: "0.19.11"
schema: test-schema
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
type: postgresql
version:
postgresql: "17"
paradedb: "0.19.11"

cluster:
instances: 1
Expand Down Expand Up @@ -33,7 +34,7 @@ databases:
extensions:
- name: pg_search
ensure: absent
version: "0.15.21"
version: "0.19.11"
schema: test-schema

- name: test-db-builtin
Expand All @@ -58,5 +59,5 @@ databases:
extensions:
- name: pg_search
ensure: absent
version: "0.15.21"
version: "0.19.11"
schema: test-schema
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: extension-upgrade-cluster
status:
readyInstances: 2
phase: Cluster in healthy state
---
apiVersion: postgresql.cnpg.io/v1
kind: Database
metadata:
name: extension-upgrade-cluster-cluster
spec:
name: test-db-icu
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@itay-grudev let me know if this is not right. I based it on 01-database-parameters.

cluster:
name: extension-upgrade-cluster
ensure: present
owner: test-owner
template: template1
encoding: UTF8
databaseReclaimPolicy: retain
extensions:
- name: pg_search
ensure: present
version: "0.19.10"
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
type: postgresql
version:
postgresql: "17"
paradedb: "0.19.10"

cluster:
instances: 2

databases:
- name: test-db-icu
ensure: present
owner: test-owner
encoding: UTF8
extensions:
- name: pg_search
ensure: present
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: batch/v1
kind: Job
metadata:
name: test-db-icu-version-check-before
status:
succeeded: 1
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
apiVersion: batch/v1
kind: Job
metadata:
name: test-db-icu-version-check-before
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: data-test
env:
- name: DB_URI
valueFrom:
secretKeyRef:
name: extension-upgrade-cluster-app
key: uri
image: alpine:3.19
command: ['sh', '-c']
args:
- |
apk --no-cache add postgresql-client
PG_SEARCH_VERSION=$(psql "$DB_URI" -t) <<-EOSQL
SELECT version FROM paradedb.version_info();
EOSQL
echo $PG_SEARCH_VERSION
test "$PG_SEARCH_VERSION" = " 0.19.10"

EXTVERSION=$(psql "$DB_URI" -t) <<-EOSQL
SELECT extversion FROM pg_extension WHERE extname = 'pg_search';
EOSQL
echo $EXTVERSION
test "$EXTVERSION" = " 0.19.10"
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: extension-upgrade-cluster
status:
readyInstances: 2
phase: Cluster in healthy state
---
apiVersion: postgresql.cnpg.io/v1
kind: Database
metadata:
name: extension-upgrade-cluster-cluster
spec:
name: test-db-icu
cluster:
name: extension-upgrade-cluster
ensure: present
owner: test-owner
template: template1
encoding: UTF8
databaseReclaimPolicy: retain
extensions:
- name: pg_search
ensure: present
version: "0.19.11"
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
type: postgresql
version:
postgresql: "17"
paradedb: "0.19.11"

cluster:
instances: 2

databases:
- name: test-db-icu
ensure: present
owner: test-owner
encoding: UTF8
extensions:
- name: pg_search
ensure: present
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: batch/v1
kind: Job
metadata:
name: test-db-icu-version-check-after
status:
succeeded: 1
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
apiVersion: batch/v1
kind: Job
metadata:
name: test-db-icu-version-check-after
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: data-test
env:
- name: DB_URI
valueFrom:
secretKeyRef:
name: extension-upgrade-cluster-app
key: uri
image: alpine:3.19
command: ['sh', '-c']
args:
- |
apk --no-cache add postgresql-client
PG_SEARCH_VERSION=$(psql "$DB_URI" -t) <<-EOSQL
SELECT version FROM paradedb.version_info();
EOSQL
echo $PG_SEARCH_VERSION
test "$PG_SEARCH_VERSION" = " 0.19.11"

EXTVERSION=$(psql "$DB_URI" -t) <<-EOSQL
SELECT extversion FROM pg_extension WHERE extname = 'pg_search';
EOSQL
echo $EXTVERSION
test "$EXTVERSION" = " 0.19.11"
57 changes: 57 additions & 0 deletions charts/cluster/test/database-management/chainsaw-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,65 @@ spec:
database-parameters ../../
- assert:
file: ./01-database-parameters-assert.yaml

- name: Provision a cluster with a database with the ParadeDB extension
try:
- script:
content: |
helm upgrade \
--install \
--namespace $NAMESPACE \
--values ./02-extension-upgrade-init.yaml \
--wait \
extension-upgrade ../../
- assert:
file: ./02-extension-upgrade-init-assert.yaml
catch:
- describe:
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
name: extension-upgrade-paradedb
- podLogs:
selector: cnpg.io/cluster=extension-upgrade-paradedb
- script:
content: |
echo "=== Cluster Status ==="
kubectl get cluster extension-upgrade-paradedb -n $NAMESPACE -o yaml | grep -A 50 "status:"
echo "=== Pod Status ==="
kubectl get pods -n $NAMESPACE -l cnpg.io/cluster=extension-upgrade-paradedb -o wide
echo "=== Pod Events ==="
kubectl get events -n $NAMESPACE --sort-by='.lastTimestamp' | tail -30

- name: Verify the ParadeDB extension version before upgrade
try:
- apply:
file: ./03-paradedb_extension_check.yaml
- assert:
file: ./03-paradedb_extension_check-assert.yaml

- name: Upgrade the ParadeDB cluster and the extension
try:
- script:
content: |
helm upgrade \
--install \
--namespace $NAMESPACE \
--values ./04-extension-upgrade-post.yaml \
--wait \
extension-upgrade ../../
- assert:
file: ./04-extension-upgrade-post-assert.yaml

- name: Verify the ParadeDB extension version after upgrade
try:
- apply:
file: ./05-paradedb_extension_check.yaml
- assert:
file: ./05-paradedb_extension_check-assert.yaml

- name: cleanup
try:
- script:
content: |
helm uninstall --namespace $NAMESPACE database-parameters
helm uninstall --namespace $NAMESPACE extension-upgrade
2 changes: 1 addition & 1 deletion charts/cluster/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -577,7 +577,7 @@ databases: []
# extensions: [] # -- List of extensions to be created in the database.
# # - name: pg_search
# # ensure: present # -- Ensure the PostgreSQL extension is present or absent - defaults to "present".
# # version: "0.15.21" # -- Version of the extension to be installed, if not specified the latest version will be used.
# # version: "0.19.11" # -- Version of the extension to be installed, if not specified the latest version will be used.
# # schema: "" # -- Schema where the extension will be installed, if not specified the extensions or current default object creation schema will be used.
# isTemplate: false # -- Maps to the IS_TEMPLATE parameter. If true, the database is considered a template for new databases.
# locale: "" # -- Maps to the LC_COLLATE and LC_CTYPE parameters
Expand Down
88 changes: 88 additions & 0 deletions charts/paradedb/test/database-management/chainsaw-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
name: database-management
spec:
timeouts:
apply: 1s
assert: 300s
cleanup: 60s
steps:
- name: database-parameters
timeouts:
apply: 1s
assert: 5s
cleanup: 30s
try:
- script:
content: |
helm upgrade \
--install \
--namespace $NAMESPACE \
--values ./01-database-parameters.yaml \
--wait \
database-parameters ../../
- assert:
file: ./01-database-parameters-assert.yaml

- name: Provision a cluster with a database with the pg_search extension
try:
- script:
content: |
helm upgrade \
--install \
--namespace $NAMESPACE \
--values ./02-extension-upgrade-init.yaml \
--wait \
extension-upgrade ../../
- assert:
file: ./02-extension-upgrade-init-assert.yaml
catch:
- describe:
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
name: extension-upgrade-cluster
- podLogs:
selector: cnpg.io/cluster=extension-upgrade-cluster
- script:
content: |
echo "=== Cluster Status ==="
kubectl get cluster extension-upgrade-cluster -n $NAMESPACE -o yaml | grep -A 50 "status:"
echo "=== Pod Status ==="
kubectl get pods -n $NAMESPACE -l cnpg.io/cluster=extension-upgrade-cluster -o wide
echo "=== Pod Events ==="
kubectl get events -n $NAMESPACE --sort-by='.lastTimestamp' | tail -30

- name: Verify the ParadeDB extension version before upgrade
try:
- apply:
file: ./03-cluster_extension_check.yaml
- assert:
file: ./03-cluster_extension_check-assert.yaml

- name: Upgrade the ParadeDB cluster and the extension
try:
- script:
content: |
helm upgrade \
--install \
--namespace $NAMESPACE \
--values ./04-extension-upgrade-post.yaml \
--wait \
extension-upgrade ../../
- assert:
file: ./04-extension-upgrade-post-assert.yaml

- name: Verify the ParadeDB extension version after upgrade
try:
- apply:
file: ./05-cluster_extension_check.yaml
- assert:
file: ./05-cluster_extension_check-assert.yaml

- name: cleanup
try:
- script:
content: |
helm uninstall --namespace $NAMESPACE database-parameters
helm uninstall --namespace $NAMESPACE extension-upgrade