Skip to content

Commit dbd7199

Browse files
author
Per Goncalves da Silva
committed
Add RolloutError unit test
Signed-off-by: Per Goncalves da Silva <[email protected]>
1 parent 99def37 commit dbd7199

File tree

1 file changed

+40
-10
lines changed

1 file changed

+40
-10
lines changed

internal/operator-controller/controllers/clusterextensionrevision_controller_test.go

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ package controllers_test
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"testing"
78
"time"
89

910
"github.com/stretchr/testify/require"
1011
corev1 "k8s.io/api/core/v1"
11-
"k8s.io/apimachinery/pkg/api/errors"
12+
apierrors "k8s.io/apimachinery/pkg/api/errors"
1213
"k8s.io/apimachinery/pkg/api/meta"
1314
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1415
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -32,18 +33,19 @@ import (
3233
"github.com/operator-framework/operator-controller/internal/operator-controller/labels"
3334
)
3435

35-
func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *testing.T) {
36+
func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation(t *testing.T) {
3637
const (
3738
clusterExtensionRevisionName = "test-ext-1"
3839
)
3940

4041
testScheme := newScheme(t)
4142

4243
for _, tc := range []struct {
43-
name string
44-
existingObjs func() []client.Object
45-
revisionResult machinery.RevisionResult
46-
validate func(*testing.T, client.Client)
44+
name string
45+
existingObjs func() []client.Object
46+
revisionResult machinery.RevisionResult
47+
revisionReconcileErr error
48+
validate func(*testing.T, client.Client)
4749
}{
4850
{
4951
name: "sets teardown finalizer",
@@ -175,6 +177,30 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *te
175177
require.Equal(t, int64(1), cond.ObservedGeneration)
176178
},
177179
},
180+
{
181+
name: "set Progressing:True:RolloutError when there's an error reconciling the revision",
182+
revisionReconcileErr: errors.New("some error"),
183+
184+
existingObjs: func() []client.Object {
185+
ext := newTestClusterExtension()
186+
rev1 := newTestClusterExtensionRevision(clusterExtensionRevisionName)
187+
require.NoError(t, controllerutil.SetControllerReference(ext, rev1, testScheme))
188+
return []client.Object{ext, rev1}
189+
},
190+
validate: func(t *testing.T, c client.Client) {
191+
rev := &ocv1.ClusterExtensionRevision{}
192+
err := c.Get(t.Context(), client.ObjectKey{
193+
Name: clusterExtensionRevisionName,
194+
}, rev)
195+
require.NoError(t, err)
196+
cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.TypeProgressing)
197+
require.NotNil(t, cond)
198+
require.Equal(t, metav1.ConditionTrue, cond.Status)
199+
require.Equal(t, ocv1.ClusterExtensionRevisionReasonRolloutError, cond.Reason)
200+
require.Equal(t, "some error", cond.Message)
201+
require.Equal(t, int64(1), cond.ObservedGeneration)
202+
},
203+
},
178204
{
179205
name: "set Progressing:True:RollingOut condition while revision is transitioning",
180206
revisionResult: mockRevisionResult{
@@ -317,7 +343,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *te
317343
Client: testClient,
318344
RevisionEngine: &mockRevisionEngine{
319345
reconcile: func(ctx context.Context, rev machinerytypes.Revision, opts ...machinerytypes.RevisionReconcileOption) (machinery.RevisionResult, error) {
320-
return tc.revisionResult, nil
346+
return tc.revisionResult, tc.revisionReconcileErr
321347
},
322348
},
323349
TrackingCache: &mockTrackingCache{},
@@ -327,9 +353,13 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *te
327353
},
328354
})
329355

330-
// reconcile cluster extensionr evision
356+
// reconcile cluster extension revision
331357
require.Equal(t, ctrl.Result{}, result)
332-
require.NoError(t, err)
358+
if tc.revisionReconcileErr == nil {
359+
require.NoError(t, err)
360+
} else {
361+
require.Contains(t, err.Error(), tc.revisionReconcileErr.Error())
362+
}
333363

334364
// validate test case
335365
tc.validate(t, testClient)
@@ -517,7 +547,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_Deletion(t *testing.T) {
517547
Name: clusterExtensionRevisionName,
518548
}, rev)
519549
require.Error(t, err)
520-
require.True(t, errors.IsNotFound(err))
550+
require.True(t, apierrors.IsNotFound(err))
521551
},
522552
},
523553
{

0 commit comments

Comments
 (0)