Skip to content

Commit b34ce77

Browse files
committed
Use PostgresCluster status in deletion tests
The tests were written before the status fields existed. This also reduces the scope of variables used only for failure messages.
1 parent 5aa261a commit b34ce77

File tree

1 file changed

+28
-45
lines changed

1 file changed

+28
-45
lines changed

internal/controller/postgrescluster/delete_test.go

Lines changed: 28 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import (
2828

2929
"go.opentelemetry.io/otel"
3030
"gotest.tools/v3/assert"
31-
appsv1 "k8s.io/api/apps/v1"
3231
corev1 "k8s.io/api/core/v1"
3332
apierrors "k8s.io/apimachinery/pkg/api/errors"
3433
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -201,29 +200,20 @@ func TestReconcilerHandleDelete(t *testing.T) {
201200
"cluster should immediately have a finalizer")
202201

203202
// Continue until instances are healthy.
204-
var instances []appsv1.StatefulSet
205-
var ready int32
206-
assert.NilError(t, wait.Poll(time.Second, Scale(time.Minute), func() (bool, error) {
207-
mustReconcile(t, cluster)
208-
209-
list := appsv1.StatefulSetList{}
210-
selector, err := labels.Parse(strings.Join([]string{
211-
"postgres-operator.crunchydata.com/cluster=" + cluster.Name,
212-
"postgres-operator.crunchydata.com/instance",
213-
}, ","))
214-
assert.NilError(t, err)
215-
assert.NilError(t, cc.List(ctx, &list,
216-
client.InNamespace(cluster.Namespace),
217-
client.MatchingLabelsSelector{Selector: selector}))
218-
219-
instances = list.Items
220-
221-
ready = int32(0)
222-
for i := range instances {
223-
ready += instances[i].Status.ReadyReplicas
224-
}
225-
return ready >= test.waitForRunningInstances, nil
226-
}), "expected %v instances to be ready, got:\n%v", test.waitForRunningInstances, ready)
203+
if ready := int32(0); !assert.Check(t,
204+
wait.Poll(time.Second, Scale(time.Minute), func() (bool, error) {
205+
mustReconcile(t, cluster)
206+
assert.NilError(t, cc.Get(ctx, client.ObjectKeyFromObject(cluster), cluster))
207+
208+
ready = 0
209+
for _, set := range cluster.Status.InstanceSets {
210+
ready += set.ReadyReplicas
211+
}
212+
return ready >= test.waitForRunningInstances, nil
213+
}), "expected %v instances to be ready, got: %v", test.waitForRunningInstances, ready,
214+
) {
215+
t.FailNow()
216+
}
227217

228218
if test.beforeDelete != nil {
229219
test.beforeDelete(t, cluster)
@@ -412,27 +402,20 @@ func TestReconcilerHandleDeleteNamespace(t *testing.T) {
412402
client.Merge.Type(), []byte(`{"metadata":{"finalizers":[]}}`)))))
413403
})
414404

415-
var instances []appsv1.StatefulSet
416-
var ready int32
417-
assert.NilError(t, wait.Poll(time.Second, Scale(time.Minute), func() (bool, error) {
418-
list := appsv1.StatefulSetList{}
419-
selector, err := labels.Parse(strings.Join([]string{
420-
"postgres-operator.crunchydata.com/cluster=" + cluster.Name,
421-
"postgres-operator.crunchydata.com/instance",
422-
}, ","))
423-
assert.NilError(t, err)
424-
assert.NilError(t, cc.List(ctx, &list,
425-
client.InNamespace(cluster.Namespace),
426-
client.MatchingLabelsSelector{Selector: selector}))
427-
428-
instances = list.Items
429-
430-
ready = 0
431-
for i := range instances {
432-
ready += instances[i].Status.ReadyReplicas
433-
}
434-
return ready >= 2, nil
435-
}), "expected 2 instances to be ready, got:\n%v", ready)
405+
// Wait until instances are healthy.
406+
if ready := int32(0); !assert.Check(t,
407+
wait.Poll(time.Second, Scale(time.Minute), func() (bool, error) {
408+
assert.NilError(t, cc.Get(ctx, client.ObjectKeyFromObject(cluster), cluster))
409+
410+
ready = 0
411+
for _, set := range cluster.Status.InstanceSets {
412+
ready += set.ReadyReplicas
413+
}
414+
return ready >= 2, nil
415+
}), "expected 2 instances to be ready, got: %v", ready,
416+
) {
417+
t.FailNow()
418+
}
436419

437420
// Delete the namespace.
438421
assert.NilError(t, cc.Delete(ctx, ns))

0 commit comments

Comments
 (0)