Skip to content

Commit f5a4f3a

Browse files
committed
test: refactoring for unittests
1 parent 1a23f6a commit f5a4f3a

File tree

6 files changed

+677
-781
lines changed

6 files changed

+677
-781
lines changed

controller/lifecycle/api/api.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,10 @@ type Config struct {
3030
}
3131

3232
type ConditionManager interface {
33-
MustToRuntimeObjectConditionsInterface(instance runtimeobject.RuntimeObject, log *logger.Logger) RuntimeObjectConditions
3433
SetInstanceConditionUnknownIfNotSet(conditions *[]metav1.Condition) bool
3534
SetSubroutineConditionToUnknownIfNotSet(conditions *[]metav1.Condition, subroutine subroutine.Subroutine, isFinalize bool, log *logger.Logger) bool
3635
SetSubroutineCondition(conditions *[]metav1.Condition, subroutine subroutine.Subroutine, subroutineResult ctrl.Result, subroutineErr error, isFinalize bool, log *logger.Logger) bool
3736
SetInstanceConditionReady(conditions *[]metav1.Condition, status metav1.ConditionStatus) bool
38-
ToRuntimeObjectConditionsInterface(instance runtimeobject.RuntimeObject, log *logger.Logger) (RuntimeObjectConditions, error)
3937
}
4038

4139
type RuntimeObjectConditions interface {

controller/lifecycle/conditions/conditions.go

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,8 @@ import (
77
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
88
ctrl "sigs.k8s.io/controller-runtime"
99

10-
"github.com/platform-mesh/golang-commons/controller/lifecycle/api"
11-
"github.com/platform-mesh/golang-commons/controller/lifecycle/runtimeobject"
1210
"github.com/platform-mesh/golang-commons/controller/lifecycle/subroutine"
1311
"github.com/platform-mesh/golang-commons/logger"
14-
"github.com/platform-mesh/golang-commons/sentry"
1512
)
1613

1714
const (
@@ -118,22 +115,3 @@ func (c *ConditionManager) SetSubroutineCondition(conditions *[]metav1.Condition
118115
}
119116
return changed
120117
}
121-
122-
func (c *ConditionManager) ToRuntimeObjectConditionsInterface(instance runtimeobject.RuntimeObject, log *logger.Logger) (api.RuntimeObjectConditions, error) {
123-
if obj, ok := instance.(api.RuntimeObjectConditions); ok {
124-
return obj, nil
125-
}
126-
err := fmt.Errorf("ManageConditions is enabled, but instance does not implement RuntimeObjectConditions interface. This is a programming error")
127-
log.Error().Err(err).Msg("instance does not implement RuntimeObjectConditions interface")
128-
sentry.CaptureError(err, nil)
129-
return nil, err
130-
}
131-
132-
func (c *ConditionManager) MustToRuntimeObjectConditionsInterface(instance runtimeobject.RuntimeObject, log *logger.Logger) api.RuntimeObjectConditions {
133-
obj, err := c.ToRuntimeObjectConditionsInterface(instance, log)
134-
if err == nil {
135-
return obj
136-
}
137-
log.Panic().Err(err).Msg("instance does not implement RuntimeObjectConditions interface")
138-
return nil
139-
}

controller/lifecycle/conditions/conditions_test.go

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -240,44 +240,3 @@ func TestSubroutineCondition(t *testing.T) {
240240
assert.Equal(t, metav1.ConditionFalse, condition[0].Status)
241241
})
242242
}
243-
244-
// Dummy types for testing interface conversion
245-
246-
func TestToRuntimeObjectConditionsInterface(t *testing.T) {
247-
log, err := logger.New(logger.DefaultConfig())
248-
require.NoError(t, err)
249-
cm := NewConditionManager()
250-
251-
t.Run("Implements interface", func(t *testing.T) {
252-
obj := pmtesting.DummyRuntimeObjectWithConditions{}
253-
res, err := cm.ToRuntimeObjectConditionsInterface(obj, log)
254-
assert.NoError(t, err)
255-
assert.NotNil(t, res)
256-
})
257-
258-
t.Run("Does not implement interface", func(t *testing.T) {
259-
obj := pmtesting.DummyRuntimeObject{}
260-
res, err := cm.ToRuntimeObjectConditionsInterface(obj, log)
261-
assert.Error(t, err)
262-
assert.Nil(t, res)
263-
})
264-
}
265-
266-
func TestMustToRuntimeObjectConditionsInterface(t *testing.T) {
267-
log, err := logger.New(logger.DefaultConfig())
268-
require.NoError(t, err)
269-
cm := NewConditionManager()
270-
271-
t.Run("Implements interface", func(t *testing.T) {
272-
obj := pmtesting.DummyRuntimeObjectWithConditions{}
273-
res := cm.MustToRuntimeObjectConditionsInterface(obj, log)
274-
assert.NotNil(t, res)
275-
})
276-
277-
t.Run("Does not implement interface panics", func(t *testing.T) {
278-
obj := pmtesting.DummyRuntimeObject{}
279-
assert.Panics(t, func() {
280-
cm.MustToRuntimeObjectConditionsInterface(obj, log)
281-
})
282-
})
283-
}

