repair the test for rb status controller

Signed-off-by: chaosi-zju <chaosi@zju.edu.cn>
This commit is contained in:
chaosi-zju 2024-08-08 11:10:47 +08:00
parent 37dfa37515
commit 16a4f42862
2 changed files with 31 additions and 16 deletions

View File

@ -34,6 +34,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client/fake" "sigs.k8s.io/controller-runtime/pkg/client/fake"
workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2" workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2"
"github.com/karmada-io/karmada/pkg/resourceinterpreter/default/native"
"github.com/karmada-io/karmada/pkg/util/fedinformer/genericmanager" "github.com/karmada-io/karmada/pkg/util/fedinformer/genericmanager"
"github.com/karmada-io/karmada/pkg/util/gclient" "github.com/karmada-io/karmada/pkg/util/gclient"
) )
@ -98,8 +99,11 @@ func TestCRBStatusController_Reconcile(t *testing.T) {
name: "failed in syncBindingStatus", name: "failed in syncBindingStatus",
binding: &workv1alpha2.ClusterResourceBinding{ binding: &workv1alpha2.ClusterResourceBinding{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "binding", Name: "binding",
Namespace: "default", Namespace: "default",
// finalizers field is required when deletionTimestamp is defined, otherwise will encounter the
// error: `refusing to create obj binding with metadata.deletionTimestamp but no finalizers`.
Finalizers: []string{"test"},
DeletionTimestamp: &preTime, DeletionTimestamp: &preTime,
}, },
Spec: workv1alpha2.ResourceBindingSpec{ Spec: workv1alpha2.ResourceBindingSpec{
@ -119,6 +123,7 @@ func TestCRBStatusController_Reconcile(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
c := generateCRBStatusController() c := generateCRBStatusController()
c.ResourceInterpreter = FakeResourceInterpreter{DefaultInterpreter: native.NewDefaultInterpreter()}
// Prepare req // Prepare req
req := controllerruntime.Request{ req := controllerruntime.Request{
@ -130,9 +135,7 @@ func TestCRBStatusController_Reconcile(t *testing.T) {
// Prepare binding and create it in client // Prepare binding and create it in client
if tt.binding != nil { if tt.binding != nil {
if err := c.Client.Create(context.Background(), tt.binding); err != nil { c.Client = fake.NewClientBuilder().WithScheme(gclient.NewSchema()).WithObjects(tt.binding).WithStatusSubresource(tt.binding).Build()
t.Fatalf("Failed to create binding: %v", err)
}
} }
res, err := c.Reconcile(context.Background(), req) res, err := c.Reconcile(context.Background(), req)
@ -192,6 +195,7 @@ func TestCRBStatusController_syncBindingStatus(t *testing.T) {
c := generateCRBStatusController() c := generateCRBStatusController()
c.DynamicClient = dynamicfake.NewSimpleDynamicClient(scheme.Scheme, c.DynamicClient = dynamicfake.NewSimpleDynamicClient(scheme.Scheme,
&corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: tt.podNameInDynamicClient, Namespace: "default"}}) &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: tt.podNameInDynamicClient, Namespace: "default"}})
c.ResourceInterpreter = FakeResourceInterpreter{DefaultInterpreter: native.NewDefaultInterpreter()}
binding := &workv1alpha2.ClusterResourceBinding{ binding := &workv1alpha2.ClusterResourceBinding{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -204,9 +208,7 @@ func TestCRBStatusController_syncBindingStatus(t *testing.T) {
} }
if tt.resourceExistInClient { if tt.resourceExistInClient {
if err := c.Client.Create(context.Background(), binding); err != nil { c.Client = fake.NewClientBuilder().WithScheme(gclient.NewSchema()).WithObjects(binding).WithStatusSubresource(binding).Build()
t.Fatalf("Failed to create binding: %v", err)
}
} }
err := c.syncBindingStatus(context.Background(), binding) err := c.syncBindingStatus(context.Background(), binding)

View File

@ -34,6 +34,8 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client/fake" "sigs.k8s.io/controller-runtime/pkg/client/fake"
workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2" workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2"
"github.com/karmada-io/karmada/pkg/resourceinterpreter"
"github.com/karmada-io/karmada/pkg/resourceinterpreter/default/native"
"github.com/karmada-io/karmada/pkg/util/fedinformer/genericmanager" "github.com/karmada-io/karmada/pkg/util/fedinformer/genericmanager"
"github.com/karmada-io/karmada/pkg/util/gclient" "github.com/karmada-io/karmada/pkg/util/gclient"
) )
@ -98,8 +100,11 @@ func TestRBStatusController_Reconcile(t *testing.T) {
name: "failed in syncBindingStatus", name: "failed in syncBindingStatus",
binding: &workv1alpha2.ResourceBinding{ binding: &workv1alpha2.ResourceBinding{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "binding", Name: "binding",
Namespace: "default", Namespace: "default",
// finalizers field is required when deletionTimestamp is defined, otherwise will encounter the
// error: `refusing to create obj binding with metadata.deletionTimestamp but no finalizers`.
Finalizers: []string{"test"},
DeletionTimestamp: &preTime, DeletionTimestamp: &preTime,
}, },
Spec: workv1alpha2.ResourceBindingSpec{ Spec: workv1alpha2.ResourceBindingSpec{
@ -119,6 +124,7 @@ func TestRBStatusController_Reconcile(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
c := generateRBStatusController() c := generateRBStatusController()
c.ResourceInterpreter = FakeResourceInterpreter{DefaultInterpreter: native.NewDefaultInterpreter()}
// Prepare req // Prepare req
req := controllerruntime.Request{ req := controllerruntime.Request{
@ -130,9 +136,7 @@ func TestRBStatusController_Reconcile(t *testing.T) {
// Prepare binding and create it in client // Prepare binding and create it in client
if tt.binding != nil { if tt.binding != nil {
if err := c.Client.Create(context.Background(), tt.binding); err != nil { c.Client = fake.NewClientBuilder().WithScheme(gclient.NewSchema()).WithObjects(tt.binding).WithStatusSubresource(tt.binding).Build()
t.Fatalf("Failed to create binding: %v", err)
}
} }
res, err := c.Reconcile(context.Background(), req) res, err := c.Reconcile(context.Background(), req)
@ -192,6 +196,7 @@ func TestRBStatusController_syncBindingStatus(t *testing.T) {
c := generateRBStatusController() c := generateRBStatusController()
c.DynamicClient = dynamicfake.NewSimpleDynamicClient(scheme.Scheme, c.DynamicClient = dynamicfake.NewSimpleDynamicClient(scheme.Scheme,
&corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: tt.podNameInDynamicClient, Namespace: "default"}}) &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Name: tt.podNameInDynamicClient, Namespace: "default"}})
c.ResourceInterpreter = FakeResourceInterpreter{DefaultInterpreter: native.NewDefaultInterpreter()}
binding := &workv1alpha2.ResourceBinding{ binding := &workv1alpha2.ResourceBinding{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@ -204,9 +209,7 @@ func TestRBStatusController_syncBindingStatus(t *testing.T) {
} }
if tt.resourceExistInClient { if tt.resourceExistInClient {
if err := c.Client.Create(context.Background(), binding); err != nil { c.Client = fake.NewClientBuilder().WithScheme(gclient.NewSchema()).WithObjects(binding).WithStatusSubresource(binding).Build()
t.Fatalf("Failed to create binding: %v", err)
}
} }
err := c.syncBindingStatus(context.Background(), binding) err := c.syncBindingStatus(context.Background(), binding)
@ -219,3 +222,13 @@ func TestRBStatusController_syncBindingStatus(t *testing.T) {
}) })
} }
} }
var _ resourceinterpreter.ResourceInterpreter = &FakeResourceInterpreter{}
type FakeResourceInterpreter struct {
*native.DefaultInterpreter
}
func (f FakeResourceInterpreter) Start(_ context.Context) (err error) {
return nil
}