From 8d67c78e4363a48705095691de1fb9e96fa0f90a Mon Sep 17 00:00:00 2001 From: Felix Kunde Date: Wed, 11 Nov 2020 11:26:01 +0100 Subject: [PATCH] extend test and update log msg --- pkg/cluster/cluster.go | 2 +- pkg/cluster/sync.go | 2 +- pkg/cluster/volumes_test.go | 38 +++++++++++++++++++++++++++++++------ 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index 0602f0a15..7ec7be176 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -672,7 +672,7 @@ func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error { // Volume if oldSpec.Spec.Size != newSpec.Spec.Size { c.logVolumeChanges(oldSpec.Spec.Volume, newSpec.Spec.Volume) - c.logger.Debugf("syncing volumes using %q resize mode", c.OpConfig.StorageResizeMode) + c.logger.Debugf("syncing volumes using %q storage resize mode", c.OpConfig.StorageResizeMode) if c.OpConfig.StorageResizeMode == "pvc" { if err := c.syncVolumeClaims(); err != nil { c.logger.Errorf("could not sync persistent volume claims: %v", err) diff --git a/pkg/cluster/sync.go b/pkg/cluster/sync.go index 1be52e907..61be7919d 100644 --- a/pkg/cluster/sync.go +++ b/pkg/cluster/sync.go @@ -57,7 +57,7 @@ func (c *Cluster) Sync(newSpec *acidv1.Postgresql) error { return err } - c.logger.Debugf("syncing volumes using %q resize mode", c.OpConfig.StorageResizeMode) + c.logger.Debugf("syncing volumes using %q storage resize mode", c.OpConfig.StorageResizeMode) if c.OpConfig.StorageResizeMode == "pvc" { if err = c.syncVolumeClaims(); err != nil { err = fmt.Errorf("could not sync persistent volume claims: %v", err) diff --git a/pkg/cluster/volumes_test.go b/pkg/cluster/volumes_test.go index 139195835..49fbbd228 100644 --- a/pkg/cluster/volumes_test.go +++ b/pkg/cluster/volumes_test.go @@ -8,6 +8,7 @@ import ( v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" "github.com/stretchr/testify/assert" acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1" @@ -32,7 +33,7 @@ func TestResizeVolumeClaim(t *testing.T) { namespace := "default" newVolumeSize := "2Gi" - // new cluster with pvc resize mode and configured labels + // new cluster with pvc storage resize mode and configured labels var cluster = New( Config{ OpConfig: config.Config{ @@ -50,7 +51,7 @@ func TestResizeVolumeClaim(t *testing.T) { filterLabels := cluster.labelsSet(false) // define and create PVCs for 1Gi volumes - parsedStorage, err := resource.ParseQuantity("1Gi") + storage1Gi, err := resource.ParseQuantity("1Gi") assert.NoError(t, err) pvcList := &v1.PersistentVolumeClaimList{ @@ -64,7 +65,7 @@ func TestResizeVolumeClaim(t *testing.T) { Spec: v1.PersistentVolumeClaimSpec{ Resources: v1.ResourceRequirements{ Requests: v1.ResourceList{ - v1.ResourceStorage: parsedStorage, + v1.ResourceStorage: storage1Gi, }, }, }, @@ -78,7 +79,21 @@ func TestResizeVolumeClaim(t *testing.T) { Spec: v1.PersistentVolumeClaimSpec{ Resources: v1.ResourceRequirements{ Requests: v1.ResourceList{ - v1.ResourceStorage: parsedStorage, + v1.ResourceStorage: storage1Gi, + }, + }, + }, + }, + { + ObjectMeta: metav1.ObjectMeta{ + Name: constants.DataVolumeName + "-" + clusterName + "-2-0", + Namespace: namespace, + Labels: labels.Set{}, + }, + Spec: v1.PersistentVolumeClaimSpec{ + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceStorage: storage1Gi, }, }, }, @@ -96,10 +111,12 @@ func TestResizeVolumeClaim(t *testing.T) { pvcs, err := cluster.listPersistentVolumeClaims() assert.NoError(t, err) - if len(pvcs) != len(pvcList.Items) { - t.Errorf("%s: could not find all PVCs, got %v, expected %v", testName, len(pvcs), len(pvcList.Items)) + // check if listPersistentVolumeClaims returns only the PVCs matching the filter + if len(pvcs) != len(pvcList.Items)-1 { + t.Errorf("%s: could not find all PVCs, got %v, expected %v", testName, len(pvcs), len(pvcList.Items)-1) } + // check if PVCs were correctly resized for _, pvc := range pvcs { newStorageSize := quantityToGigabyte(pvc.Spec.Resources.Requests[v1.ResourceStorage]) expectedQuantity, err := resource.ParseQuantity(newVolumeSize) @@ -109,6 +126,15 @@ func TestResizeVolumeClaim(t *testing.T) { t.Errorf("%s: resizing failed, got %v, expected %v", testName, newStorageSize, expectedSize) } } + + // check if other PVC was not resized + pvc2, err := cluster.KubeClient.PersistentVolumeClaims(namespace).Get(context.TODO(), constants.DataVolumeName+"-"+clusterName+"-2-0", metav1.GetOptions{}) + assert.NoError(t, err) + unchangedSize := quantityToGigabyte(pvc2.Spec.Resources.Requests[v1.ResourceStorage]) + expectedSize := quantityToGigabyte(storage1Gi) + if unchangedSize != expectedSize { + t.Errorf("%s: volume size changed, got %v, expected %v", testName, unchangedSize, expectedSize) + } } func TestQuantityToGigabyte(t *testing.T) {