controller/lifecycle/lifecycle.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ func Reconcile(ctx context.Context, nName types.NamespacedName, instance runtime
7171

7272
var condArr []v1.Condition
7373
if l.ConditionsManager() != nil {
74-
condArr = l.ConditionsManager().MustToRuntimeObjectConditionsInterface(instance, log).GetConditions()
74+
roc := util.MustToInterface[api.RuntimeObjectConditions](instance, log)
75+
condArr = roc.GetConditions()
7576
l.ConditionsManager().SetInstanceConditionUnknownIfNotSet(&condArr)
7677
}
7778

@@ -98,18 +99,18 @@ func Reconcile(ctx context.Context, nName types.NamespacedName, instance runtime
9899

99100
// Set current condArr before reconciling the s
100101
if l.ConditionsManager() != nil {
101-
l.ConditionsManager().MustToRuntimeObjectConditionsInterface(instance, log).SetConditions(condArr)
102+
util.MustToInterface[api.RuntimeObjectConditions](instance, log).SetConditions(condArr)
102103
}
103104
subResult, retry, err := reconcileSubroutine(ctx, instance, s, cl, l, log, generationChanged, sentryTags)
104105
// Update condArr with any changes the s did
105106
if l.ConditionsManager() != nil {
106-
condArr = l.ConditionsManager().MustToRuntimeObjectConditionsInterface(instance, log).GetConditions()
107+
condArr = util.MustToInterface[api.RuntimeObjectConditions](instance, log).GetConditions()
107108
}
108109
if err != nil {
109110
if l.ConditionsManager() != nil {
110111
l.ConditionsManager().SetSubroutineCondition(&condArr, s, result, err, inDeletion, log)
111112
l.ConditionsManager().SetInstanceConditionReady(&condArr, v1.ConditionFalse)
112-
l.ConditionsManager().MustToRuntimeObjectConditionsInterface(instance, log).SetConditions(condArr)
113+
util.MustToInterface[api.RuntimeObjectConditions](instance, log).SetConditions(condArr)
113114
}
114115
if !retry {
115116
MarkResourceAsFinal(instance, log, condArr, v1.ConditionFalse, l)
@@ -144,7 +145,7 @@ func Reconcile(ctx context.Context, nName types.NamespacedName, instance runtime
144145
}
145146

146147
if l.ConditionsManager() != nil {
147-
l.ConditionsManager().MustToRuntimeObjectConditionsInterface(instance, log).SetConditions(condArr)
148+
util.MustToInterface[api.RuntimeObjectConditions](instance, log).SetConditions(condArr)
148149
}
149150

150151
if !l.Config().ReadOnly {
@@ -369,7 +370,8 @@ func ValidateInterfaces(instance runtimeobject.RuntimeObject, log *logger.Logger
369370
}
370371
}
371372
if l.ConditionsManager() != nil {
372-
_, err := l.ConditionsManager().ToRuntimeObjectConditionsInterface(instance, log)
373+
util.ToInterface[api.RuntimeObjectConditions](instance, log)
374+
_, err := util.ToInterface[api.RuntimeObjectConditions](instance, log)
373375
if err != nil {
374376
return err
375377
}

0 commit comments

Comments
 (0)