From f526e8768130ce758133be31627a455640c460f6 Mon Sep 17 00:00:00 2001 From: Viacheslav Sarzhan Date: Thu, 25 Jan 2024 21:04:19 +0200 Subject: [PATCH 1/3] K8SPSMDB-1035 test case for #1377 --- e2e-tests/pitr-sharded/conf/backup-aws-s3.yml | 7 + .../pitr-sharded/conf/eks-some-name-rs0.yml | 171 ++++++++++++++++++ e2e-tests/pitr-sharded/run | 33 +++- 3 files changed, 205 insertions(+), 6 deletions(-) create mode 100644 e2e-tests/pitr-sharded/conf/backup-aws-s3.yml create mode 100644 e2e-tests/pitr-sharded/conf/eks-some-name-rs0.yml diff --git a/e2e-tests/pitr-sharded/conf/backup-aws-s3.yml b/e2e-tests/pitr-sharded/conf/backup-aws-s3.yml new file mode 100644 index 0000000000..c8db546201 --- /dev/null +++ b/e2e-tests/pitr-sharded/conf/backup-aws-s3.yml @@ -0,0 +1,7 @@ +apiVersion: psmdb.percona.com/v1 +kind: PerconaServerMongoDBBackup +metadata: + name: +spec: + clusterName: some-name + storageName: aws-s3 diff --git a/e2e-tests/pitr-sharded/conf/eks-some-name-rs0.yml b/e2e-tests/pitr-sharded/conf/eks-some-name-rs0.yml new file mode 100644 index 0000000000..676efda765 --- /dev/null +++ b/e2e-tests/pitr-sharded/conf/eks-some-name-rs0.yml @@ -0,0 +1,171 @@ +apiVersion: psmdb.percona.com/v1 +kind: PerconaServerMongoDB +metadata: + name: some-name +spec: + #platform: openshift + image: + imagePullPolicy: Always + backup: + enabled: true + image: perconalab/percona-server-mongodb-operator:1.1.0-backup + storages: + aws-s3: + type: s3 + s3: + region: us-east-1 + bucket: operator-testing + prefix: psmdb-pitr-demand-backup-eks-credentials + pitr: + enabled: false + oplogSpanMin: 2 + runtimeClassName: container-rc + sharding: + enabled: true + + configsvrReplSet: + size: 3 + volumeSpec: + persistentVolumeClaim: + resources: + requests: + storage: 3Gi + sidecars: + - image: busybox + command: ["/bin/sh"] + args: ["-c", "while true; do echo echo $(date -u) 'test' >> /dev/null; sleep 5;done"] + name: cfg-sidecar-1 + runtimeClassName: container-rc + + mongos: + size: 3 + expose: + exposeType: ClusterIP + sidecars: + - image: busybox + command: ["/bin/sh"] + args: ["-c", "while true; do echo echo $(date -u) 'test' >> /dev/null; sleep 5;done"] + name: mongos-sidecar-1 + runtimeClassName: container-rc + + + replsets: + - name: rs0 + affinity: + antiAffinityTopologyKey: none + resources: + limits: + cpu: 500m + memory: 1G + requests: + cpu: 100m + memory: 0.1G + volumeSpec: + persistentVolumeClaim: + resources: + requests: + storage: 1Gi + runtimeClassName: container-rc + size: 3 + configuration: | + operationProfiling: + mode: slowOp + slowOpThresholdMs: 100 + security: + enableEncryption: true + redactClientLogData: false + setParameter: + ttlMonitorSleepSecs: 60 + wiredTigerConcurrentReadTransactions: 128 + wiredTigerConcurrentWriteTransactions: 128 + storage: + engine: wiredTiger + wiredTiger: + collectionConfig: + blockCompressor: snappy + engineConfig: + directoryForIndexes: false + journalCompressor: snappy + indexConfig: + prefixCompression: true + - name: rs1 + affinity: + antiAffinityTopologyKey: none + resources: + limits: + cpu: 500m + memory: 1G + requests: + cpu: 100m + memory: 0.1G + volumeSpec: + persistentVolumeClaim: + resources: + requests: + storage: 1Gi + size: 3 + configuration: | + operationProfiling: + mode: slowOp + slowOpThresholdMs: 100 + security: + enableEncryption: true + redactClientLogData: false + setParameter: + ttlMonitorSleepSecs: 60 + wiredTigerConcurrentReadTransactions: 128 + wiredTigerConcurrentWriteTransactions: 128 + storage: + engine: wiredTiger + wiredTiger: + collectionConfig: + blockCompressor: snappy + engineConfig: + directoryForIndexes: false + journalCompressor: snappy + indexConfig: + prefixCompression: true + - name: rs2 + affinity: + antiAffinityTopologyKey: none + resources: + limits: + cpu: 500m + memory: 1G + requests: + cpu: 100m + memory: 0.1G + volumeSpec: + persistentVolumeClaim: + resources: + requests: + storage: 1Gi + size: 3 + configuration: | + operationProfiling: + mode: slowOp + slowOpThresholdMs: 100 + security: + enableEncryption: true + redactClientLogData: false + setParameter: + ttlMonitorSleepSecs: 60 + wiredTigerConcurrentReadTransactions: 128 + wiredTigerConcurrentWriteTransactions: 128 + storage: + engine: wiredTiger + wiredTiger: + collectionConfig: + blockCompressor: snappy + engineConfig: + directoryForIndexes: false + journalCompressor: snappy + indexConfig: + prefixCompression: true + sidecars: + - image: busybox + command: ["/bin/sh"] + args: ["-c", "while true; do echo echo $(date -u) 'test' >> /dev/null; sleep 5;done"] + name: rs-sidecar-1 + secrets: + users: some-users diff --git a/e2e-tests/pitr-sharded/run b/e2e-tests/pitr-sharded/run index 155771fd7d..34d9cd5ae5 100755 --- a/e2e-tests/pitr-sharded/run +++ b/e2e-tests/pitr-sharded/run @@ -95,7 +95,11 @@ main() { cluster="some-name" desc "create first PSMDB cluster $cluster" - apply_cluster $test_dir/conf/$cluster-rs0.yml + if [ $EKS -eq 0 ]; then + apply_cluster $test_dir/conf/$cluster-rs0.yml + else + apply_cluster $test_dir/conf/eks-$cluster-rs0.yml + fi desc 'check if all 3 Pods started' wait_for_running $cluster-rs0 3 @@ -121,19 +125,36 @@ main() { wait_backup_agent $cluster-rs2-1 wait_backup_agent $cluster-rs2-2 - backup_name_minio="backup-minio" - run_backup $backup_name_minio 0 + if [ $EKS -eq 0 ]; then + backup_name_minio="backup-minio" + run_backup $backup_name_minio 0 + else + kubectl_bin patch psmdb some-name --type=merge -p '{"spec":{"backup":{"pitr":{"enabled":true}}}}' + kubectl_bin exec some-name-rs0-0 -it -c backup-agent -- pbm status + exit_status=$? + if [ $exit_status -gt 0 ]; then + exit 1 + fi + backup_name_aws="backup-aws-s3" + run_backup $backup_name_aws 0 + fi write_document "-2nd" sleep 2 time_now=$(run_mongos 'new Date().toISOString()' "myApp:myPass@$cluster-mongos.$namespace" "mongodb" "" "--quiet" | grep -E -v 'I NETWORK|W NETWORK|Error saving history file|Percona Server for MongoDB|connecting to:|Unable to reach primary for set|Implicit session:|versions do not match|Error saving history file:' | cut -c1-19 | tr T " ") - check_recovery $backup_name_minio-0 date "$time_now" "-2nd" "$cluster" + if [ $EKS -eq 0 ]; then + check_recovery $backup_name_minio-0 date "$time_now" "-2nd" "$cluster" + run_backup $backup_name_minio 1 + check_recovery $backup_name_minio-1 latest "" "-3rd" "$cluster" + else + check_recovery $backup_name_aws-0 date "$time_now" "-2nd" "$cluster" + run_backup $backup_name_aws 1 + check_recovery $backup_name_aws-1 latest "" "-3rd" "$cluster" - run_backup $backup_name_minio 1 + fi - check_recovery $backup_name_minio-1 latest "" "-3rd" "$cluster" desc 'delete custom RuntimeClass' kubectl_bin delete -f "$conf_dir/container-rc.yaml" From def660f20d52ef542d6c62e68a22be1ce8df6088 Mon Sep 17 00:00:00 2001 From: Viacheslav Sarzhan Date: Tue, 30 Jan 2024 14:59:02 +0200 Subject: [PATCH 2/3] Update e2e-tests/pitr-sharded/run Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- e2e-tests/pitr-sharded/run | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-tests/pitr-sharded/run b/e2e-tests/pitr-sharded/run index 34d9cd5ae5..66f4f5c239 100755 --- a/e2e-tests/pitr-sharded/run +++ b/e2e-tests/pitr-sharded/run @@ -130,7 +130,7 @@ main() { run_backup $backup_name_minio 0 else kubectl_bin patch psmdb some-name --type=merge -p '{"spec":{"backup":{"pitr":{"enabled":true}}}}' - kubectl_bin exec some-name-rs0-0 -it -c backup-agent -- pbm status + kubectl_bin exec some-name-rs0-0 -it -c backup-agent -- pbm status exit_status=$? if [ $exit_status -gt 0 ]; then exit 1 From 29321351b3025a292260ddb71fda192da304d5a7 Mon Sep 17 00:00:00 2001 From: Viacheslav Sarzhan Date: Tue, 30 Jan 2024 14:59:21 +0200 Subject: [PATCH 3/3] Update e2e-tests/pitr-sharded/run Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- e2e-tests/pitr-sharded/run | 1 - 1 file changed, 1 deletion(-) diff --git a/e2e-tests/pitr-sharded/run b/e2e-tests/pitr-sharded/run index 66f4f5c239..5cd0e84920 100755 --- a/e2e-tests/pitr-sharded/run +++ b/e2e-tests/pitr-sharded/run @@ -155,7 +155,6 @@ main() { fi - desc 'delete custom RuntimeClass' kubectl_bin delete -f "$conf_dir/container-rc.yaml" destroy $namespace